Inno Setup apoya directamente interruptores con sintaxis /Name=Value
usando {param}
constant.
Puede usar la constante directamente en secciones, aunque este uso es bastante limitado.
Un ejemplo:
[Registry]
Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; \
ValueName: "Mode"; ValueData: "{param:Mode|DefaultMode}"
usted más probable es que desee utilizar interruptores en Pascal Script.
Si su interruptor tiene la sintaxis /Name=Value
, la forma más fácil de leer su valor es usando ExpandConstant
function.
Por ejemplo:
if ExpandConstant('{param:Mode|DefaultMode}') = 'DefaultMode' then
begin
Log('Installing for default mode');
end
else
begin
Log('Installing for different mode');
end;
Si desea utilizar un valor interruptor para alternar las entradas en las secciones, puede utilizar Check
parameter y una función auxiliar, como:
[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;
Irónicamente es más di difícil de verificar por la mera presencia de un interruptor (sin valor).
uso puede utilizar una función CmdLineParamExists
de @ respuesta de Tlama a Passing conditional parameter in 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;
Obviamente se puede utilizar la función en Pascal Script:
if CmdLineParamExists('/DefaultMode') then
begin
Log('Installing for default mode');
end
else
begin
Log('Installing for different mode');
end;
Pero incluso se puede utilizar en secciones, la mayor parte típicamente usando Check
parámetro:
[Files]
Source: "MyProg.hlp"; DestDir: "{app}"; Check: CmdLineParamExists('/InstallHelp')
El código del preprocesador se procesa antes de compilar el instalador, por lo que no se puede usar para verificar los parámetros de la línea de comandos del setup.exe resultante. – Otherside
Lo sé, por eso especifiqué "scripts de instalador" y no el ejecutable del instalador compilado. A menudo tuve que hacer esto, así que pensé en mencionar esta posibilidad. – Bernard