0


我的 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);

还返回默认路径。

4

1 回答 1

1

发生这种情况是因为您直接从 MSI 包中读取值。您需要在安装过程中使用带有自定义操作的 MsiGetProperty API 方法获取属性值。链接的示例用于执行串行验证的自定义操作,您感兴趣的只是您定义自定义操作的方式以及如何获取值,其余代码您不需要

于 2013-10-23T06:46:11.580 回答