繁体   English   中英

为.msi安装程序添加Visual Studio 2010自定义属性

[英]Add Visual Studio 2010 custom property for .msi installer

如何在Visual Studio 2010中为在生成时生成的.msi添加自定义属性。 .msi文件应具有一个名为“ BUILDARCHITECTURE”的属性。 如果不难,当我更改构建平台时,应将此属性自动更改为x64或x86。 如果不可能,我可以将其硬编码为x86(它将部署在32位计算机上)。

在Orca中,我可以转到“属性表”,然后右键单击并添加行,它可以正常工作。 但是我需要在VS2010的构建时自动添加它。

最好的祝福

您可以通过构建后的步骤来完成它,而我将从Windows Kit 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

因此,经过一些研究,我采用了类似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

该脚本摘自: 需要一种在VS2010中的安装项目中向msi属性表添加一个属性的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM