installer – 如何以编程方式读取MSI文件中的属性?

有没有办法读取msi文件中的属性

例如,给定一个msi文件名Testpackage.msi

我需要找到

productName
PackageCode
version

我将使用它与WMI卸载

string objPath = string.Format("Win32_Product.IdentifyingNumber='{0}',Name='{1}',Version='{2}'","{AC9C1263-2BA8-4863-BE18-01232375CE42}","testproduct","10.0.0.0");

更新:
使用Orca是一个很好的选择,如果这可以以编程方式实现,那么我可以使用它来生成自动发行说明.并且在卸载程序中也是如此.

您可以使用 COM-based API for working with MSI,并执行类似的操作
Function GetVersion(ByVal msiName)

    Const msiOpenDatabaseModeReadOnly = 0
    Dim msi,db,view

    Set msi = CreateObject("WindowsInstaller.Installer")
    Set db = msi.OpenDataBase(msiName,msiOpenDatabaseModeReadOnly)
    Set view = db.OpenView("SELECT `Value` FROM `Property` WHERE `Property` = 'ProductVersion'")
    Call view.Execute()

    GetVersion = view.Fetch().StringData(1)

End Function

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...