Windows 7 |ProgramFilesFolder |计算结果为AppData\Local\Programs\

Windows 7 |ProgramFilesFolder |计算结果为AppData\Local\Programs\,windows-7,wix,uac,Windows 7,Wix,Uac,我正在使用WixUI\u-Advanced实现一个支持WiX中每个用户和每台机器安装的包。当我为此计算机上的所有用户选择“安装”时,[ProgamFilesFolder]计算结果为AppData\Local\Programs,而不是C:\Program Files 请注意,UAC提升提示仅在选择目标目录后出现,我认为这是由于UAC虚拟化导致的问题 如何获得真正的程序文件目录? 另一个解决方法是-更改对话框顺序,在功能选择对话框之后显示目录选择对话框,该对话框的“下一步”按钮调用UAC提升提示。

我正在使用
WixUI\u-Advanced
实现一个支持WiX中每个用户和每台机器安装的包。当我为此计算机上的所有用户选择“安装”时,
[ProgamFilesFolder]
计算结果为
AppData\Local\Programs
,而不是
C:\Program Files

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

如何获得真正的程序文件目录?
另一个解决方法是-更改对话框顺序,在功能选择对话框之后显示目录选择对话框,该对话框的“下一步”按钮调用UAC提升提示。
或在对目标位置评估
[ProgramFilesFolder]
之前提示UAC提升,但仅当用户选择每台机器安装时

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


更新II:现在我正在使用
ProgramFilesDir
的注册表值:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
WixUI\U Advanced
依赖于
Id='APPLICATIONFOLDER'
目录
元素来配置应用程序的位置安装。然后使用
ALLUSERS
属性配置安装到正确位置的路径。帮助主题中详细介绍了其中的很多内容。所有这些都不会更改
ProgramFilesFolder
的值


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

您可以使用.dontnetinstaller工具将msi转换为exe,然后在执行安装程序后,UAC提示将始终出现。如果用户选择每台机器安装,则应出现否定-UAC提示。是。UAC只有在用户对我正在使用的服务器没有管理员权限时才会出现。是的,这会打乱WixUI_Advanced的设计。我建议将
WixAppFolder
属性设置为文档所述,以控制默认值。[%ProgramFiles]是一个问题-在x64上安装x86时。我不知道为什么-我猜是UAC可视化-[ProgramFilesFolder]=
AppData\Local\Programs
。@ujwalsingh ProgramFilesFolder和ProgramFiles64 Folder在用户填写InstallScopeDlg之前具有无效(每个用户)值,因此无法使用它们配置AdvancedDialogSet的默认值-其操作发生得太早。