根据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/

    10-13 09:39