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

2023-11-25

有没有办法读取里面的属性MSI file?

例如,给定一个名为测试包.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");

Using Orca如果可以通过编程实现的话,这是一个不错的选择。然后我可以用它来生成自动发行说明。也在卸载程序中。


您可以使用用于与 MSI 配合使用的基于 COM 的 API,然后做类似的事情

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式读取 MSI 文件内的属性? 的相关文章

随机推荐