2009-02-04 12 views
14

Es wurde in der IS Newsgroup vorgeschlagen,/D = zu verwenden, aber mit der iscc.exe, die mit Version 5.2.3 geliefert wurde, erhalte ich den Fehler "Unbekannte Option:".Wie übergeben Sie Parameter an den Befehlszeilencompiler Inno Setup?

Wie verwenden Sie dann im Skript den Wert des Befehlszeilenparameters?

+0

Dank alle für die Antworten hilft. Alle waren hilfreich. Ich hasse es, nur eine als die bevorzugte Antwort auszuwählen. – AlanKley

Antwort

5

Vom Inno Setup Hilfe Datei:

Inno Setup Preprocessor ersetzt die Standard Inno Setup-Befehlszeilen Compiler (ISCC.exe) durch eine erweiterte Version . Diese erweiterte Version bietet zusätzliche Parameter zur Steuerung Inno Setup Preprocessor.

Die "zusätzlichen Parameter" enthalten die Option/d.

21

Sie tun, wie MicSim sagt, den Präprozessor. Es ist in der neuesten ISPack enthalten. Sobald es installiert ist, unterstützt iscc/D.

Sie können dann die Werte wie folgt definiert verwenden (vorausgesetzt, würden Sie /DVERSION_NAME=1.23 getan):

AppVerName=MyApplication v{#VERSION_NAME} 
+4

Dies ist jetzt in Inno Setup 5 integriert, sodass Sie keine zusätzlichen Pakete herunterladen müssen. –

+2

Dies ist nicht Teil der Dokumentation. Bitte geben Sie einige hilfreiche Informationen hier ein: http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline – vezenkov

-3

Wenn Sie von Code in inno Befehlszeilenargumente zu analysieren und dann eine Methode ähnlich dazu. Rufen Sie einfach die inno-Skript über die Befehlszeile wie folgt:

C:\MyInstallDirectory>MyInnoSetup.exe -myParam parameterValue 

Dann können Sie die GetCommandLineParam wie dies nennen, wo Sie es brauchen:

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 arry 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; 

Hope this ...

+1

Ihre Antwort ist eine andere Sache von dem, was hier gefragt wird ... das OP möchte Parameter an den Befehl übergeben Zeilencompiler, nicht zum Installer selbst. – jachguate

+0

Löschen Sie diese Antwort. Dies führt zu Verwirrung und ist für die Frage nicht relevant. – SlowLearner

+0

Ja es ist anders, aber das beantwortet meine Probleme. So danke – JavaJade

Verwandte Themen