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?