Inno Setup напрямую поддерживает переключатели с синтаксисом /Name=Value
, используя {param}
константу.
Вы можете использовать константу непосредственно в секциях, хотя это использование довольно ограничено.
Пример:
[Registry]
Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; \
ValueName: "Mode"; ValueData: "{param:Mode|DefaultMode}"
Скорее всего, вы захотите использовать переключатели в Pascal Script.
Если ваш переключатель имеет синтаксис /Name=Value
, проще всего прочитать его значение с помощью ExpandConstant
function< /а>.
Например:
if ExpandConstant('{param:Mode|DefaultMode}') = 'DefaultMode' then
begin
Log('Installing for default mode');
end
else
begin
Log('Installing for different mode');
end;
Если вы хотите использовать значение переключателя для переключения записей в разделах, вы можете использовать Check
параметр< /a> и вспомогательная функция, например:
[Files]
Source: "Client.exe"; DestDir: "{app}"; Check: SwitchHasValue('Mode', 'Client')
Source: "Server.exe"; DestDir: "{app}"; Check: SwitchHasValue('Mode', 'Server')
[Code]
function SwitchHasValue(Name: string; Value: string): Boolean;
begin
Result := CompareText(ExpandConstant('{param:' + Name + '}'), Value) = 0;
end;
Как ни странно, сложнее проверить простое наличие переключателя (без значения).
Использование может использовать функцию CmdLineParamExists
из ответа @TLama на Передача условного параметра в Inno Setup
function CmdLineParamExists(const Value: string): Boolean;
var
I: Integer;
begin
Result := False;
for I := 1 to ParamCount do
if CompareText(ParamStr(I), Value) = 0 then
begin
Result := True;
Exit;
end;
end;
Очевидно, вы можете использовать эту функцию в Pascal Script:
if CmdLineParamExists('/DefaultMode') then
begin
Log('Installing for default mode');
end
else
begin
Log('Installing for different mode');
end;
Но вы можете использовать его даже в разделах, чаще всего используя параметр Check
:
[Files]
Source: "MyProg.hlp"; DestDir: "{app}"; Check: CmdLineParamExists('/InstallHelp')
Связанная проблема:
Добавить определяемые пользователем параметры командной строки в /? окно
person
Martin Prikryl
schedule
19.01.2018