Inno Setup:在安装开始之前下载 setup.bin slice 文件
Inno Setup: Download setup .bin slice files before installation starts
我正在尝试使用 Inno Setup 工具和 Inno Download Plugin 创建可分发的 .exe 文件。生成的文件大小约为 3GB,分为 6 个部分(1 个用于可执行文件,5 个 bin 包含所有文件)。
是否可以将上传的 5 个 bin 保留在某个服务器上,并在安装过程中与剩余的可执行文件一起下载?
我的代码在这里:
procedure InitializeWizard();
var
ResultCode: integer;
TempAddress: String;
FinalSavePath: String;
UserName, UserCompany: String;
begin
idpSetOption('DetailedMode', '1');
idpSetOption('AllowContinue', '1');
idpSetLogin('aaa', 'aaa');
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpDownloadAfter(wpWelcome);
end;
使用 idpDownloadAfter(wpWelcome)
安装程序在接受 运行 可执行文件后立即开始下载,如果 .bin
文件已经存在。如果没有,安装程序会一直要求 .bin
存在。
Inno Setup 6.1 内置了文件下载支持,不需要任何支持文件。所以下面的解决方案现在已经过时了。参见 Inno Setup: Install file from Internet。
Inno 下载插件使用 idp.dll
,它本身存储在 mysetup-*.bin
文件中。这就是为什么系统会提示您输入 .bin
文件,甚至在任何事情开始之前。您需要 idp.dll
才能开始下载。
通过一些黑客攻击,您可以将 idp.dll
存储在 [Code]
中,因此直接存储在 mysetup.exe
.
中
参见 。
您需要修改 idp.iss
如下:
- 删除
[Files]
部分及其对 idp.dll
的引用。
- 在所有
external
个函数声明中:
将 @files:idp.dll cdecl
更改为 @{tmp}\idp.dll cdecl delayload
.
到您的 .iss
脚本的前面,从 复制长代码块。
现在您可以:
procedure InitializeWizard();
begin
SaveBinaryStringToFile(
ExpandConstant('{tmp}\idp.dll'), {#FileToBinaryString("unicode\idp.dll")});
idpAddFile(
'https://www.example.com/mysetup-1.bin', ExpandConstant('{src}\mysetup-1.bin'));
idpDownloadAfter( {whatever} );
end;
确保在调用 FileToBinaryString
.
时将 idp.dll
的路径更新到开发机器上的正确位置
代码用于 (Inno Setup 6 的唯一版本)。
我正在尝试使用 Inno Setup 工具和 Inno Download Plugin 创建可分发的 .exe 文件。生成的文件大小约为 3GB,分为 6 个部分(1 个用于可执行文件,5 个 bin 包含所有文件)。
是否可以将上传的 5 个 bin 保留在某个服务器上,并在安装过程中与剩余的可执行文件一起下载?
我的代码在这里:
procedure InitializeWizard();
var
ResultCode: integer;
TempAddress: String;
FinalSavePath: String;
UserName, UserCompany: String;
begin
idpSetOption('DetailedMode', '1');
idpSetOption('AllowContinue', '1');
idpSetLogin('aaa', 'aaa');
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpAddFile('https://...', target_path);
idpDownloadAfter(wpWelcome);
end;
使用 idpDownloadAfter(wpWelcome)
安装程序在接受 运行 可执行文件后立即开始下载,如果 .bin
文件已经存在。如果没有,安装程序会一直要求 .bin
存在。
Inno Setup 6.1 内置了文件下载支持,不需要任何支持文件。所以下面的解决方案现在已经过时了。参见 Inno Setup: Install file from Internet。
Inno 下载插件使用 idp.dll
,它本身存储在 mysetup-*.bin
文件中。这就是为什么系统会提示您输入 .bin
文件,甚至在任何事情开始之前。您需要 idp.dll
才能开始下载。
通过一些黑客攻击,您可以将 idp.dll
存储在 [Code]
中,因此直接存储在 mysetup.exe
.
中
参见
您需要修改 idp.iss
如下:
- 删除
[Files]
部分及其对idp.dll
的引用。 - 在所有
external
个函数声明中:
将@files:idp.dll cdecl
更改为@{tmp}\idp.dll cdecl delayload
.
到您的 .iss
脚本的前面,从
现在您可以:
procedure InitializeWizard();
begin
SaveBinaryStringToFile(
ExpandConstant('{tmp}\idp.dll'), {#FileToBinaryString("unicode\idp.dll")});
idpAddFile(
'https://www.example.com/mysetup-1.bin', ExpandConstant('{src}\mysetup-1.bin'));
idpDownloadAfter( {whatever} );
end;
确保在调用 FileToBinaryString
.
idp.dll
的路径更新到开发机器上的正确位置
代码用于