Загрузка файла с помощью Inno Setup только тогда, когда пользователь выбирает - PullRequest
1 голос
/ 04 июня 2019

Вопрос: Я хотел бы знать, как создать сценарий для загрузки второго файла, который представляет собой zip-файл, но изначально дает выбор между двумя zip-файлами;скачайте, распакуйте и удалите zip.Каждый zip-файл имеет разные имена, но содержимое имеет другое имя, чем zip-файлы (каждый с тем же именем);переименование не требуется.Этот вопрос немного похож на Apply Условие загрузки файла в inno-setup

Указанные файлы загружаются через веб-сайт SourceForge.Программы (клоны), для которых эти файлы предназначены, либо не перечислены в SF, либо изменили назначение.

После исправления ошибки PChar: InnoTools Downloader не работает с Inno 5.5 I 'Теперь я могу повторно использовать этот скрипт Inno Setup с 2011 года, но хочу немного его расширить, но изо всех сил стараюсь.

#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath','');

[Code]
procedure InitializeWizard();
begin
  itd_init;

  { Set download source.. }
  itd_addfile('http://www.example.com/Textfile.txt', ExpandConstant('{tmp}\Textfile.txt'));
  itd_setoption('UI_AllowContinue','1');
  itd_setoption('UI_DetailedMode','1');
  { Start the download after the "Ready to install" screen is shown }
  itd_downloadafter(wpReady);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then { Lets install the downloaded files }
  begin 
    FileCopy(ExpandConstant('{tmp}\Textfile.txt'), ExpandConstant('{userappdata}\program_name\Textfile.txt'), false);
  end;
end;

Рабочий код на основе ответа:

#pragma include __INCLUDE__ + ";" + "c:\lib\InnoDownloadPlugin"
[Setup]
...
CreateUninstallRegKey=no
#include <idp.iss>
...

[Types]
Name: full;    Description: "Full installation"
Name: compact; Description: "Compact installation"
Name: custom;  Description: "Custom installation"; Flags: iscustom

[Components]
Name: abc;  Description: "C File";  Types: full compact custom; Flags: fixed
Name: hlnj;  Description: "HL (Recommended)"; Types: custom; Flags: exclusive
Name: hnj; Description: "HF";  Types: custom; Flags: exclusive

[Files]
Source: "{tmp}\text.net";  DestDir: "{userappdata}\ccc"; Flags: external; Components: abc
Source: "{tmp}\HLNJ.zip";  DestDir: "{userappdata}\ccc"; Flags: external; Components: hlnj
Source: "{tmp}\HNJ.zip"; DestDir: "{userappdata}\ccc"; Flags: external; Components: hnj

[Code]
procedure InitializeWizard;
begin
  idpAddFileComp('http://www.example.com/text.net', ExpandConstant('{tmp}\text.net'), 'abc');
  idpAddFileComp('http://www.example.com/SecurityUpdates/HLNJ.zip', ExpandConstant('{tmp}\HLNJ.zip'), 'hlnj');
  idpAddFileComp('http://www.example.com/SecurityUpdates/HNJ.zip', ExpandConstant('{tmp}\HNJ.zip'), 'hnj');

  idpDownloadAfter(wpReady);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then 
  begin
    FileCopy(ExpandConstant('{tmp}\text.net'), ExpandConstant('{userappdata}\ccc\text.net'), false);
    FileCopy(ExpandConstant('{tmp}\HLNJ.zip'), ExpandConstant('{userappdata}\ccc\HLNJ.txt'), false);
    FileCopy(ExpandConstant('{tmp}\HNJ.zip'), ExpandConstant('{userappdata}\ccc\HNJ.txt'), false);
  end;
end;

1 Ответ

1 голос
/ 04 июня 2019

Только после публикации моего ответа я заметил, что, несмотря на то, что вы пометили вопрос , вы фактически используете InnoTools Downloader. Не & ndash; InnoTools Downloader не работает и не поддерживается .


В папке examples установки плагина Inno Download есть примеры components1.iss и components2.iss.

Первый показывает, как использовать idpAddFileComp для условной загрузки файла, когда выбран компонент.

Я публикую полный пример:

; Uncomment one of following lines, if you haven't checked "Add IDP include path to ISPPBuiltins.iss" option during IDP installation:
;#pragma include __INCLUDE__ + ";" + ReadReg(HKLM, "Software\Mitrich Software\Inno Download Plugin", "InstallDir")
;#pragma include __INCLUDE__ + ";" + "c:\lib\InnoDownloadPlugin"

[Setup]
AppName          = My Program
AppVersion       = 1.0
DefaultDirName   = {pf}\My Program
DefaultGroupName = My Program
OutputDir        = userdocs:Inno Setup Examples Output

#include <idp.iss>

[Types]
Name: full;    Description: "Full installation"
Name: compact; Description: "Compact installation"
Name: custom;  Description: "Custom installation"; Flags: iscustom

[Components]
Name: app;  Description: "My Program";  Types: full compact custom; Flags: fixed
Name: help; Description: "Help files";  Types: full
Name: src;  Description: "Source code"; Types: full

[Files]
Source: "{tmp}\app.exe";  DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: app
Source: "{tmp}\help.chm"; DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: help
Source: "{tmp}\src.zip";  DestDir: "{app}"; Flags: external; ExternalSize: 1048576; Components: src

[Icons]
Name: "{group}\My Program"; Filename: "app.exe";  Components: app
Name: "{group}\Help file";  Filename: "help.chm"; Components: help
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
[Code]
procedure InitializeWizard;
begin
    idpAddFileComp('http://127.0.0.1/app.exe',  ExpandConstant('{tmp}\app.exe'),  'app');
    idpAddFileComp('http://127.0.0.1/help.chm', ExpandConstant('{tmp}\help.chm'), 'help');
    idpAddFileComp('http://127.0.0.1/src.zip',  ExpandConstant('{tmp}\src.zip'),  'src');

    idpDownloadAfter(wpReady);
end;

Предупреждение: имя компонента, переданное idpAddFileComp , должно быть в нижнем регистре (фактическое имя компонента может использовать верхний регистр).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...