【发布时间】:2013-10-17 17:25:29
【问题描述】:
根据这里关于 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(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 方法给出了类似的结果。
【问题讨论】:
-
“当我尝试运行”而不向我们展示你在做什么是没有帮助的,没有特定的错误消息和行也没有“给出类型不匹配错误并且不会编译”那是产生错误。 Delphi 2009 之前的
PChar相当于 D2009 和更高版本的PAnsiChar,但如果没有具体说明您遇到的问题,就很难推荐解决方案。 -
除了将
PChar替换为PAnsiChar,您必须将string替换为AnsiString。 -
@KenWhite - 谢谢 - 我刚刚添加了一个 [code] 部分来描述我到目前为止所做的尝试。
-
@TLama - 谢谢。我在 it_download.iss 文件中完成了 PChar->PAnsiChar 替换;我只是用 AnsiStrings 替换了字符串。看起来没有任何帮助。 :-( 我发现了另一个 Inno 插件,如果我无法运行它,我可能会考虑作为替代插件(这里:mitrich.net23.net/?/inno-download-plugin.html)。
-
它对我有用。我刚刚将
PChar替换为PAnsiChar,将string替换为AnsiString,并尝试了您发布的代码。现在的问题是您下载的是网站而不是 GIT 安装程序二进制文件。检查下载文件的内容。这是一个 HTML 文档。
标签: inno-setup inno-tools-downloader