我有一個MSI安裝程序,我需要從命令行添加或修改短文本屬性。如何從命令行添加/更新MSI中的屬性?
這必須在安裝程序構建完成後完成;我無法首先修改生成安裝程序的進程。它也必須從腳本無頭執行。
當我說「屬性」時,它可能是一個MSI屬性,在安裝時被寫入註冊表的值,或任何其他機制,它可以在運行時將這個簡短的自定義文本放入已安裝的應用程序中。
我有一個MSI安裝程序,我需要從命令行添加或修改短文本屬性。如何從命令行添加/更新MSI中的屬性?
這必須在安裝程序構建完成後完成;我無法首先修改生成安裝程序的進程。它也必須從腳本無頭執行。
當我說「屬性」時,它可能是一個MSI屬性,在安裝時被寫入註冊表的值,或任何其他機制,它可以在運行時將這個簡短的自定義文本放入已安裝的應用程序中。
例VBScript中,你可以用它來更新(或增加)的屬性後建立...
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
欲瞭解更多信息,請查閱Windows安裝SDK(該Windows SDK的一部分),還有一堆示例腳本,您可以使用命令行,以執行各種操作MSI任務,例如WiRunSQL.vbs
可讓您針對MSI執行任意SQL。
c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty
有關更多信息,請在命令行中鍵入msiexec。
編輯:或使用SQL語句和更新屬性表中的屬性更改.msi文件本身: http://msdn.microsoft.com/en-us/library/aa372021(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa368568(VS.85).aspx
這是在'09添加到@saschabeaumont的答案。目前使用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
更改軟件包時,請勿忘記更新摘要信息流中的軟件包代碼。儘管即使您使用不同的值發佈多個.msi文件,更改屬性值也不太可能導致實際問題,但它仍然是您需要執行的操作。 – 2009-10-23 13:27:13
我只發現創建轉換時需要更新摘要信息,您需要更新所有更改的任何原因? – saschabeaumont 2009-10-23 23:47:41
http://msdn.microsoft.com/en-us/library/aa370568(VS.85).aspx – 2009-11-23 15:20:22