настройка inno для просмотра и распаковки zip-файла в отдельном месте - PullRequest
0 голосов
/ 30 июня 2018

Я хочу, чтобы пользователи могли просматривать и извлекать ZIP-файлы в определенном месте.

Требования / шаги:

  1. Показать страницу приветствия
  2. Следующая кнопка просмотра для выбора каталога установки (DisableDirPage=no)
  3. Следующая кнопка просмотра для выбора zip-файла (JDK)
  4. Извлечь JDK zip-файл, выбранный на шаге 3 в месте, выбранном на шаге 2, это означает, что JDK должен быть извлечен в установочном каталоге, который пользователь выберет на шаге 2

Проблемы с моим кодом:

  1. После первого шага мой код сразу переходит к третьему шагу, а затем переходит ко второму.
  2. Код для извлечения zip не работает, если я передаю имя метода в качестве параметра. Если я передаю жестко запрограммированное значение местоположения, оно работает. Я не знаю паскаль, и это в основном похоже на синтаксис.

[SETUP]

AppName=My Program
        AppVersion=1.5
        DefaultDirName={pf}\My Program
        DefaultGroupName=My Program
        UninstallDisplayIcon={app}\MyProg.exe
        DisableProgramGroupPage=no
        DisableWelcomePage=no
        DisableDirPage=no
        Compression=lzma2
        SolidCompression=yes
        OutputDir=userdocs:Inno Setup Examples Output

[Files]

Source: "{code:GetLicensePath}"; DestDir: "{app}"; Flags: external
Source: "7za.exe"; DestDir: "D:\authorized\Builds\Solo\"; Flags: deleteafterinstall;

[Icons]

Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

[Run]

Filename: D:\authorized\Builds\Solo\7za.exe; Parameters: "x ""{{Code:GetZipPath}}"" -o""{app}\"" * -r -aoa"; Flags: runhidden runascurrentuser;

[Код]

 var
   Page: TInputFileWizardPage;
   DataDir:String;

 procedure InitializeWizard();
 begin
   Page :=
     CreateInputFilePage(
       wpWelcome,
       'Select Zip File Location',
       'Where is your Zip file located?',
       'Select where Zip file is located, then click Next.');

   Page.Add(
     'Location of Zip file:',         
     '*.7z|*.rar|All files|*.*', 
     '.zip');  

 // Set initial value (optional)
 Page.Values[0] := ExpandConstant('{%USERPROFILE}\Downloads\setup.7z'); 
     ;                   
 end;



 function GetZipPath(Param: string): string;
 begin
   DataDir := Page.Values[0];

 end;

Не могли бы вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 02 июля 2018
  1. Порядок вашей пользовательской страницы определяется первым аргументом функции Create*. Так что измените wpWelcome на wpSelectDir.

  2. Почему удваивается {{...}} - Вероятно, это проблема. Также code: должен быть в нижнем регистре.

  3. Ваша постоянная функция в сценарии ничего не возвращает. Должно быть:

     Result := Page.Values[0];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...