2014-11-06 162 views
0

如何在構建時生成的.msi的Visual Studio 2010中添加自定義屬性。 .msi文件應該有一個名爲「BUILDARCHITECTURE」的屬性。如果沒有困難,當我更改構建平臺時,此屬性應該自動更改爲x64或x86。 如果這是不可能的,我可以將它硬編碼到x86(它將被部署在32位機器上)。爲.msi安裝程序添加Visual Studio 2010定製屬性

在Orca我可以去屬性表,然後只需右鍵單擊並添加行,它的工作原理。 但是我需要在VS2010中自動添加它。

問候

回答

0

您可以用生成後步驟做到這一點,我會從Windows的SDK工具包開始WiRunSql.vbs。這是一個採用SQL語句更新MSI文件的腳本。你想要一個像這樣的SQL:

INSERT INTO `Property` (`Property`.`Property`, `Property`.`Value`) VALUES ('BUILDARCITECTURE', 'whatever') 

但是你爲什麼需要它呢? MSI通過VersionNT64屬性知道它的體系結構,因此您可以在MSI中使用它,或者將它傳遞給您的自定義動作或任何其他內容。

從MSI外,你可以從彙總信息流模板性質的架構,在這個愚蠢的VBScript:

Option Explicit 

Dim installer 
Set installer = CreateObject("WindowsInstaller.Installer") 
Dim sumInfo : Set sumInfo = installer.SummaryInformation("another.msi", 0) 
dim someproperty 
someproperty = suminfo.Property(7) 

msgbox someproperty 
set suminfo = Nothing 
set installer=nothing 
+0

你打算使用的代碼片段,而不是代碼塊:

set o_installer = CreateObject("WindowsInstaller.Installer") set o_database = o_Installer.OpenDatabase("path_to_your_msi", 1) s_SQL = "INSERT INTO Property (Property, Value) Values('<CustomProperty>', '<custom_property_value>')" Set o_MSIView = o_DataBase.OpenView(s_SQL) o_MSIView.Execute o_DataBase.Commit 

劇本是取自? – 2014-11-06 18:31:18

+0

我想要一些東西來保存啄痕,如果代碼塊這樣做,很酷。 – PhilDW 2014-11-06 18:32:22

相關問題