我已经配置了以下脚本,要求用户输入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;
答案 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