Installation 仅当用户选择下载时,才使用Inno安装程序下载文件

Installation 仅当用户选择下载时,才使用Inno安装程序下载文件,installation,inno-setup,pascalscript,inno-download-plugin,inno-tools-downloader,Installation,Inno Setup,Pascalscript,Inno Download Plugin,Inno Tools Downloader,问题:我想知道如何编写脚本下载第二个文件,这是一个zip文件,但最初在两个zip文件之间进行选择;下载、解压缩并删除压缩文件。zip文件的名称各不相同,但内容的名称与zip不同(名称相同);不需要重命名。这个问题有点像 相关文件通过SourceForge网站下载。这些文件拟用于的程序(克隆)未在SF中列出或已更改用途 在修复了PCharbug之后:我现在可以从2011年开始重新使用这个Inno安装脚本,但我想稍微扩展一下它,但很难做到 #包括ReadReg(HKEY_本地_机器、'Softwar

问题:我想知道如何编写脚本下载第二个文件,这是一个zip文件,但最初在两个zip文件之间进行选择;下载、解压缩并删除压缩文件。zip文件的名称各不相同,但内容的名称与zip不同(名称相同);不需要重命名。这个问题有点像

相关文件通过SourceForge网站下载。这些文件拟用于的程序(克隆)未在SF中列出或已更改用途

在修复了
PChar
bug之后:我现在可以从2011年开始重新使用这个Inno安装脚本,但我想稍微扩展一下它,但很难做到

#包括ReadReg(HKEY_本地_机器、'Software\Sherlock Software\InnoTools\Downloader'、'ScriptPath'、'';
[守则]
过程初始化Wizard();
开始
itd_init;
{设置下载源..}
itd_addfile('http://www.example.com/Textfile.txt,ExpandConstant({tmp}\Textfile.txt');
itd_设置选项('UI_AllowContinue','1');
itd_设置选项('UI_DetailedMode','1');
{显示“准备安装”屏幕后开始下载}
itd_下载后(wpReady);
结束;
过程CurStepChanged(CurStep:TSetupStep);
开始
如果CurStep=ssInstall,则{让我们安装下载的文件}
开始
FileCopy(ExpandConstant({tmp}\Textfile.txt')、ExpandConstant({userappdata}\program_name\Textfile.txt')、false);
结束;
结束;

基于答案的工作代码:

#pragma include uuu include uuu++“+”c:\lib\InnoDownloadPlugin”
[设置]
...
CreateUninstallRegKey=否
#包括
...
[类型]
姓名:全名;说明:“完全安装”
名称:紧凑型;说明:“紧凑型安装”
名称:海关;说明:“自定义安装”;旗帜:iscustom
[组成部分]
名称:abc;说明:“C文件”;类型:全紧凑型定制;旗帜:固定
姓名:hlnj;说明:“HL(推荐)”;类型:海关;旗帜:独家
姓名:hnj;说明:“高频”;类型:海关;旗帜:独家
[档案]
资料来源:“{tmp}\text.net”;DestDir:“{userappdata}\ccc”;旗帜:外部;组成部分:abc
资料来源:“{tmp}\HLNJ.zip”;DestDir:“{userappdata}\ccc”;旗帜:外部;组件:hlnj
资料来源:“{tmp}\HNJ.zip”;DestDir:“{userappdata}\ccc”;旗帜:外部;组成部分:hnj
[守则]
程序初始化;
开始
idpAddFileComp('http://www.example.com/text.net,ExpandConstant({tmp}\text.net'),'abc');
idpAddFileComp('http://www.example.com/SecurityUpdates/HLNJ.zip,ExpandConstant({tmp}\HLNJ.zip'),'HLNJ');
idpAddFileComp('http://www.example.com/SecurityUpdates/HNJ.zip,ExpandConstant({tmp}\HNJ.zip'),'HNJ');
idpDownloadAfter(wpReady);
结束;
过程CurStepChanged(CurStep:TSetupStep);
开始
如果CurStep=ssPostInstall,则
开始
FileCopy(ExpandConstant({tmp}\text.net')、ExpandConstant({userappdata}\ccc\text.net')、false);
FileCopy(ExpandConstant({tmp}\HLNJ.zip')、ExpandConstant({userappdata}\ccc\HLNJ.txt')、false);
FileCopy(ExpandConstant({tmp}\HNJ.zip')、ExpandConstant({userappdata}\ccc\HNJ.txt')、false);
结束;
结束;
在发布了我的答案后,我注意到,尽管您标记了问题,但实际上您正在使用InnoTools Downloader。不要–

另外请注意,Inno Setup 6.1内置了下载支持。使用该API,解决方案将更简单,但与IDP下面所示的不同。看


在Inno下载插件安装的
examples
文件夹中,有
components1.iss
components2.iss
示例

第一个演示如何使用
idpAddFileComp
在选择组件时有条件地下载文件

我正在发布一个完整的示例:

; Uncomment one of following lines, if you haven't checked "Add IDP include path to ISPPBuiltins.iss" option during IDP installation:
;#pragma include __INCLUDE__ + ";" + ReadReg(HKLM, "Software\Mitrich Software\Inno Download Plugin", "InstallDir")
;#pragma include __INCLUDE__ + ";" + "c:\lib\InnoDownloadPlugin"

[Setup]
AppName          = My Program
AppVersion       = 1.0
DefaultDirName   = {pf}\My Program
DefaultGroupName = My Program
OutputDir        = userdocs:Inno Setup Examples Output

#include <idp.iss>

[Types]
Name: full;    Description: "Full installation"
Name: compact; Description: "Compact installation"
Name: custom;  Description: "Custom installation"; Flags: iscustom

[Components]
Name: app;  Description: "My Program";  Types: full compact custom; Flags: fixed
Name: help; Description: "Help files";  Types: full
Name: src;  Description: "Source code"; Types: full

[Files]
Source: "{tmp}\app.exe";  DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: app
Source: "{tmp}\help.chm"; DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: help
Source: "{tmp}\src.zip";  DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: src

[Icons]
Name: "{group}\My Program"; Filename: "app.exe";  Components: app
Name: "{group}\Help file";  Filename: "help.chm"; Components: help
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"

警告:传递给
idpAddFileComp
的组件名称必须是小写的(实际的组件名称可以使用大写)。

具有新的
下载临时文件
支持功能,可以在不使用第三方工具的情况下下载文件:

  • 支持HTTPS(但不支持过期或自签名证书)和HTTP
  • 将自动执行重定向,并自动使用代理设置
  • 与现有的第三方工具不同,可从服务中安全使用
  • 支持下载文件的SHA-256哈希检查
  • 支持基本身份验证
我添加了这个答案,因为即使是在接受的答案中提到的IDP插件上一次更新是在2016年,现在对我来说也不起作用,我必须更改为Inno Setup 6.1.2提供的新功能