Einzelnen Beitrag anzeigen

Beichtvater

Registriert seit: 7. Apr 2008
Ort: NRW / 45xxx
7 Beiträge
 
Delphi XE7 Professional
 
#1

Inno Setup: in eigener Function Wert aus [Components] auswerten

  Alt 7. Apr 2022, 12:37
Hallo werte Progger,
ich stehe vor der Herausforderung, abhängig von einer Auswahl des Bedieners eine x64er Installation zu einer x86er zu ändern:
Ein Programm von mir liegt als x86 und x64er Version vor. Eine DLL ebenso, eine andere aber nur als x86
Prog: x86 und x64 ("MyProg-x86.exe" und "MyProg-x64.exe")
DLL1: x86 und x64 ("dll1-x86.dll" und "dll1-x64.dll")
DLL2: x86 (nur als "dll2-x86.dll")

Nun soll das Setup bei der Auswahl der DLL2 die 32bit-Linie installieren, wenn aber nur die DLL1 gewählt ist, soll je nach BS entweder alles als 32Bit oder als 64Bit installiert werden.
Im Grunde genommen müsste es unterem Code ähnlich sein.

Code:
[Setup]
ArchitecturesInstallIn64BitMode=x64

[.CODE]
function x64isok (): Boolean;
begin
  result:=Is64BitInstallMode and not dll2;
end;

[Types]
Name: "full"; Description: "vollständig"
Name: "custom"; Description: "benutzerdefiniert"; Flags: iscustom

[Components]
Name: "program"; Description: "Hauptprogramm"; Types: full custom; Flags: fixed
Name: "dll1"; Description: "DLL1"; Types: full custom;
Name: "dll2"; Description: "DLL2"; Types: full custom;

[Files]
Source: "MyProg-x64.exe"; DestDir: "{app}"; DestName: "MyProg.exe"; Check: x64isok
Source: "MyProg-x86.exe"; DestDir: "{app}"; DestName: "MyProg.exe"; Check: not x64isok
Source: "dll1-x64.dll"; DestDir: "{app}"; DestName: "DLL1.dll"; components: dll1; Check: x64isok
Source: "dll1-x86.dll"; DestDir: "{app}"; DestName: "DLL1.dll"; components: dll1; Check: not x64isok
Source: "dll2-x86.dll"; DestDir: "{app}"; DestName: "DLL2.dll"; components: dll2;
Nur meckert Inno Setup die function "x64isok" an.
Zitat von Compiler Error:
Unknown identifier 'dll2'
Wie muss das Installationsscript richtig lauten? Irgendwie finde ich keine Infos zu dem Syntax der Funktionen.
Ich hoffe, einer von euch kann mir da auf die Sprünge helfen.
Danke schon einmal im Vorfeld.

([.CODE] ist im Original ohne den Punkt, den habe ich nur wegen des Parsers hier eingefügt)

Da wir gerade dabei sind, noch eine Frage:
bei der Funktion
Code:
function ProgDir(Param: String): String;
Var P : String;
begin
  P := ExpandConstant('{app}'+'\Exe');
  Result:= P;
End;

[Dirs]
Name: "{code:ProgDir}"
muss ich zwingend einen Parameter (Param) übergeben, der aber nicht benutzt und leer ist. Wie kann ich dies verhindern?
Christian

Geändert von Beichtvater ( 7. Apr 2022 um 12:55 Uhr)
  Mit Zitat antworten Zitat