Загрузка файлов через Интернет, если компонент выбран (WITH Inno Tools Downloader)
Этот код фактически загружает мне файлы, и не имеет значения, является ли выбранный компонент "тестовым" или нет. Я хочу, чтобы эти два файла были загружены, если вы выбрали компонент, можете это сделать? Я использую 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;
1 ответ
Да, это возможно Вы ищете небольшую вспомогательную функцию 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;
Sidenote: вы можете переключить свою загружаемую библиотеку на https://code.google.com/p/inno-download-plugin/ Она обладает улучшенными функциями, включая приличную поддержку https, и активно поддерживается. Загрузка InnoTools от SherlockSoftware устарела (2008).