Inno Setup Загрузка значений по умолчанию для пользовательских настроек установки из файла (.inf) для автоматической установки

У меня есть скрипт установки, который позволяет пользователю указать, где он хотел бы установить мое приложение. Это в форме сценария Паскаля в пределах[Code] блок.

var
  SelectUsersPage: TInputOptionWizardPage;
  IsUpgrade : Boolean;
  UpgradePage: TOutputMsgWizardPage;

procedure InitializeWizard();
var
  AlreadyInstalledPath: String;
begin
  { Determine if it is an upgrade... }
  { Read from registry to know if this is a fresh install or an upgrade }
  if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppId}_is1', 'Inno Setup: App Path', AlreadyInstalledPath) then
    begin
      { So, this is an upgrade set target directory as installed before }
      WizardForm.DirEdit.Text := AlreadyInstalledPath;
      { and skip SelectUsersPage }
      IsUpgrade := True;

      { Create a page to be viewed instead of Ready To Install }
      UpgradePage := CreateOutputMsgPage(wpReady,
        'Ready To Upgrade', 'Setup is now ready to upgrade {#MyAppName} on your computer.',
        'Click Upgrade to continue, or click Back if you want to review or change any settings.');
    end
  else
    begin
      IsUpgrade:= False;
    end;

  { Create a page to select between "Just Me" or "All Users" }
  SelectUsersPage := CreateInputOptionPage(wpLicense,
    'Select Users', 'For which users do you want to install the application?',
    'Select whether you want to install the library for yourself or for all users of this computer. Click next to continue.',
    True, False);

  { Add items }
  SelectUsersPage.Add('All users');
  SelectUsersPage.Add('Just me');

  { Set initial values (optional) }
  SelectUsersPage.Values[0] := False;
  SelectUsersPage.Values[1] := True;
end;

Итак, вопрос в том, как я могу поддержать установку без вывода сообщений? Когда пользователь вызывает/SILENT или же/VERYSILENT по умолчанию установщикSelectUsersPage.Values[1]для чегоJust Me, Я хочу помочь поддержать пользователя, который хочет изменить каталог установки, предоставив файл ответов.

Я не разрабатывал весь этот код, и я новичок в Паскале.

Благодарю.

 Chris Lynch08 авг. 2016 г., 19:18
Извините, я думал, что это ясно. Я прочитал это снова и увидел, что в моем вопросе не все ясно.
 Chris Lynch09 авг. 2016 г., 21:24
Я проверяю это сегодня. Извините за задержку с моей стороны.
 Martin Prikryl29 июл. 2016 г., 08:11
Ну, именно для этого. Чтобы вы объяснили нам, что вы хотите. Вопрос упускал эту точную информацию. +1 сейчас.
 Martin Prikryl28 июл. 2016 г., 08:42
По умолчанию это то, что вы просили по умолчанию. Так что измените по умолчанию.
 Chris Lynch28 июл. 2016 г., 18:38
Почему вы это понизили? Я не спрашиваю, как изменить настройки по умолчанию во время работы мастера. Я спрашиваю, как я могу обработать файл параметров установки без вывода сообщений, который пользователь может предоставить, чтобы они могли контролировать, куда они хотят установить приложение.
 Martin Prikryl08 авг. 2016 г., 19:20
Помог ли мой ответ?

Ответы на вопрос(1)

Решение Вопроса

Вы можете добавить пользовательский ключ (скажем,Users) к.inf файл, созданный/SAVEINF.

Затем в установщике найдите/LOADINF аргумент командной строки и прочитайте ключ и действуйте соответственно:

procedure InitializeWizard();
var
  InfFile: string;
  I: Integer;
  UsersDefault: Integer;
begin
  ...

  InfFile := ExpandConstant('{param:LOADINF}');

  UsersDefault := 0;

  if InfFile <> '' then
  begin
    Log(Format('Reading INF file %s', [InfFile]));
    UsersDefault :=
      GetIniInt('Setup', 'Users', UsersDefault, 0, 0, ExpandFileName(InfFile));
    Log(Format('Read default "Users" selection %d', [UsersDefault]));
  end
    else
  begin
    Log('No INF file');
  end;

  SelectUsersPage.Values[UsersDefault] := True;
end;
 Chris Lynch09 авг. 2016 г., 22:31
Спасибо! Сначала я не понял, где в INF-файле мне нужно было хранить ключ и его значение, пока я не посмотрел функцию GetiniInt () и не увидел, что мне нужно создать ключ Users в разделе [Setup]. Мне пришлось добавить дополнительный код, чтобы увидеть, еслиIsUpgrade имеет значение True, поэтому указанный вами кодовый блок не выполняется во время обновления. Большое спасибо за Вашу помощь!

Ваш ответ на вопрос