【问题标题】:|ProgramFilesFolder| evaluates to AppData\Local\Programs\|程序文件文件夹|评估为 AppData\Local\Programs\
【发布时间】:2013-04-17 00:48:48
【问题描述】:

我正在使用WixUI_Advanced 在 WiX 中实现支持每用户和每机器安装的单个包。当我选择为这台机器上的所有用户安装 - [ProgamFilesFolder] 评估为AppData\Local\Programs 而不是C:\Program Files

请注意,仅在选择目标目录后才会出现 UAC 提升提示 - 我认为这是由于 UAC 虚拟化而导致的。

如何获得真正的 Program Files 目录?
另一种解决方法可能是 - 更改对话框顺序以在功能选择对话框之后显示目录选择对话框,其下一个按钮调用 UAC 提升提示。
或者在评估 [ProgramFilesFolder] 的目标位置之前提示 UAC 提升,但前提是用户选择了每台机器安装。

更新:目前我使用:[%ProgramFiles] -- 环境变量(在 x64 上安装 x86 时中断)

更新二:现在我使用ProgramFilesDir的注册表值在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

【问题讨论】:

  • 您可以使用 .dontnetinstaller 工具将 msi 转换为 exe,然后在您执行设置时总是会出现 UAC 提示。
  • 否定 - 只有当用户选择按机器安装时,UAC 提示才会出现。
  • 是的。只有当用户在服务器上没有管理员权限时,UAC 才会出现

标签: windows-7 wix uac


【解决方案1】:

WixUI_Advanced 依赖于带有Id='APPLICATIONFOLDER'Directory 元素来配置应用程序的安装位置。然后使用ALLUSERS 属性配置安装到正确位置的路径。 WixUI_Advanced Dialog Set 帮助主题中详细介绍了其中的很多内容。这些都不会改变ProgramFilesFolder 的值。

PS:[%ProgramFiles] 环境是访问ProgramFilesFolder 的不太可靠的方式。相反,您可以使用 [ProgramFilesFolder] 来获取 Windows 安装程序中的默认值。

【讨论】:

  • 我正在使用这个。
  • 是的,这会破坏 WixUI_Advanced 的设计。我建议将 WixAppFolder 属性设置为记录的来控制默认值。
  • [%ProgramFiles] 是个问题 - 在 x64 上安装 x86 时。
  • 我不知道为什么 - 我猜是 UAC 可视化 - [ProgramFilesFolder] = AppData\Local\Programs 对我来说。
  • @UjjwalSingh ProgramFilesFolder 和 ProgramFiles64Folder 在用户填写 InstallScopeDlg 之前具有无效(每个用户)值,因此无法使用它们来配置 AdvancedDialogSet 的默认值 - 它的操作发生得太早了。跨度>
猜你喜欢
  • 2019-08-27
  • 1970-01-01
  • 2018-01-09
  • 2011-03-19
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多