// вы читаете...

Новости

Заметки о installer. Часть 1



AssignFile(f2,Edit3.Text);
Reset(f,1);
Rewrite(f2,1);
while not eof(f) do begin
blockread(f,buf,sizeof(buf),done);
blockwrite(f2,buf,done);
end;
CloseFile(f);

AssignFile(f,Edit1.Text);
Reset(f,1);
done:=FileSize(f);
blockwrite(f2,done,4);
while not eof(f) do begin
blockread(f,buf,sizeof(buf),done);
blockwrite(f2,buf,done);
end;
CloseFile(f);

AssignFile(f,Edit2.Text);
Reset(f,1);
done:=FileSize(f);
blockwrite(f2,done,4);
while not eof(f) do begin
blockread(f,buf,sizeof(buf),done);
blockwrite(f2,buf,done);
end;
CloseFile(f);
end;

Тут всё совсем просто :). Для начала проверяем все ли необходимые для упаковки файлы
присутствуют. Далее создаем файл указанный в Edit3.Text и записываем в него распаковщик,
размер первого файла, файл, размер второго и второй соответственно (какой-то бутерброд
получается :)). Вот и всё! В результате получается .exe который может достать из себя эти
2 файла. Но сейчас это работать не будет, так как нет Unpacker.exe. Его мы напишем в
следующий раз. Хотя для любопытных я приведу листинг альфа версии Unpacker’а:

program Unpacker;

uses
classes;

const c=117248;

var mem:tmemorystream;
i:integer;
done:integer=0;
done1:integer;
f:file;
buf:array[1..2048] of byte;
begin
mem:=tmemorystream.Create;
mem.LoadFromFile(paramstr(0));
mem.Seek(c,soFromBeginning);
mem.ReadBuffer(i,$4);
assignfile(f,’temp1′);
rewrite(f,1);
while i>=done+2048 do begin
done1:=mem.Read(buf,sizeof(buf));
blockwrite(f,buf,done1);
done:=done+done1;
end;
if i>done then begin
done1:=mem.Read(buf,i-done);
blockwrite(f,buf,done1);
end;
closefile(f);

done:=0;
mem.ReadBuffer(i,4);
assignfile(f,’temp2′);
rewrite(f,1);
while i>done+2048 do begin
done1:=mem.Read(buf,sizeof(buf));
blockwrite(f,buf,done1);
done:=done+done1;
end;
if i>done then begin
done1:=mem.Read(buf,i-done);
blockwrite(f,buf,done1);
end;
closefile(f);

mem.Free;
end.

Страницы: 1 2 3

Обсуждене

Отзывов нет на «Заметки о installer. Часть 1»

Ваш отзыв

Рубрики