Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   InnoSetup: Parameter wahlweise übergeben (https://www.delphipraxis.net/151287-innosetup-parameter-wahlweise-uebergeben.html)

stho 11. Mai 2010 14:21


InnoSetup: Parameter wahlweise übergeben
 
Halli hallo Leute,

Ich stehe vor der Aufgabe ein InnoSetup zu erzeugen was einen Pfad als Parameter übergeben bekommen haben KANN, aber nicht muss
Nun ist es bei Inno ja so das man dies SO macht:

[SETUP]
DefaultDirName = {pf}

{pf} steht ja im Allgemeinen für den Programme-Ordner

nun will ich aber prüfen ob dem Setup ein Parameter (Ziel-Pfad) übergeben wurde in das es sich installieren soll...
Und da ich nicht will das man mir vor hällt ich würde gar nix tun, weiß ich auch schon wo ich abfrage ob mein Setup einen Pfad bekommen hat:

Delphi-Quellcode:
function InitializeSetup: boolean;
begin
  // ABFRAGE
  Result := 0
end;
nun, wie weise ich dem Setup denn den neuen Wert zu?
Kann ich das etwa einfach machen indem ich DefailtDirName als Variable anspreche? :gruebel:
Achja, nur so als kleine information:
Ich gebs gerne zu, was Inno betrifft bin ich leider noch nicht so bewandert...
Bitte also um eure hilfe :cheers:

Liebe Grüße
stho

DelphiBandit 11. Mai 2010 15:14

Re: InnoSetup: Parameter wahlweise übergeben
 
Mit Parametern habe ich innerhalb von Inno auch noch nicht gearbeitet, aber was ich so auf die Schnelle aus der lesenswerten Hilfe entnehmen kann.

function ParamCount: Integer;
Description:
Returns the number of command line parameters passed to Setup or Uninstall.

function ParamStr(Index: Integer): String;
Description:
Returns the Index-th command line parameter passed to Setup or Uninstall.
DefaultDirName
The value of this required directive is used for the default directory name, which is used in the Select Destination Location page of the wizard.Normally it is prefixed by a directory constant.

Auf die internen Variablen kann man mittels ExpandConstant zugreifen.

Also müsste das (ungetestet!) ca. so aussehen
Delphi-Quellcode:
if ParamCount > 1 then
  DefaultDirName := ParamStr(2)
else
  DefaultDirName := ExpandConstant('{pf}') + 'MyProgName';
Einfach mal als Ansatz damit rumprobieren.

Direktes Zuweisen funktioniert nicht, hab's gerade ausprobiert. Dafür kann man aber das Zusammenbauen des Install-Dirs im Setup-Dir als Funktionsaufruf einbinden:

[code=delphi]
DefaultDirName={code:GetAppFolder}\
Code:
function GetAppFolder(Param: String): String;
begin
  if ParamCount > 1 then
    Result := ExpandConstant('{pf}') + '\' + ParamStr(2) // C:\Programme\ParameterWert
  else
    Result := 'D:\Temp\Test\'; // Ergebnis ohne Parameter
end;
Kam nicht umhin das eben mal ausprobieren zu wollen :D

wicht 11. Mai 2010 15:20

Re: InnoSetup: Parameter wahlweise übergeben
 
Ansonsten bietet Inno Setup auch noch

Delphi-Quellcode:
var
  s: string;
begin
  s := GetCmdTail;
end;

stho 11. Mai 2010 15:45

Re: InnoSetup: Parameter wahlweise übergeben
 
Zitat:

Zitat von wicht
Ansonsten bietet Inno Setup auch noch

Delphi-Quellcode:
var
  s: string;
begin
  s := GetCmdTail;
end;


okay, das muss ich mir mal genauer angucken... o.O


@DelphiBandit:
Und dir danke ich auch schonmal... mal gucken was ich da so machen kann ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz