IMHO deutet diese Art von Szenario auf eine fehlende Funktion in der zu installierenden Anwendung hin und ist leichter in der Anwendung zu beheben, als mit der MSI herumzuhacken.
Bild der Verwaltung
Zunächst möchte ich darauf hinweisen, dass eine einfache Möglichkeit, dieses Problem für Ihre Benutzer zu "lösen", darin besteht, sie anzuweisen, eine Admin-Installation Ihrer MSI auszuführen. Dies extrahiert im Wesentlichen alle Dateien aus den internen CABs und legt alle Dateien in dem angegebenen Ordner ab:
msiexec.exe /a meininstaller.msi TARGETDIR= C:\AdminImage
Ihre Benutzer können dann direkt in die extrahierte Ordnerstruktur gehen und die betreffende Datei aktualisieren und dann das Verzeichnis auf andere PCs übertragen und die MSI installieren. Dies könnte Nebenwirkungen haben, da die Datei einen Hash-Wert in der MSI hat (um Spoofing zu vermeiden), aber in den meisten Fällen funktioniert es gut.
XML XPath-Abfrage ausführen
Neue Versionen von Deployment-Tools wie Installshield und Wix bieten integrierte Unterstützung für die Ausführung von XPath-Abfragen während der Installation und schreiben somit Abschnitte dynamisch.
Aktualisierung der Anwendung
Das Einrichten einer Anwendung auf einem PC umfasst mehrere Schritte. Zunächst müssen die Inhalte auf dem Rechner bereitgestellt werden - dies sollte mit einer MSI erfolgen, keine Frage. Bei den meisten fortgeschrittenen Anwendungen sind jedoch mehrere "Konfigurationsaufgaben nach der Installation" erforderlich, die dieser "Aktualisierung der Konfigurationsdatei" ähneln.
Es ist fast immer besser, diese Konfigurationsaufgaben auf den Zeitpunkt zu verschieben, an dem die Anwendungsstart als zur Implementierung von Funktionen in der MSI. Dafür gibt es viele Gründe, aber der wichtigste ist, dass nur die Anwendungs-EXE garantiert im richtigen Benutzerkontext ausgeführt werden kann. MSI-Dateien können mit Systemrechten, einem anderen Benutzerkonto oder über einen anderen Mechanismus ausgeführt werden.
Wir empfehlen im Allgemeinen, die MSI zu verwenden, um alle erforderlichen Inhalte auf den PC zu bringen . Markieren Sie dann die Registrierung, um der Anwendung mitzuteilen, dass es sich um den ersten Start handelt (bei Aktualisierungen können Sie einen Zähler erhöhen oder die neue Versionsnummer in HKLM eintragen). Dann kann die Anwendung die letzten Konfigurationsschritte in ihrer Startroutine durchführen. Sie kann eine Standard-Config.xml-Datei von irgendwo in %ProgramFiles% kopieren und in das Benutzerprofil kopieren. Dann kann sie die erforderlichen Werte aus HKLM lesen, die von der MSI geschrieben wurden, und die config.xml-Datei mit diesen Werten aktualisieren.
Generell gilt: Vermeiden Sie Konfigurationsschritte, die von MSI oder einem anderen Setup-Mechanismus durchgeführt werden. Konzentrieren Sie sich darauf, die erforderlichen Dateien und Registrierungseinträge auf den Computer zu schreiben, und überlassen Sie es dann der Anwendung selbst, eine geeignete Laufzeitumgebung einzurichten. Dies ermöglicht eine viel bessere Kontrolle der Bereitstellung. Es handelt sich um eine bessere "Kapselung", wenn Sie so wollen. Die MSI sendet über die Registrierung eine "Nachricht" an die Anwendung, und die Anwendung weiß anhand der Nachrichten, wie sie sich richtig einrichten muss.