Microsoft.Deployment.WindowsInstaller.ProductInstallation没有UpgradeCode属性

时间:2012-01-19 20:05:08

标签: wix windows-installer wix3.5

我正在尝试利用WiX库为我正在进行的项目进行一些机器产品分析。我为什么在标题中没有出现这个问题而感到头疼?

有没有办法从我缺少的WiX库中获取此信息?我知道如何使用msi.dll互操作,但想尝试从一个库中做所有事情。对我来说,似乎很奇怪,MSI包的这个关键部分缺失了。

WiX版本为3.5.2519.0

1 个答案:

答案 0 :(得分:3)

ProductInstallation类封装了Msi.dll中的MsiGetProductInfo函数。由于此函数不公开UpgradeCode,因此也不会公开ProductInstallation。

ProductInstallation确实有InstallSource成员(INSTALLPROPERTY_INSTALLSOURCE equiv),您可以使用它来构造InstallPackage类并访问它的Property访问器。

static public string GetPackageUpgradeCode(string packagePath)
{
    string upgradeCode = string.Empty;
    using (InstallPackage package = new InstallPackage(packagePath, DatabaseOpenMode.ReadOnly))
    {
        upgradeCode = package.Property["UpgradeCode"];
    }
    return upgradeCode;
}

如果您确实不想添加其他引用,可以将其作为数据库打开,并使用ExecuteScalar成员从Property表中选择UpgradeCode值。