AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Inno Setup: in eigener Function Wert aus [Components] auswerten
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Beichtvater · begonnen am 7. Apr 2022 · letzter Beitrag vom 7. Apr 2022
Antwort Antwort
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, 11: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 11:55 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.176 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 7. Apr 2022, 12:58
Inno meckert, weil ddl2 kein Pascalbezeichner ist + hier nicht definiert ist. Ich hab´s nicht im Kopf, aber es muss was Ähnliches wie das ExpandConstant sein, damit kannst du im Pascal-Teil auf Variablen von Inno zugreifen. Schasu mal hier
https://jrsoftware.org/ishelp/
unter ScriptedConstants.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 7. Apr 2022, 13:55
Wie muss das Installationsscript richtig lauten? Irgendwie finde ich keine Infos zu dem Syntax der Funktionen.
Die passende Funktion heißt WizardIsComponentSelected.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 7. Apr 2022, 14:07
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?
Kannst du nicht:
Zitat:
The called function must have 1 String parameter named Param, and must return a String or a Boolean value depending on where the constant is used.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Beichtvater

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

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

  Alt 7. Apr 2022, 14:22
Die passende Funktion heißt WizardIsComponentSelected.
Perfekt, vielen Dank.
Kaum macht man's richtig, geht's auch

Das mit dem "(Param: String)" war eh nur eine Schönheitssache, es funktioniert ja schon lange auch so...
Christian
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#6

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

  Alt 7. Apr 2022, 14:39
([.CODE] ist im Original ohne den Punkt, den habe ich nur wegen des Parsers hier eingefügt)
Du kannst [CODE] schreiben, indem Du es zwischen [noparse] ... [/noparse] schreibst: ----> [noparse][CODE][/noparse]. Ist zwar etwas umständlich, aber dadurch wird das Parsen unterbunden und es sieht etwas schöner aus. Was man nicht alles für die Optik machen muß...
Grüße, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 ( 7. Apr 2022 um 14:42 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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