Leute,
wir haben einige Probleme mit der Sequenzierung bei unserer MSI-Installation. Als Teil unserer Anwendung installieren wir eine Reihe von Diensten und geben dem Benutzer die Möglichkeit zu wählen, ob er sie sofort oder später starten möchte.
Wenn sie sofort starten, scheinen sie zu früh in der Installationssequenz zu beginnen - bevor unser Datenbankmanager die Möglichkeit hatte, die Datenbank zu aktualisieren.
Im Moment sieht unsere benutzerdefinierte Aktion zum Ausführen des Datenbank-Updaters so aus - sie wird nach "InstallFinalize" ausgeführt - sehr spät im Prozess.
<InstallExecuteSequence>
<RemoveExistingProducts After='InstallInitialize' />
<Custom Action='RunDbUpdateManagerAction' After='InstallFinalize'>
DbUpdateManager=3</Custom>
</InstallExecuteSequence>
Welcher Schritt sollte nach oder vor der Ausführung erfolgen, um sicherzustellen, dass die DB-Skripte ausgeführt werden? antes de Wird einer der installierten Dienste gestartet? Gibt es einen Schritt "BeforeServiceStart"?
EDITAR:
Die Definition des Attributs "Before='StartServices'" auf dem Tag hat mein Problem nicht gelöst.
Ich nehme an, das Problem ist folgendes: Die benutzerdefinierte Aktion hat einen "inneren Text", der eine Bedingung darstellt, und diese Bedingung lautet: "&DbUpdateManager=3". Aus dem, was ich aus Versuch und Irrtum ableiten kann, bedeutet dies wahrscheinlich "die DbUpdateManager-Funktion muss veröffentlicht werden".
Nun, das Problem ist: "PublishFeature" kommt ganz am Ende der Installationssequenz, kurz vor "InstallFinalize" und definitiv NACH InstallServices / StartServices. Wenn ich also die Anforderung "Before=StartServices" festlege, ist die Bedingung "DbUpdateManager feature must be published" noch nicht erfüllt, so dass der DbUpdateManager nicht ausgeführt wird :-(
Ich habe versucht, die Bedingung zu entfernen - in diesem Fall wird mein DbUpdateManager manchmal überhaupt nicht ausgeführt, manchmal mehr als einmal - kein wirklich klares Muster, was passiert, wenn.....
Haben Sie noch weitere Ideen? Gibt es eine Möglichkeit, auf die Bedingung "Das DbUpdateManager-Feature ist installiert" zu prüfen, die nach dem Schritt "InstallFiles" erfüllt wäre?
Marc