Класс ProductInstallation инкапсулирует функцию MsiGetProductInfo , найденную в Msi.dll.Поскольку эта функция не предоставляет UpgradeCode, она также не выполняет ProductInstallation.
В ProductInstallation есть член InstallSource (эквивалент INSTALLPROPERTY_INSTALLSOURCE), и вы можете использовать его для создания класса InstallPackage и доступа к его аксессору свойств.
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, чтобы выбрать значение UpgradeCode из таблицы свойств.