Inno setup 根据Inno下载插件选择的任务下载?
为了实现我的目标,我遇到了一些问题,我将分别讨论每个问题。它涉及一个帮助文档设置文件,我以前问过这个文件。但是现在我在使用IDP,我需要改变我的逻辑,把它弄错了 首先,我的任务是: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 然
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)
中添加所有文件,即使是无条件添加的文件。我最终按照您的方式完成了操作(并记住将文件重置为下载
变量。看起来没问题。