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

标签 wix installation windows-installer dtf

有没有办法读取 MSI 中的属性?文件?
例如,给定一个名为 Testpackage.msi 的 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

关于wix - 如何以编程方式读取 MSI 文件中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/298841/

相关文章:

Wix 创建一个只读的应用程序数据目录

wix - 升级 MSI 中包含的内容

c++ - 分发使用 JNI 的应用程序的最佳方式

.net - 具有 32/64 位驱动程序的单个 32 位 MSI

wix - 使用 Wix Bootstrapper 创建 msi

delphi - 如何使用Delphi 7构建安装程序?

linux - 如何在linux下安装adobe air sdk?

windows - 在 Windows 2012 R2 上运行时,如何让 MSI 返回正确的 VersionNT 值?

windows - 在没有 GUI 或 msi 安装程序的情况下手动创建 msix 包

wix - 在MSI卸载过程中如何删除文件?