eb1*_*eb1 6 inno-setup inno-tools-downloader
根据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
方法给出了类似的结果.
除了更换所有PChar
类型的事件与PAnsiChar
您将需要更换的所有出现string
同类型AnsiString
中it_download.iss
的文件.下一个问题是您尝试获取的URL.文件大小与预期不同,因为您正在下载HTML文档而不是该站点重定向的二进制文件.因此,如果您已为ITD准备好Unicode,请将脚本中的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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1937 次 |
最近记录: |