Inno setup 根据Inno下载插件选择的任务下载?

Inno setup 根据Inno下载插件选择的任务下载?,inno-setup,pascalscript,inno-download-plugin,Inno Setup,Pascalscript,Inno Download Plugin,为了实现我的目标,我遇到了一些问题,我将分别讨论每个问题。它涉及一个帮助文档设置文件,我以前问过这个文件。但是现在我在使用IDP,我需要改变我的逻辑,把它弄错了 首先,我的任务是: Name: "downloadhelp"; Description: "{cm:DownloadHelpTask}"; \ GroupDescription: "{cm:DownloadHelpGroup}"; Flags: unchecked 然

为了实现我的目标,我遇到了一些问题,我将分别讨论每个问题。它涉及一个帮助文档设置文件,我以前问过这个文件。但是现在我在使用IDP,我需要改变我的逻辑,把它弄错了

首先,我的任务是:

Name: "downloadhelp"; Description: "{cm:DownloadHelpTask}"; \
    GroupDescription: "{cm:DownloadHelpGroup}"; Flags: unchecked
然后我补充说:

过程CurPageChanged(CurPageID:Integer);
开始
如果CurPageID=wpReady,则
开始
如果选择了(WizardIsTaskSelected('downloadhelp'),则
AddFileForDownload('{HelpDocSetupURL}',ExpandConstant('{tmp}\HelpDocSetup.exe');
结束;
WizardForm.CancelButton.Top:=WizardForm.NextButton.Top;
结束;
这在
[Run]
部分:

Filename: "{app}\HelpDocSetup.exe"; \
    Parameters: "/SP- /VERYSILENT /InstallPath=""{app}"""; \
    WorkingDir: "{app}"; \
    Flags: waituntilterminated runhidden; \
    Description: "{cm:InstallingHelpDescription}"; \
    StatusMsg: "{cm:InstallingHelpStatusMessage}"; \
    Tasks: downloadhelp
但当我在我的“准备就绪”页面上时,文件并没有列出供下载

什么时候可以根据所选任务添加要下载的文件

我现在意识到,
wpredy
意味着我们已经填写了备忘录内容。以前我用过这句话:

;Source: "{tmp}\HelpDocSetup.exe"; \
;    DestDir: "{app}"; \
;    Flags: external deleteafterinstall; \
;    Tasks: downloadhelp; \
;    Check: DwinsHs_Check( ExpandConstant('{tmp}\HelpDocSetup.exe'), '{#HelpDocSetupURL}', \
;            'My_Setup', 'Get', {#HelpDocSetupFileSize}, 0 )
任务已正确列出:

但是如果选择了任务,我需要添加它。 现在已经过时了。我该怎么办

我看到了这一点,但它与组件有关,而与任务无关

第二个答案听起来是可行的解决方案

根据我添加的链接答案:

函数NextButtonClick(CurPageID:integer):布尔;
开始
结果:=真;
如果(CurPageID=wpSelectTasks),则
开始
如果选择了Wizardistask(“下载帮助”),则
AddFileForDownload('{HelpDocSetupURL}',ExpandConstant('{tmp}\HelpDocSetup.exe');
结束;
结束;
但这是有缺陷的。如果用户使用next/back,它会多次将文件添加到要下载的文件列表中,而我的备忘就绪页面会列出所有文件


我试着把它改成使用组件和上面列出的“下载帮助”。然后我就可以在
InitializeWizard
中简单地使用
idpAddFileComp
,但最后我遇到了前一个问题,即列出需要下载的文件。

我不知道这是否是最好的方法,但至少它是有效的

第一步 我添加了一个新的
[Components]
部分,如下所示:

[Components]
Name: downloadhelpcomponent; Description: "{cm:DownloadHelpTask}"
步骤2 我注释掉了前面的
[Tasks]
条目:

[Tasks]
;Name: "downloadhelp"; Description: "{cm:DownloadHelpTask}"; GroupDescription: "{cm:DownloadHelpGroup}"; Flags: unchecked
Filename: "{tmp}\HelpDocSetup.exe"; \
    Parameters: "/SP- /VERYSILENT /InstallPath=""{app}"""; \
    WorkingDir: "{app}"; \
    Flags: waituntilterminated runhidden; \
    Description: "{cm:InstallingHelpDescription}"; \
    StatusMsg: "{cm:InstallingHelpStatusMessage}"; \
    Components: downloadhelpcomponent
步骤3 我将以下内容添加到
initializeWizard

procedure InitializeWizard();
开始
idpAddFileSizeComp({HelpDocSetupURL})、ExpandConstant({tmp}\HelpDocSetup.exe')、{HelpDocSetupFileSize}、'downloadhelpcomponent');
idpDownloadAfter(wpReady);
{使下载向导页面可调整大小}
IDPForm.TotalProgressBar.Anchors:=[akLeft、akTop、akRight];
IDPForm.FileProgressBar.Anchors:=[akLeft、akTop、akRight];
IDPForm.TotalDownloaded.Anchors:=[akTop,akRight];
IDPForm.FileDownloaded.Anchors:=[akTop,akRight];
IDPForm.DetailsButton.archors:=[akTop,akRight];
结束;
运行此安装程序时,页面如下所示:

[Components]
Name: downloadhelpcomponent; Description: "{cm:DownloadHelpTask}"

这里的主要问题是,它已经决定这个组件是56MB,这是错误的!这个文件实际上是7.28MB。虽然我认为56MB就是整个设置。此外,各种“类型”也没有真正的意义,但如果我删除它们,我将丢失复选框选项

步骤4 我调整了
updateradymeno
输出,如下所示:

[Components]
Name: downloadhelpcomponent; Description: "{cm:DownloadHelpTask}"
函数UpdateReadyMemo(空格、,
新线,,
MemoUserInfoInfo,
备忘录信息,
备忘录类型信息,
备忘录组件信息,
集团信息备忘录,
MemoTasksInfo:String):字符串;
开始
结果:='';
如果是MemoUserInfoInfo“”,则
结果:=结果+备忘录用户信息+换行符+换行符;
如果为“”则
结果:=Result+MemoDirInfo+NewLine+NewLine;
如果Memo组件信息为“”,则
结果:=结果+备忘录组件信息+换行符+换行符;
如果是“组信息”,则
结果:=结果+备注组信息+换行符+换行符;
如果(MemoTasksInfo“”),则
结果:=Result+MemoTasksInfo+NewLine+NewLine;
{如果是新安装,仅显示自动备份设置信息}
如果(不是升级)那么
结果:=结果+自动打包\u备忘信息(空格、换行符);
如果((FilesToDownload“”)或WizardIsComponentSelected('downloadhelpcomponent')),则
开始
结果:=Result+ExpandConstant({cm:readymmo_Download}')+换行符;
如果(FilesToDownload“”),则
结果:=结果+文件下载;
如果(IsComponentSelected('downloadhelpcomponent')),则
结果:=Result+Space+'HelpDocSetup.exe'+换行符;
结束;
结束;
因此,如果选择该组件,我的就绪页面如下所示:

[Components]
Name: downloadhelpcomponent; Description: "{cm:DownloadHelpTask}"

步骤5 最后,我调整了
[Run]
条目:

[Tasks]
;Name: "downloadhelp"; Description: "{cm:DownloadHelpTask}"; GroupDescription: "{cm:DownloadHelpGroup}"; Flags: unchecked
Filename: "{tmp}\HelpDocSetup.exe"; \
    Parameters: "/SP- /VERYSILENT /InstallPath=""{app}"""; \
    WorkingDir: "{app}"; \
    Flags: waituntilterminated runhidden; \
    Description: "{cm:InstallingHelpDescription}"; \
    StatusMsg: "{cm:InstallingHelpStatusMessage}"; \
    Components: downloadhelpcomponent

这种方法(记录在IDP帮助文件中)似乎是最好的方法。

使用IDP没有真正优雅的方法来解决这个问题

一种方法是在
BackButtonClick(wpredy)
中调用
idpClearFiles

要使其正常工作,您当然需要在
NextButtonClick(wpSelectTasks)
中添加所有文件,即使是无条件添加的文件。

我最终按照您的方式完成了操作(并记住将
文件重置为下载
变量。看起来没问题。