我想在安装之前从一个msi文件中获取产品代码。 我需要它来删除其他版本的产品,如果它已经安装在我的电脑上。 我的意思是我想防止错误1638(“本产品的另一个版本已经存在。。。”) 并在我的代码中手动删除它。 我用的是C++。 所以我想从msi文件中获取即将安装和使用该产品代码的产品代码,删除现有版本的产品并安装一个新的。 但是当我试图打开一个msi文件以获得它的句柄时,使用
MSIopenPackage(msiPackagePath,&d_handle);
我得到一个错误1638。 所以我不能打开一个msi文件,也不能从中获取产品代码。 我的问题:不使用msiopenpackage
打开msi文件,是否可能获得产品代码? 提前谢谢你!
我的同事刚刚解决了一个问题。 我们使用了一个函数MSIopenPackageEx
并传递了一个标志MSIopenPackageFlags_IgnoreMachineSte
来忽略计算机状态并返回句柄。