gpt4 book ai didi

return-value - 从命令行应用程序将字符串值传递给 Inno Setup

转载 作者:行者123 更新时间:2023-12-04 04:18:01 25 4
gpt4 key购买 nike

场景是我们有一个客户端/服务器应用程序,客户端安装是使用 Inno Setup 的 Bootstrap ,它从 IP/端口号指定的服务器下载客户端。我们希望能够通过 UDP 广播检测本地网络上是否有服务器,并且可以编写一个控制台应用程序来执行此操作。问题是,我们如何将信息从控制台应用程序传递给安装程序?

我可以捕获返回码,但它只能是一个整数。据我所知,Inno Setup 中读取文件的唯一函数是在预处理器中,因此我们无法读取控制台应用程序在运行时创建的文件。我唯一能想到的是返回一个 int,其中前 4 位数字是 '.'s 和 : 在端口之前的位置,然后解析出值,这看起来很老套,脆弱且容易出错,特别是考虑到我不太熟悉用于构造字符串的 Inno Setup 语法/函数。

有什么建议吗?

最佳答案

如果您想从 Inno Setup 中的代码解析命令行参数,请使用与此类似的方法。只需从命令行调用安装程序,如下所示:

c:\MyInstallDirectory>MyInnoSetup.exe -myParam parameterValue

然后您可以在任何需要的地方像这样调用GetCommandLineParam:

myVariable := GetCommandLineParam('-myParam');
{ ================================================================== }
{ Allows for standard command line parsing assuming a key/value organization }

function GetCommandlineParam (inParam: String):String;
var
LoopVar : Integer;
BreakLoop : Boolean;
begin
{ Init the variable to known values }
LoopVar :=0;
Result := '';
BreakLoop := False;

{ Loop through the passed in array to find the parameter }
while ( (LoopVar < ParamCount) and
(not BreakLoop) ) do
begin
{ Determine if the looked for parameter is the next value }
if ( (ParamStr(LoopVar) = inParam) and
( (LoopVar+1) < ParamCount )) then
begin
{ Set the return result equal to the next command line parameter }
Result := ParamStr(LoopVar+1);

{ Break the loop }
BreakLoop := True;
end

{ Increment the loop variable }
LoopVar := LoopVar + 1;
end;
end;

希望这有助于...

关于return-value - 从命令行应用程序将字符串值传递给 Inno Setup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/612609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com