这段代码实际上是下载了我的文件,所选组件是否是" test"或不。我想要下载这两个文件,如果你选择一个组件,可以这样做吗? 我使用Inno Inno Setup 5 +工具下载器
[Components]
Name: Dictionaries; Description: "test"; Types: Full; ExtraDiskSpaceRequired: 50;
[Languages]
Name: english; MessagesFile: compiler:Default.isl
#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath','');
[Code]
procedure InitializeWizard();
begin
itd_init;
itd_addfile('http://www.sherlocksoftware.org/petz/files/dogz5.zip',expandconstant('{tmp}\dogz5.zip'));
itd_addfile('http://www.sherlocksoftware.org/petz/files/petz4.zip',expandconstant('{tmp}\petz4.zip'));
itd_downloadafter(wpReady);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
filecopy(expandconstant('{tmp}\dogz5.zip'),expandconstant('{app}\dogz5.zip'),false);
filecopy(expandconstant('{tmp}\petz4.zip'),expandconstant('{app}\petz4.zip'),false);
end;
end;
答案 0 :(得分:4)
是的,这是可能的。你正在寻找一个叫做辅助函数的小函数 IsComponentSelected()。
它基本上是一个布尔测试者,接受来自name
的组件[components]
并返回复选框值(selected = true)。
// for a single component
if IsComponentSelected('NameOfTheComponent') then idpAddFile(URL, ...);`
// multiple components with one selection
if IsComponentSelected('dictionaries') then
begin
idpAddFile(URL1, ...);
idpAddFile(URL2, ...);
end;
TLama的评论:
在哪个事件以及将下载文件排入队列的位置?
我建议将NextButtonClick
事件与条件一起使用,即当前(CurPage
)必须是组件选择屏幕(wpSelectComponents
)。
换句话说:当您在组件选择屏幕上并按下下一步时,只有选定的组件会添加到下载器中。
代码可能如下所示:
function NextButtonClick(CurPage: Integer): Boolean;
(*
Called when the user clicks the Next button.
If you return True, the wizard will move to the next page.
If you return False, it will remain on the current page (specified by CurPageID).
*)
begin
if CurPage = wpSelectComponents then
begin
if IsComponentSelected('NameOfTheComponent') then idpAddFile(URL, ...);
end; // of wpSelectComponents
Result := True;
end;
旁注:您可以将下载库切换为https://code.google.com/p/inno-download-plugin/这具有更好的功能,包括体面的https支持并且可以主动维护。 InnoTools由SherlockSoftware下载已过时(2008年)。