Установка значения поля пользовательской страницы Inno Setup из командной строки

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

Из моего исследования, кажется, можно добавить параметр командной строки, но я изо всех сил пытаюсь понять, как именно установить это в моей настройке Inno, а затем, как я могу сделать это необязательным, чтобы его можно было указать в командной строке или через мастер установки.

Например что-то вроде app1.exe /ipaddress 192.168.0.1

Извиняюсь, если это простой процесс, я новичок в Inno Setup, поэтому любая помощь будет принята с благодарностью.

Кто-нибудь может предложить какую-либо помощь, чтобы помочь мне получить эту настройку?

[Code]

var
  PrimaryServerPage: TInputQueryWizardPage;

function FileReplaceString(ReplaceString: string):boolean;
var
  MyFile : TStrings;
  MyText : string;
begin
  Log('Replacing in file');
  MyFile := TStringList.Create;

  try
    Result := true;

    try
      MyFile.LoadFromFile(ExpandConstant('{app}' + '\providers\win\config.conf'));
      Log('File loaded');
      MyText := MyFile.Text;

      { Only save if text has been changed. }
      if StringChangeEx(MyText, 'REPLACE_WITH_CUSTOMER_IP', ReplaceString, True) > 0 then
      begin;
        Log('IP address inserted');
        MyFile.Text := MyText;
        MyFile.SaveToFile(ExpandConstant('{app}' + '\providers\win\config.conf'));
        Log('File saved');
      end;
    except
      Result := false;
    end;
  finally
    MyFile.Free;
  end;

  Result := True;
end;

procedure InitializeWizard;
begin
  PrimaryServerPage :=
    CreateInputQueryPage(
      wpWelcome, 'Application Server Details', 'Where is installed?',
      'Please specify the IP address or hostname of your ' +
        'Primary Application Server, then click Next.');
  PrimaryServerPage.Add('Primary Application Server IP/Hostname:', False);
end;   

procedure ReplaceIPAddress;
begin
  FileReplaceString(PrimaryServerPage.Values[0]);
end;

1 ответ

Решение

Один простой способ прочитать параметр командной строки - это решить {param:} псевдо-константа с использованием ExpandConstant функция:

procedure InitializeWizard;
begin
  PrimaryServerPage :=
    CreateInputQueryPage(
      wpWelcome, 'Application Server Details', 'Where is installed?',
      'Please specify the IP address or hostname of your ' +
        'Primary Application Server, then click Next.');
  PrimaryServerPage.Add('Primary Application Server IP/Hostname:', False);
  PrimaryServerPage.Values[0] := ExpandConstant('{param:ipaddress}');
end;   

В командной строке используйте этот синтаксис для предоставления значения:

mysetup.exe /ipaddress=192.0.2.0

Дополнительные сведения см. В разделе Как определить значение параметра командной строки установщика в сценарии Inno Setup Pascal?


Если вы хотите запустить установщик автоматически, пропустите страницу в автоматическом режиме. Для этого запроса WizardSilent функция в ShouldSkipPage функция события:

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := False;

  if PageID = PrimaryServerPage.ID then
  begin
    Result := WizardSilent;
  end;
end;

Теперь вы можете использовать этот синтаксис командной строки для предоставления значения и избегать любых запросов:

mysetup.exe /silent /ipaddress=192.0.2.0
Другие вопросы по тегам