Windows installer 按c+中的产品代码获取应用程序installdir+; 我有C++控制台应用程序,我想得到MSI安装的应用程序安装程序(实际安装软件的值)。我有应用程序产品代码 正确的方法是什么

Windows installer 按c+中的产品代码获取应用程序installdir+; 我有C++控制台应用程序,我想得到MSI安装的应用程序安装程序(实际安装软件的值)。我有应用程序产品代码 正确的方法是什么,windows-installer,Windows Installer,这段代码似乎工作得很好: wchar_t installDirPrev[4096]; DWORD isBuffer = 4096; MsiGetProductInfo(productCode, INSTALLPROPERTY_INSTALLLOCATION, installDirPrev, &isBuffer); MsiGetProductInfo,仅当安装程序具有将ARPSTALLLOCATION设置为实际安装文件夹的type 51自定义操作时,才显示该位置。不是所有人都这样 我看到

这段代码似乎工作得很好:

wchar_t installDirPrev[4096];
DWORD isBuffer = 4096;
MsiGetProductInfo(productCode, INSTALLPROPERTY_INSTALLLOCATION, installDirPrev, &isBuffer);

MsiGetProductInfo,仅当安装程序具有将ARPSTALLLOCATION设置为实际安装文件夹的type 51自定义操作时,才显示该位置。不是所有人都这样

我看到场景(在修补和/或升级后)将不再具有正确的安装位置值。感谢您的回复!那么,获取安装了msi的目录的可靠方法是什么呢?它是我的installshield制作的msi。如果作用域是一个msi,我会将安装记录在注册表值中并使用它。还有其他技术,如解析组件,但可能导致源解析发生。这样,您的应用程序就不必知道任何有关MSI API调用的信息。是的,请在新安装期间将安装位置INSTALLDIR写入注册表,以便始终可以读回。