Lazarus порадовал...Проект-Параметры проекта-Ресурсы.....добавить
а в коде...
procedure extract_();
var
S: TResourceStream;
F: TFileStream;
begin //распаковка архиватора если его нет
if not FileExists(base_dir+'7z.exe') then
begin
S := TResourceStream.Create(HInstance, '7Z', RT_RCDATA);
try // create a file mydata.dat in the application directory
F := TFileStream.Create(ExtractFilePath(ParamStr(0)) + '7z.exe', fmCreate);
try
F.CopyFrom(S, S.Size); // copy data from the resource stream to file stream
finally
F.Free; // destroy the file stream
end;
finally
S.Free; // destroy the resource stream
end;end;end;
====
В C# стандартным способом является использование утилиты от microsoft ILMerge.
НО она не всегда срабатывает (не соотв.типы данных разл.платформ)
Delphi, без редактора ресурсов, очень старый велосипед:
Пишем в блокноте RC-файл, куда прописываем все нужные нам программы, например:
ARJ EXEFILE C:\ARHIVERS\ARJ.EXE
2. Компилируем его в ресурс при помощи Brcc32.exe. Получаем RES- файл.
3. Далее в тексте нашей программы:
implementation
{$R *.DFM}
{$R test.res} //Это наш RES-файл
// Процедура для извлечения ресурса в указанный файл
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// Записывает в текущую папку arj.exe
ExtractRes('EXEFILE', 'ARJ', 'ARJ.EXE');
end;
а в коде...
procedure extract_();
var
S: TResourceStream;
F: TFileStream;
begin //распаковка архиватора если его нет
if not FileExists(base_dir+'7z.exe') then
begin
S := TResourceStream.Create(HInstance, '7Z', RT_RCDATA);
try // create a file mydata.dat in the application directory
F := TFileStream.Create(ExtractFilePath(ParamStr(0)) + '7z.exe', fmCreate);
try
F.CopyFrom(S, S.Size); // copy data from the resource stream to file stream
finally
F.Free; // destroy the file stream
end;
finally
S.Free; // destroy the resource stream
end;end;end;
====
В C# стандартным способом является использование утилиты от microsoft ILMerge.
НО она не всегда срабатывает (не соотв.типы данных разл.платформ)
Delphi, без редактора ресурсов, очень старый велосипед:
Пишем в блокноте RC-файл, куда прописываем все нужные нам программы, например:
ARJ EXEFILE C:\ARHIVERS\ARJ.EXE
2. Компилируем его в ресурс при помощи Brcc32.exe. Получаем RES- файл.
3. Далее в тексте нашей программы:
implementation
{$R *.DFM}
{$R test.res} //Это наш RES-файл
// Процедура для извлечения ресурса в указанный файл
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// Записывает в текущую папку arj.exe
ExtractRes('EXEFILE', 'ARJ', 'ARJ.EXE');
end;
Комментариев нет:
Отправить комментарий