如何在visual studio 2010中为构建时生成的.msi添加自定义属性。 .msi文件应具有名为“BUILDARCHITECTURE”的属性。如果不困难,当我更改构建平台时,此属性应自动更改为x64或x86。 如果这不可能,我可以将其硬编码到x86(它将部署在32位机器上)。
在Orca中,我可以直接进入属性表,然后右键单击并添加行,它就可以了。 但我需要在VS2010的构建时自动添加它。
最好的问候
答案 0 :(得分:0)
您可以通过构建后步骤来完成,我将从Windows Kit SDK开始使用WiRunSql.vbs。它是一个脚本,它使用SQL语句来更新MSI文件。你想要一个类似SQL的东西:
INSERT INTO `Property` (`Property`.`Property`, `Property`.`Value`) VALUES ('BUILDARCITECTURE', 'whatever')
但为什么你需要呢? MSI通过VersionNT64属性了解其架构,因此在MSI中您只需使用它,或将其传递给您的自定义操作或其他任何操作。
从MSI外部,您可以从摘要信息流模板属性中获取体系结构,如此dumb 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
答案 1 :(得分:0)
经过一些研究后,我采用了类似Phil的方法。 意思是我添加了一个post build事件:
set msiFile=$(OutDir)\setup.msi
if "$(Configuration)" == "Release" (
wscript $(SolutionDir)\..\Build\AddCustomProperty.vbs %msiFile%
VBS脚本:
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
该脚本取自:Need a way to add one property to the msi properties table in setup project in VS2010