使用WiX(Windows Installer XML)我创建了一个MSI安装程序,它将Word模板安装到用户Application Data文件夹中,例如在Windows XP上
C:\Documents and Settings\\Application Data\Microsoft\Templates
我正在从注册表中检索此文件夹的路径:
但是,某些在Windows Vista上安装MSI文件的用户收到错误,因为APPDIR属性为空.
APPDIR不是检索Application Data文件夹的正确方法吗?或者我必须考虑Vista上的另一个属性?
编辑:这只是WiX代码的简短版本,用于检索Word的模板文件夹.首先,我实际上检查用户是否具有由策略或HKCU\Software\Microsoft\Office\12.0\Common\General\UserTemplates定义的自定义模板文件夹.但是,如果没有设置这些,则回退是使用由上面的代码检索的%APPDATA%\ Microsoft\Templates下的默认位置.
您应该使用[AppDataFolder].我在Windows安装程序属性参考中找不到任何关于"appdir"的内容.
编辑问题编辑后:在外壳文件夹键(大博文的BTW)你来自哪里,让你的APPDIR值是一个非常古老和过时的方式来获得在系统文件夹.它只是为了向后兼容,你不应该依赖它.特别是如果你住在Raymond Chen附近.
编辑2:因为真正的问题是"如何找到用户的单词模板文件夹"...单词模板文件夹并不总是
[AppDataFolder]\Microsoft\Templates
这是因为可以在工具 - 选项 - 文件位置 - 用户模板下配置模板文件夹.具有讽刺意味的是,如果我们要检测到这一点,我们将回到搜索注册表
但是,此注册表值通常不存在,并且您无法在此处指定包含[AppDataFolder]的默认值(我尝试过).
相反,我会尝试定义两个组件,一个安装到USERTEMPLATES,另一个安装到[AppData]\Microsoft\Templates.然后,您可以使用Condition元素来测试USERTEMPLATES的存在,并只安装正确的元素.