我正在尝试利用WiX库为我正在进行的项目进行一些机器产品分析。我为什么在标题中没有出现这个问题而感到头疼?
有没有办法从我缺少的WiX库中获取此信息?我知道如何使用msi.dll互操作,但想尝试从一个库中做所有事情。对我来说,似乎很奇怪,MSI包的这个关键部分缺失了。
WiX版本为3.5.2519.0
答案 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值。