6

根据这里关于 SO 的几篇文章的推荐,我一直在使用 InnoTools 下载器尝试在 Inno 设置中的安装脚本期间为我们的应用程序安装第 3 方依赖项。

不幸的是,InnoTools 下载器几年来没有更新,并且开始看起来与当前的 Inno Tools 设置(目前我的机器上的 5.5.2 (u))不兼容。ITD 中的 PChar 参数已被 PAnsiChar 参数替换,当我尝试运行各种 ITD_xxx 程序时,它给了我不同程度的失败:

  • ITD_DownloadFiles给出类型不匹配错误并且不会在 Inno Setup 中编译
  • ITD_DownloadFile编译,但显示的文件长度为 6KB 且不可运行。

有没有人让 ITP 使用更新的 Inno (post-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;

当它运行时,它会弹出一个对话框,说明它“下载”并存储文件的位置——在我的机器上,它位于 c:\Users\\AppData\Local\Temp 的子目录中。此文件为 6KB,而从http://git-scm.com/download/win下载的文件目前为 15,221KB。

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

4

1 回答 1

9

除了用你替换所有出现的类型之外,你需要用PChar文件PAnsiChar中的所有出现的类型替换。下一个问题是您要获取的 URL。文件的大小与预期不同,因为您下载的是 HTML 文档,而不是该站点重定向的二进制文件。因此,如果您的 ITD 已准备好使用 Unicode,请将脚本中的 URL 更改为. 请注意,我没有使用 HTTPS,因为 ITD 目前不支持 SSL。代码证明可能如下所示:stringAnsiStringit_download.issdirect binary URL

[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;
于 2013-10-17T20:03:30.713 回答