我有wix安装程序使用<Environment />
元素更新环境变量。
环境变量值在注册表中更新。但是当我尝试打开Powershell时,除非我重启我的电脑,否则它看不到任何变化。
有没有人对为什么/如何以及如何避免重启有任何想法。 提前致谢, nomail
更新:我发现为什么会这样。事实证明会话变量在重新启动时更新或者如果发送了系统广播消息。 发送广播消息
SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");
另一种发送消息的脏方法是使用SETX
命令将新值写入环境变量并更新会话信息
SETX something_that_is_not_important value_that_is_not_important
请注意,您仍然必须关闭并打开CommandLine或PowerShell控制台
答案 0 :(得分:2)
这几乎可以肯定是因为WIX文件的<WriteEnvironmentStrings>
部分缺少<InstallExecuteSequence>
元素。该自定义操作负责发送广播WM_SETTINGSCHANGE消息。
这不是WIX中的错误,而是一个记录不完整的要求。要有效地使用WIX,您还必须了解Windows Installer数据库参考文档,而不仅仅是XML。在Environment Table上的MSDN主题中,描述了调用WriteEnvironmentStrings和RemoveEnvironmentStrings自定义操作的需要,但是对于没有本机MSI背景的人来说可能是陌生的术语。
答案 1 :(得分:1)
似乎是一个特定的wix问题,请参阅底部的评论:this page