2017-11-09 3 views
-2

Ich arbeite an einem Installationsprogramm mit WiX, das eine "Name" -Eingabe vom Benutzer mithilfe eines Textfelds in einem Dialogfeld ausführt. Dieser Name wird verwendet, um das Produkt zu benennen, das ich installiere.WiX - Name des installierten Produkts dynamisch ändern unter Programme hinzufügen/entfernen

Ich kann den Produktnamen während der Installation jedoch nicht dynamisch festlegen. Selbst wenn ich eine benutzerdefinierte Aktion verwende, wird der Registrierungseintrag mit dem statischen Namen erstellt, den ich zuvor angegeben habe. Dies führt letztlich zu Inkonsistenzen.

Kann mir bitte jemand dabei helfen?

Antwort

1

Dies kann nicht in einer benutzerdefinierten Aktion durchgeführt werden. Es ist wahr, dass Sie die ProductName-Eigenschaft in einer benutzerdefinierten Aktion (z. B. Typ 51) früh in der Installation festlegen können und das wird tatsächlich den Namen in der Benutzeroberfläche ändern, aber es wird nicht den Namen des installierten Produkts ändern - es wird bleiben das gleiche wie der ursprüngliche Wert. Wenn Sie beispielsweise installierte Produkte auflisten, wird der ursprüngliche Name zurückgegeben.

Der einzige gute Weg, dies zu tun ist, den ProductName in der MSI-Datei zu ändern, bevor Sie es starten. Sie hätten ein Startprogramm, das die MSI-Datei ändert und dann installiert. Die MSI-Datei ist eine Datenbank, die in der Eigenschaftstabelle geändert werden kann, um den Wert von ProductName zu ändern. In diesem Beispiel werden Sie die allgemeine Idee geben:

How do I add/update a property inside an MSI from the command-line?

aber im Grunde öffnen Sie das Öffnen der Datenbank (MsiOpenDatabase oder gleichwertig) dann MsiOpenView mit einem SQL wie:

„UPDATE Property SET Property.Value = 'Ihre Variable' WHERE Property.Property = 'CurrentProductName' "

Dann MsiViewExecute und schließen Sie Handies etc. Details hängen von Ihrer bevorzugten Programmiersprache Umgebung.

Dies ist keine ideale Lösung, denn wenn Ihre MSI-Datei digital signiert ist, haben Sie sie manipuliert und es ist nicht mehr korrekt.

Eine andere Möglichkeit besteht darin, eine Transformationsdatei basierend auf dem Ändern einer Kopie der MSI-Datei zu generieren. Wenn Sie eine Kopie der MSI-Datei erstellen und dann wie oben beschrieben die Änderung von ProductName vornehmen, können Sie einen MsiDatabaseGenerateTransform() - Aufruf ausführen, der eine Transformationsdatei, eine MST-Datei, den Unterschied zwischen den beiden MSI-Dateien generiert. Anschließend installieren Sie die ursprüngliche unveränderte MSI-Datei mit einer Befehlszeile, die TRANSFORMS = [die .mst-Datei] enthält, die den ProductName aktualisiert und die Installation startet.

Dies ist nicht sehr einfach, da Windows Installer-Produkte keine dynamischen Produktnamen aufweisen. Vielleicht war dies historisch und vor Windows Installer-Setups praktischer, aber nicht in MSI-Setups.

+0

Danke für die Hilfe @PhilDW! :-) Ich werde die relevanten Schritte anhand Ihrer Antwort untersuchen ... –

Verwandte Themen