使用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文件夹吗?
提前感谢您的帮助!
答案 0 :(得分:3)
通常,最好使用APIs从操作系统而不是注册表获取信息。 WiX创建了OSInfo custom action,为许多尚未set by Windows Installer的特殊文件夹设置了属性。
你想要的是WIX_DIR_COMMON_DOCUMENTS
。要使用它,请参考WixUtilExtension
扩展程序并使用
<PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />