2

这段代码实际上下载了我的文件,所选组件是否“测试”都没有关系。我想下载这两个文件,如果你选择一个组件,可以吗?我使用 Inno Inno Setup 5 + Tools Downloader)

[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;
4

1 回答 1

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 支持并得到积极维护。SherlockSoftware 下载的 InnoTools 已过时(2008 年)。

于 2015-04-03T22:00:55.843 回答