Pfad als Startparameter übergeben

Fragen zum AKInstallerMSI
Antworten
seifedias
Beiträge: 5
Registriert: 24.05.2009, 10:43

Pfad als Startparameter übergeben

Beitrag von seifedias »

Hallo,

ich bin noch neu im MSI-Metier, ich bitte um Nachsicht. Ich scheitere momentan (unter anderem :? ) an folgendem Problem:

Ich habe das "Set Databasepath"-Beispiel erfolgreicht nachgebaut. In meinem Fall heißt die entsprechende Variable "SERVERPFAD", die zunächst per CA auf "[AppDataFolder]" vorbelegt wird und dann vom Benutzer über einen entsprechenden Dialog geändert werden kann. Die Variable (bzw. der Pfad) wird dann in einer Ini-Datei abgelegt. Wie gesagt, klappt alles prima.

Wenn ich aber ein Silent-Setup durchführen möchte, dann will ich natürlich den Serverpfad beim Aufruf übergeben:

msiexec /i setup.msi /qn SERVERPFAD=c:\users\Benutzer\

leider funktioniert das nicht. Ist der Aufruf falsch oder muss ich im Setup noch etwas ändern?

mfg
seifedias
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Pfad als Startparameter übergeben

Beitrag von Andreas Kapust »

Guten Tag!

Wenn Sie das Beispiel komplett übernommen haben, sehen Sie auf der Seite Benutzerdef. Aktionen -> Sequenzen -> Ausführungssequenz nach. Dort sollte (im Beispiel E19_SetDataBaseDir) auftauchen, welches bei Ihnen SERVERPFAD (neu) initialisiert. Klicken den Eintrag doppelt an. Nun öffnet ein Dialog mit dem Sequenznamen (nicht änderbar) und eine leeren Bedingung, sowie der Sequenznummer. Ändern Sie die Bedingungen in SERVERPFAD="" und klicken auf OK.

Nun die CA (Custom Action) nur ausgeführt, wenn SERVERPFAD nicht gesetzt ist.

E20_CustomAction setzt den Pfad allerdings neu, wenn die Anwendung schon einmal installiert wurde (was beabsichtigt ist).

Um das Verhalten bei der Installation zu beobachten, können Sie die De/Installation mit Logfile ausführen.
Z. B. MsiExec /i "C:\Irgendwo\Setup.msi" /liwearucmopvx+!* LogFile_MSI.txt
Die Bedeutung der Paramter hinter /i (hier alle) erfahren Sie, in dem Sie im AKInstallerMSI F8 drücken und dann zu Logfile wechseln.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
seifedias
Beiträge: 5
Registriert: 24.05.2009, 10:43

Re: Pfad als Startparameter übergeben

Beitrag von seifedias »

Vielen Dank für den Tipp. Das hat jetzt soweit funktioniert. Eine ergänzende Frage noch: Das Verzeichnis "SERVERPFAD" soll im Falle von WinXP auf [CommonAppDataFolder] (also "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten") voreingestellt werden, im Falle von WinVista aber auf "C:\Users\Public\Documents".

Mein Versuch: ich habe in der CA "E19_SetServerPfad" die Bedingung von SERVERPFAD="" auf VersionNT < 600 and SERVERPFAD="" geändert. Anschließend die CA kopiert, in "E20_SetServerPfadVista" umgetauft und die Bedingung in VersionNT >= 600 and SERVERPFAD="" geändert.

Meine Absicht: E19 wird nur bei Betriebssystemen vor Vista, E20 bei Vista oder höher ausgeführt. Leider werden (laut Logdatei) aber immer beide ausgeführt, auch unter WinXP. Was habe ich übersehen?

Gruß
seifedias
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Pfad als Startparameter übergeben

Beitrag von Andreas Kapust »

Guten Tag!
seifedias hat geschrieben: Das Verzeichnis "SERVERPFAD" soll im Falle von WinXP auf [CommonAppDataFolder] (also "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten") voreingestellt werden, im Falle von WinVista aber auf "C:\Users\Public\Documents".
Das hab ich jetzt nicht ganz verstanden. CommonAppDataFolder ist eine Pfadvariable des Windows Installers und soll umgebogen werden? Unter den jeweilige System zeigt CommonAppDataFolder auf die von Ihnen gewollten Ordner. Ein Setzen von SERVERPFAD auf [CommonAppDataFolder] sollte dann doch reichen.

Oder habe ich Sie missverstanden?
seifedias hat geschrieben: Mein Versuch: ich habe in der CA "E19_SetServerPfad" die Bedingung von SERVERPFAD="" auf VersionNT < 600 and SERVERPFAD="" geändert. Anschließend die CA kopiert, in "E20_SetServerPfadVista" umgetauft und die Bedingung in VersionNT >= 600 and SERVERPFAD="" geändert.
Eine Bedinung < und > 600 kann eigentlich nicht gleichzeitig erfüllt werden. ;-)

Können Sie mir das Logfile der Installation mailen und ggf. die STPM-Datei?
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
seifedias
Beiträge: 5
Registriert: 24.05.2009, 10:43

Re: Pfad als Startparameter übergeben

Beitrag von seifedias »

Warum ich unter WinXP und Vista unterschiedliche Pfade benötige möchte ich hier nicht weiter erläutern. Die Frage ist hier eigentlich nur, ob sich das realisieren lässt.

Bzgl. den Bedingungen habe ich mich entweder missverständlich ausgedrückt oder ich habe das Konzept der CA falsch verstanden. Ich gehe von folgendem aus: mehrere CAs sind grundsätzlich von einander unabhängig. Ob eine CA tatsächlich ausgeführt wird oder nicht hängt letztlich davon ab, welche Bedingung unter "Einstellungen -> Sequenz" eingetragen ist.

Wenn dem so ist, sollte doch folgendes Funktionieren:
CA 1: E19_SetServerPfad_XP
Bedingung: (SERVERPFAD="") AND (VersionNT < 600)
Diese CA soll also nur ausgeführt werden, wenn OS-Version älter als Vista und SERVERPFADnoch nicht belegt wurde.

CA 2: E20_SetServerPfad_Vista
Bedingung: (SERVERPFAD="") AND (VersionNT >= 600)
Diese CA soll also nur ausgeführt werden, wenn OS-Version Vista oder höher ist und SERVERPFADnoch nicht belegt wurde.

Die beiden CAs schließen sich also gegenseitig aus, es wird entweder die eine ODER die andere tatsächlich ausgeführt, falls SERVERPFAD schon belegt gar keine von beiden.

Wenn sich das so nicht klären lässt, schicke ich auch gerne die Log-Datei

mfg
seifedias
Andreas Kapust
Administrator
Beiträge: 1085
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Pfad als Startparameter übergeben

Beitrag von Andreas Kapust »

Guten Tag.

Die angefügte Demo wird hoffentlich helfen.
Dateianhänge
ca_path.zip
Demoprojekt
(30.14 KiB) 504-mal heruntergeladen
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten