使用WiX RegistrySearch检索公共文档路径失败

时间:2013-07-06 19:50:07

标签: wix windows-installer

使用RegistrySearch查找公共文档文件夹的路径(例如“C:\ Users \ Public \ Documents \”)时,它适用于大多数计算机,但在某些计算机上却失败了。我不知道它为什么失败或者可能设置了什么安全设置。

以下是注册表搜索的代码:

<Property Id="COMMONDOCUMENTSPATH">
<RegistrySearch Id="RegSearchCommonDoc" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Name="Common Documents" Type="directory" />
</Property>

在我的开发者电脑上我得到了注册表查找的内容,msi日志文件包含以下几行:

Action start 14:17:04: AppSearch.
AppSearch: Property: COMMONDOCUMENTSPATH, Signature: RegSearchCommonDoc
MSI (c) (E8:70) [14:17:04:157]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (E8:70) [14:17:04:157]: PROPERTY CHANGE: Adding COMMONDOCUMENTSPATH property. Its value is 'C:\Users\Public\Documents\'.
Action ended 14:17:04: AppSearch. Return value 1.

在客户端PC上,注册表查找失败,msi日志文件如下所示:

    Action start 12:45:49: AppSearch.
AppSearch: Property: COMMONDOCUMENTSPATH, Signature: RegSearchCommonDoc
MSI (c) (8C:80) [12:45:49:120]: Note: 1: 2262 2: Signature 3: -2147287038 
Action ended 12:45:49: AppSearch. Return value 1.

客户PC是Windows 7 Enterprise(x64)系统。我的系统是Windows 7 Pro(x64)。 MSI包是Intel(x86)。

客户的用户拥有其计算机上的管理员权限。这里是msi日志的摘录:

MSI (c) (8C:80) [12:45:49:020]: Product installation will be elevated because user is admin and product is being installed per-machine.
MSI (c) (8C:80) [12:45:49:020]: Running product '{D7C625A6-20E0-48EF-A372-19569FF9BFBF}' with elevated privileges: Product is assigned.

如何解决此问题的任何想法或建议?或者有另一种方法来确定Common Documents文件夹吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

通常,最好使用APIs从操作系统而不是注册表获取信息。 WiX创建了OSInfo custom action,为许多尚未set by Windows Installer的特殊文件夹设置了属性。

你想要的是WIX_DIR_COMMON_DOCUMENTS。要使用它,请参考WixUtilExtension扩展程序并使用

进行设置
<PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />