【问题标题】:Is there WiX pre-defined variable for "C:\Users\Public" folder?“C:\Users\Public”文件夹是否有 WiX 预定义变量?
【发布时间】:2013-06-27 22:25:57
【问题描述】:

我想将一些文件安装到位于“C:\Users\Public\MyApp”的文件夹中。 WiX 中是否有预定义变量在 Windows 7 中解析为“C:\Users\Public”,在其他版本的 Windows 中解析为等效位置?

【问题讨论】:

  • -1 表示不使用通用应用程序数据。

标签: wix


【解决方案1】:

没有。 WiX 在安装项目中只定义了这些变量:

sys.CURRENTDIR
sys.SOURCEFILEPATH
sys.SOURCEFILEDIR
sys.PLATFORM

并且 WiX 变量仅在构建安装包时使用。

您可能是指 Windows Installer 属性。它们取决于 Windows Installer 版本,列出了 here。注意:在阅读所需版本的 Windows Installer 时,文档列出了可以在特定操作系统版本上实际安装的最低版本,这对您不利。支持属性的最低版本将是其中最低的。

答案仍然是“不”。事实上,甚至没有 CSIDL API 来定位该文件夹。从 Windows Vista 开始,有一个 FOLDERID API,尽管 Windows Installer 不使用它。

重点是,这不是安装文件的所在!请考虑 [CommonAppDataFolder]。

【讨论】:

  • 谢谢汤姆,我自己想通了。我同意你的观点,“C:\Users\Public\MyApp”不是安装文件应该去的地方。但我不是在组织中做出决定的人。
【解决方案2】:

这个问题解决如下:

<Directory Id="UserPublicMyAppFolder" Name="MineSched">
</Directory>

<SetDirectory Id="UserPublicMyAppFolder" Value="C:\Users\Public\MyApp" />

【讨论】:

  • 为什么要硬编码 C:\Users\Public?如果用户的 Windows 语言环境不是英语会怎样?
  • 好点。这不是我的决定。我试图说服 PA [CommonAppDataFolder] 是一个更好的选择,但决定是由更高的管理层做出的。我会提出这个担忧。谢谢。
  • @ta.speot.is 来自经验,它仍然可以工作。至少在语言环境是希伯来语时它可以工作
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多