2016-05-23 8 views
0

nicht festlegen Ich möchte Eigenschaft von MSI von der Befehlszeile ändern, aber es schlägt fehl. Im Protokoll der MSI kann ich sehen, dass meine Eigenschaft mit meinem Wert aktualisiert wird, aber danach überschreibt sie die Aktion, die diese Eigenschaft geändert hat.Msi: Kann eine Eigenschaft von der Befehlszeile

um genauer zu sein, schreibe ich: INSTALLFOLDER = "*". aber in der msi-Datenbank hat der Aktionsaufruf SetINSTALLFOLDER diesen Wert überschrieben.

Ich frage, wie kann ich auf diese Aktion überspringen oder deaktivieren Sie es über die Befehlszeile.

das msi Produkt nicht von mir produziert.

das Protokoll:

MSI (s) (F4:1C) [15:38:41:973]: Command Line: INSTALLDIR=C:\\Users\user\AppData\Local\Temp\ugi21xcf.3lp 
* 
* 
MSI (s) (F4:1C) [15:38:42:017]: PROPERTY CHANGE: Adding INSTALLDIR property. Its value is 'C:\\Users\user\AppData\Local\Temp\ugi21xcf.3lp'. 
* 
* 
MSI (s) (F4:1C) [15:38:42:050]: Doing action: SetINSTALLFOLDER 
MSI (s) (F4:1C) [15:38:42:050]: Note: 1: 2205 2: 3: ActionText 
Action ended 15:38:42: CostInitialize. Return value 1. 
MSI (s) (F4:1C) [15:38:42:050]: PROPERTY CHANGE: Adding INSTALLFOLDER property. Its value is 'C:\Tools'. 
+0

beachten Sie die relativ geringe Anzahl von Followern für Ihre ausgewählten Tags. Ich würde ein Tag für Ihre Version von Windows hinzufügen, aber dieses Q könnte wirklich besser zu superuser.com oder serverfault.com passen. Wenn Sie dort posten, löschen Sie bitte diese Kopie des Q, da doppelte Postings eine schlechte Etikette im StackExchange-Netzwerk von Websites darstellen. Viel Glück! – shellter

+0

Wer den MSI erstellt hat, muss diese Eigenschaft aus einem bestimmten Grund einstellen. Sprechen Sie also mit der Person, die ihn erstellt hat. – Isaiah4110

Antwort

0

Sie falsche Bedingung Custom festlegen können, die Ihre Eigenschaft überschreibt, aber ich würde es nicht empfehlen, wenn Sie 100% sicher sind, in dem, was es tut (wie, dass alle es zu tun ist einfach INSTALLOCATION setzen). Um es sicherer zu machen, können Sie Ihre eigene CustomAction erstellen, die eine andere Eigenschaft verwendet, die von der Befehlszeile übergeben wird, und die INSTALLOCATION direkt nach SetINSTALLFOLDER CA außer Kraft setzt.

+0

1) Wie kann ich falsche Bedingung zu Aktion über die Befehlszeile festlegen. 2) Ich kann meine benutzerdefinierte Aktion nicht erstellen, ich bekomme diese MSI-Datei als gegeben. –

+0

Für die MSI-Bearbeitung können Sie Orca oder Insted-it verwenden. Wenn Sie msi selbst nicht ändern können (Es ist eine schlechte Idee, das Installationsprogramm zu ändern, wenn Sie es nicht selbst erstellt haben) Sie können eine Transformationsdatei dafür erstellen. Das Anwenden einer Transformation auf eine MSI bewirkt, dass sie unverändert bleibt, aber die ursprüngliche Datenbank wird nicht geändert. Um die Transformation während der Installation anzuwenden, müssen Sie sie in der Befehlszeile eingeben: "msiexec.exe/i myprod.msi TRANSFORMS = c: \ install \ mytransform.mst" Sie können auch Orca/instedit verwenden, um in Ihre msi zu schauen und zu sehen Wenn deine ungezogene benutzerdefinierte Aktion auf bestimmte Eigenschaften angewiesen ist. Durch die Einstellung falscher Bedingung meinte ich etwas wie "1 = 2" – s1me0ne

+0

Danke, ich entferne die SetINSTALLFOLDER Aktion in transformiert Datei und jetzt funktioniert es wie ich will. Ich kannte die Transform-Methode noch nicht. –