Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   InnoSetup: Kundenabhängige Installation (https://www.delphipraxis.net/188304-innosetup-kundenabhaengige-installation.html)

Brainshock 18. Feb 2016 11:07


InnoSetup: Kundenabhängige Installation
 
Hallo,

ich möchte mit InnoSetup eine Installation erstellen und stoße auf Probleme.

Ich versuche folgendes Szenario umzusetzen:

Der Kunde hat das Hauptprogramm installiert und dessen Konfigurationsdatei enthält das Kundenkürzel:
c:\ProgramData\<ConfigPath>\settings.ini
Code:
[Application]
Client=ABB
Mein Programm ist eine Erweiterung für das Hauptprogramm. Es muss, abhängig vom Kundenkürzel, Dateien installieren und ini-Einträge machen.

Meine Probleme:

Wie stelle ich es an, dass während der Installation die settings.ini vom Hauptprogramm ausgelesen wird und endsprechend des ausgelesenen Kundenkürzel die passenden Dateien installiert werden? Es muessen ja alle Dateien in die Setup.exe, aber nur abhängig vom Kunden passenden installiert werden. Hier kommen ja alle in die Setup.exe und werden installiert:

Code:
[Files]
; Exe
Source: "{#ProjectSourcePath}{#ProjectExeName}"; DestDir: "{app}"; Flags: ignoreversion; Components: program
; Certificate CA
Source: "{#ProjectSourceCertPath}{#ProjectDatabaseCACert}"; DestDir: "{#ProjectSettingsPath}"; Components: program
; Certificate ABA
Source: "{#ProjectSourceCertPath}{#ProjectDatabaseUserCertABA}"; DestDir: "{#ProjectSettingsPath}"; Components: program
Source: "{#ProjectSourceCertPath}{#ProjectDatabaseUserKeyABA}"; DestDir: "{#ProjectSettingsPath}"; Components: program
; Certificate ABB
Source: "{#ProjectSourceCertPath}{#ProjectDatabaseUserCertABB}"; DestDir: "{#ProjectSettingsPath}"; Components: program
Source: "{#ProjectSourceCertPath}{#ProjectDatabaseUserKeyABB}"; DestDir: "{#ProjectSettingsPath}"; Components: program
Das zweite Problem ist die Konfiguration (Ini) der Erweiterung. Äbhängig vom Kundenkürzel, müssen die Einträge geschrieben werden.

Code:
[INI]
Filename: "{#ProjectSettingsFileName}"; Section: "Database"; Key: "DBUser"; String: "{#ProjectDatabaseUser}"; Flags: uninsdeleteentry; Components: configuration\lan configuration\wan
Filename: "{#ProjectSettingsFileName}"; Section: "Database"; Key: "DBPass"; String: "{#ProjectDatabasePass}"; Flags: uninsdeleteentry; Components: configuration\lan configuration\wan
Filename: "{#ProjectSettingsFileName}"; Section: "Database"; Key: "DBProperties"; String: "{#ProjectDatabaseProperties}"; Flags: uninsdeleteentry; Components: configuration\lan configuration\wan
Ich hab irgendwie keinen Schimmer, wie ich das umsetzen soll. :?


Hoffentlich gibt es hier jemanden, der mir ein bisschen weiter helfen kann.


Gruß
Matthias

Nersgatt 18. Feb 2016 13:30

AW: InnoSetup: Kundenabhämgige Installation
 
Du kannst das mit dem Check-Parameter umsetzen.

Im Script sieht das z.B. so aus:
Code:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Check: MyProgCheck
Nun kannst du in der Code-Section eine Funktion anlegen, die hier in diesem Fall MyProgCheck hieße. Wenn die true zurück gibt, dann wird die Zeile ausgeführt, sonst nicht.
In der Funktion müsstet Du dann die Ini auslesen und auswerten.

Brainshock 18. Feb 2016 14:30

AW: InnoSetup: Kundenabhämgige Installation
 
Genial, danke. Das hilft mir schon enorm weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 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