WiX: Ändern .msi Directory und Custom Tabelle mit Änderungen von MSP-Patch-Datei verwendet werden

stimmen
0

mit dem v3.11 Wix Toolset ich eine .msi-Datei für meine Anwendung erstellt haben (sagen wir mal, Version 1.1) mit einem Verzeichniselement, das die LocalAppDataFolder und legt einen Ordner Temp unter abzielt. Diese Struktur wird mit einem DirectoryRef Elemente verwendet es einige Dateien zu setzen, die innerhalb einer benutzerdefinierten Aktion auf InstallFinalize zugegriffen werden. Nun erzeugen ich einen Patch (Version 1.2), die einige Dateien in dem Ordner Temp erstellt. Aber ich möchte, dass Ordner nun in der TARGETDIR sein. Also änderte ich

<Directory Id=LocalAppDataFolder>
  <Directory Id=APPDATA_TEMP Name=Temp />
</Directory>

zu

<Directory Id=MY_TEMP_PATH Name=.>
  <Directory Id=APPDATA_TEMP Name=Temp />
</Directory>

unterhalb der

<Directory Id=TARGETDIR Name=SourceDir>

Struktur. Für den Patch angewendet werden richtig öffnete ich die MSI - Datei , die (unter in der Registrierung verwiesen ist HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Installer \ Userdata \ ... \ Produkte {GUID} \ InstallProperties \ Localpackage ) mit dem Orca Werkzeug und bearbeiten die entsprechenden Werte in der Verzeichnistabelle. Ich redigierte auch die CustomActions- Tabelle den neuen Pfad zu verweisen , da sie dort als Parameter verwendet wird. Also, wenn ich jetzt den Patch installieren legen sie alle Dateien (geändert und neue) im LocalAppDataFolder , wie es mit dem anfänglichen tat installieren. Die benutzerdefinierte Aktion wird allerdings mit dem richtigen Parameter aufgerufen.

Gibt es eine Möglichkeit, die „Basis“ msi zu ändern meine neue Ordner Temp oder alternativ zum Ziel, irgendwie dem Patch sagen Sie die neuen Ordner, unabhängig von dem ursprünglichen Pfad zu benutzen?

Das Ziel ist, den Patch zu installieren, ohne zuerst die Anwendung deinstallieren zu müssen.

Jede Hilfe, wie das zu erreichen, wird sehr geschätzt.

Veröffentlicht am 09/10/2019 um 18:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Schließlich fanden wir eine Lösung. Also hier ist es, was unser Problem gelöst, sollte jemand jemals kommen über etwas ähnliches:

Wir fanden den tatsächlichen Pfad der LocalAppDataFolder an zwei Stellen in der Registrierung: Der erste Eintrag befindet sich in HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Installer \ Ordner . Das zweite ist HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Installer \ Userdata ... \ Components . Der Eintrag mit der Komponenten - ID, die die Dateien in dem Ordner Temp setzt hält genau einen Wert, der der Pfad zu der ersten Datei in dieser Komponente ist. Wir änderten beide Wege zu unserem neuen temporären Ordner.

Nun extrahiert der Patch die Dateien korrekt auf den neuen temporären Ordner und die benutzerdefinierte Aktion kann sie weiter verarbeiten.

Beantwortet am 22/10/2019 um 20:57
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more