我正在使用Inno Setup来分发我的应用程序.是否可以在Inno Script中查看特定条件,并根据需要从Internet下载并安装一些文件.
根据SO上几篇文章的推荐,我一直在与InnoTools Downloader合作,尝试在Inno设置的安装脚本中为我们的应用程序安装第三方依赖项.
不幸的是,InnoTools Downloader在几年内还没有更新,并且开始看起来与目前的Inno Tools设置(目前我机器上的5.5.2(u))不兼容.ITD中的PChar参数已被PAnsiChar参数取代,当我尝试运行各种ITD_xxx程序时,它会给我不同程度的失败:
ITD_DownloadFiles 给出类型不匹配错误,无法在Inno Setup中编译ITD_DownloadFile 编译,但显示的文件长度为6KB且不可运行.有没有人让ITP与更新的Inno(5.3.0之后)unicode版本一起运行?或者我应该四处寻找另一种解决方案?
编辑只是为了澄清一点,我尝试进入it_download.iss文件并用PAnsiChar替换所有PChar实例.当我第一次尝试将ITD与我的设置脚本集成时,这让我超越了编译错误.
以下是Inno脚本的示例部分:
[Code]
procedure InitializeWizard();
begin
ITD_Init; // initialize the InnoTools Downloader
// install 3rd party tool (ex. Git) from the internet.
if ITD_DownloadFile('http://git-scm.com/download/win',expandconstant('{tmp}\GitInstaller.exe'))=ITDERR_SUCCESS then begin
MsgBox(expandconstant('{tmp}\GitInstaller.exe'), mbInformation, MB_OK);
Exec(ExpandConstant('{tmp}\GitInstaller.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, tmpResult);
end
end;
Run Code Online (Sandbox Code Playgroud)
当它运行时,它将弹出一个对话框,说明它"下载"并存储文件的位置 - 在我的机器上它位于c:\ Users \\ AppData\Local\Temp的子目录中.此文件为6KB,而不是从http://git-scm.com/download/win下载的文件,目前为15,221KB.
该ITP_DownloadAfter方法给出了类似的结果.