根据SO上的几篇文章的建议,我一直在与InnoTools Downloader一起尝试在Inno安装程序的Install脚本期间为我们的应用程序安装第三方依赖。
不幸的是,InnoTools Downloader几年未进行更新,并且开始看起来与当前的Inno Tools设置(当前在我的计算机上为5.5.2(u))不兼容。 ITD中的PChar参数已由PAnsiChar参数代替,当我尝试运行各种ITD_xxx过程时,它给了我不同程度的失败:
ITD_DownloadFiles
给出类型不匹配错误,并且不会在Inno Setup中编译ITD_DownloadFile
可以编译,但是显示的文件长度为6KB,无法运行。 有没有人让ITP与更新的Inno(5.3.3版之后)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;
运行此命令时,它将弹出一个对话框,指出其“下载”并存储文件的位置-在我的计算机上,该文件位于c:\Users\\AppData\Local\Temp的子目录中。与从http://git-scm.com/download/win下载的文件(当前为15,221KB)相比,该文件为6KB。
ITP_DownloadAfter
方法给出了类似的结果。 最佳答案
除了用PChar
替换所有PAnsiChar
类型的出现外,您还需要用string
文件中的AnsiString
替换所有it_download.iss
类型的出现。下一个问题是您要获取的URL。文件的大小与预期的有所不同,因为您正在下载HTML文档而不是该站点重定向到的二进制文件。因此,如果您已准备好使用Unicode的ITD,请将脚本中的URL更改为 direct binary URL
。请注意,我没有使用HTTPS,因为ITD当前不支持SSL。代码证明可能看起来像这样:
[Code]
const
GitSetupURL = 'http://msysgit.googlecode.com/files/Git-1.8.4-preview20130916.exe';
procedure InitializeWizard;
var
Name: string;
Size: Integer;
begin
Name := ExpandConstant('{tmp}\GitInstaller.exe');
ITD_Init;
if ITD_DownloadFile(GitSetupURL, Name) = ITDERR_SUCCESS then
begin
if FileSize(Name, Size) then
MsgBox(Name + #13#10 + 'Size: ' + IntToStr(Size) + ' B',
mbInformation, MB_OK)
else
MsgBox('FileSize function failed!', mbError, MB_OK);
end;
end;
关于inno-setup - InnoTools Downloader无法与Inno 5.5一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19433323/