InnoTools Downloader未与Inno 5.5合作

时间:2013-10-17 17:25:30

标签: 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版本一起运行?或者我应该四处寻找另一种解决方案?

EDIT 为了澄清一点,我尝试进入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的子目录中。此文件为6KB,而不是从http://git-scm.com/download/win下载的文件,目前为15,221KB。

ITP_DownloadAfter方法给出了类似的结果。

1 个答案:

答案 0 :(得分:7)

除了用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;