什么是.NET的Environment.SpecialFolder.ApplicationData的WiX等效?

Dav*_*vy8 27 installer wix special-folders

我需要在Environment.SpecialFolder.ApplicationData文件夹中安装一个文件,该文件夹在XP和Vista之间有所不同.是否有内置的方法来引用WiX中的正确文件夹,或者我是否必须使用OS的条件检查并手动执行?

如果我必须执行后者,如何在Vista中引用当前Windows用户的目录?

Pav*_*uva 50

使用ID设置为AppDataFolder的 Directory元素:

<Directory Id="AppDataFolder">
  <Directory Id="MyAppFolder" Name="My">
    <Component Id="MyComponent">
      <File Source="Files\test1.txt" />
    </Component>
  </Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)

这将导致test1.txt安装到Windows 7上的C:\ Users\username\AppData\Roaming\My和Windows XP上的C:\ Documents and Settings\username\Application Data\My.

MSDN具有可用于引用特殊文件夹的属性列表.

  • 不幸的是,你得到一个_"错误LGHT0204:ICE38:组件MyComponent安装到用户配置文件.它必须使用HKCU下的注册表项作为其KeyPath,而不是文件."_,所以你必须添加一个RegistryValue作为KeyPath的零件.我希望我能完全摆脱文件. (5认同)
  • 注意,这里可以省略`Name ="AppDataFolder"属性.那里只需要Id属性.此外,您可以省略组件`Guid`; wix现在会自动生成一个稳定的Guid.最后,您可以省略`File`元素上的`Id`,`Name`和`KeyPath`属性.默认情况下,`Id`和`Name`将基于`Source`具有这些值,并且该文件将自动成为组件的keypath,因为该组件不包含任何其他内容. (3认同)