Frage

Ich habe einen MSI-Installer, in dem ich brauche eine kurze Text Eigenschaft aus der Befehlszeile hinzuzufügen oder zu ändern.

Dies muss getan werden, nachdem der Installer erstellt wird; Ich kann nicht den Prozess ändern, die das Installationsprogramm in erster Linie produziert. Es hat auch von einem Skript ausgeführt kopflos werden.

Als ich „Eigenschaft“, sagen könnte es sich um eine MSI-Eigenschaft sein, ein Wert, der auf die registery geschrieben wird zum Installationszeitpunkt oder einen anderen Mechanismus, der diese kurze benutzerdefinierten Text in der installierten Anwendung erhalten können, wenn es ausgeführt wird.

War es hilfreich?

Lösung

Beispiel VBScript, dass Sie aktualisieren verwenden, um könnten (oder hinzufügen) eine Eigenschaft Postbuild ...

Option Explicit

Const MSI_FILE = "myfile.msi"


Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & myproperty & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & myproperty & "')")
view.Execute


Set database = Nothing
Set installer = Nothing
Set view = Nothing

Für weitere Informationen besuchen Sie das Windows Installer SDK (Teil der Windows SDK ), gibt es eine Reihe von beispiel~~POS=TRUNC, die Sie von der Kommandozeile können Sie verschiedene MSI Manipulationsaufgaben tun, zum Beispiel WiRunSQL.vbs können Sie beliebige SQL gegen einen MSI auszuführen.

Andere Tipps

c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty

Für weitere Informationen geben Sie in der Kommandozeile msiexec.

EDIT: oder die MSI-Datei ändern sich von SQL-Anweisungen und die Eigenschaft in der Eigenschaftstabelle zu aktualisieren: http://msdn.microsoft.com/en-us/ Bibliothek / aa372021 (VS.85) ASPX- http://msdn.microsoft.com/en-us/ library / aa368568 (VS.85) aspx

Dies ist hinzuzufügen ‚s Antwort auf '09 zu @saschabeaumont. Derzeit verwenden dotNet 4.0

Option Explicit

Const MSI_FILE = "myFilePath.msi"
Const PROPERTY_STRING_Value = "FooBar"

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & PROPERTY_STRING_Value & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & PROPERTY_STRING_Value & "')")

view.Execute()
database.Commit()

Set database = Nothing
Set installer = Nothing
Set view = Nothing
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top