Inno Setup 仅返回用户指定的命令行开关

问题描述 投票:0回答:1

支持函数

GetCmdTail
将传递给安装或卸载的所有命令行参数作为单个字符串返回。这会产生:

/SL5="$A808E8,550741730,269824,D:\Setup.exe" /DEBUGWND=$6A0ACA /verysilent /suppressmsgboxes /closeapplications /restartapplications /norestart

是否有另一种功能或简单的方法可以返回用户指定的命令行开关:

/verysilent /suppressmsgboxes /closeapplications /restartapplications /不重新启动

在这种特殊情况下,同时排除

/DEBUGWND
条目和/或用户尚未指定的任何其他参数?

inno-setup pascalscript
1个回答
2
投票

自 Inno Setup 6.2 起,

ParamCount
ParamStr
排除了其中一些内部参数
,因此下面代码中的
if
条件不再需要。


基于我用来运行提升的安装程序的类似代码

function GetUserCmdTail: string;
var
  I: Integer;
  S: string;
begin
  for I := 1 to ParamCount do
  begin
    S := ParamStr(I);
    // Filter all internal Inno Setup switches
    if (CompareText(Copy(S, 1, 5), '/SL5=') <> 0) and
       (CompareText(Copy(S, 1, 10), '/DEBUGWND=') <> 0) and
       (CompareText(Copy(S, 1, 10), '/SPAWNWND=') <> 0) and
       (CompareText(Copy(S, 1, 11), '/NOTIFYWND=') <> 0) and
       (CompareText(S, '/DETACHEDMSG') <> 0) and
       (CompareText(S, '/DebugSpawnServer') <> 0) then
    begin
      Result := Result + AddQuotes(S) + ' ';
    end;
  end;
end;
© www.soinside.com 2019 - 2024. All rights reserved.