MSI获取已安装的属性值C ++

时间:2013-10-22 10:21:40

标签: windows-installer


我在MSI设置中有属性MYPATH,我正在为此路径安装一些组件。现在我想获得安装组件的路径。我使用以下代码:

INSTALLUILEVEL pervousUILevel = MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
MSIHANDLE handle = NULL;
MsiOpenProduct(productCode,&handle);
wchar_t myPath[2048];
DWORD dwBuffer = 2048;
MsiGetProductProperty(handle, L"MYPATH", myPath, &dwBuffer); 
MsiCloseHandle(handle);
MsiSetInternalUI(pervousUILevel, NULL);

但是我仍然得到默认值“C:\ MyDefaultPath”而不是“C:\我在安装过程中指定的路径”。我究竟做错了什么?
谢谢你
编辑:
我发现了代码:

wchar_t myPath[4096];
DWORD isBuffer = 4096;
MsiGetComponentPath(productCode, L"{component-guid}", myPath, &isBuffer);

还返回默认路径。

1 个答案:

答案 0 :(得分:1)

这是因为您直接从MSI包读取值。您需要在安装过程中使用MsiGetProperty API methodm with a custom action.获取属性值。链接的示例用于执行串行验证的自定义操作,您对此感兴趣的只是定义自定义操作的方式以及如何获取值,你不需要的其余代码