我正在尝试使用Inno设置工具和Inno下载插件创建可分发的.exe文件。生成的文件大小约为3GB,分为6部分(可执行文件1个,包含所有文件的5个文件箱)。
是否可以将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
。
答案 0 :(得分:1)
Inno Download Plugin使用idp.dll
,它本身存储在mysetup-*.bin
文件中。这就是为什么甚至在开始之前都会提示您输入.bin
文件的原因。您需要idp.dll
才能开始下载。
通过一些黑客攻击,您可以将idp.dll
存储在[Code]
中,因此可以直接存储在mysetup.exe
中。
参见Inno Setup: Reading a file from installer during uninstallation。
您将需要如下修改idp.iss
:
[Files]
删除idp.dll
部分。external
函数声明中:@files:idp.dll cdecl
更改为@{tmp}\idp.dll cdecl delayload
。在.iss
脚本的最前面,从my answer to the previously mentioned question复制长代码块。
现在您可以这样做:
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;
请确保在调用idp.dll
时将FileToBinaryString
的路径更新为开发计算机上的正确位置。