从命令行

时间:2017-08-01 15:59:52

标签: 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 个答案:

答案 0 :(得分:1)

阅读命令行参数的一种简单方法是使用{param:} pseudo-constant解决ExpandConstant function

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

有关详细信息,请参阅How can I resolve installer command-line switch value in Inno Setup Pascal Script?

您是否要自动运行安装程序,请在静默模式下跳过该页面。对于WizardSilent function中的查询ShouldSkipPage event function

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