支持函数
GetCmdTail
将传递给安装或卸载的所有命令行参数作为单个字符串返回。这会产生:
/SL5="$A808E8,550741730,269824,D:\Setup.exe" /DEBUGWND=$6A0ACA /verysilent /suppressmsgboxes /closeapplications /restartapplications /norestart
是否有另一种功能或简单的方法可以返回用户指定的命令行开关:
/verysilent /suppressmsgboxes /closeapplications /restartapplications /不重新启动
在这种特殊情况下,同时排除
/DEBUGWND
条目和/或用户尚未指定的任何其他参数?
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;