Powershell环境变量未更新

时间:2013-01-15 06:45:33

标签: powershell

我有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控制台

2 个答案:

答案 0 :(得分:2)

这几乎可以肯定是因为WIX文件的<WriteEnvironmentStrings>部分缺少<InstallExecuteSequence>元素。该自定义操作负责发送广播WM_SETTINGSCHANGE消息。

这不是WIX中的错误,而是一个记录不完整的要求。要有效地使用WIX,您还必须了解Windows Installer数据库参考文档,而不仅仅是XML。在Environment Table上的MSDN主题中,描述了调用WriteEnvironmentStrings和RemoveEnvironmentStrings自定义操作的需要,但是对于没有本机MSI背景的人来说可能是陌生的术语。

显示此内容的文章位于http://blogs.technet.com/b/alexshev/archive/2008/03/28/from-msi-to-wix-part-13-installable-items-environment-variable.aspx

答案 1 :(得分:1)

似乎是一个特定的wix问题,请参阅底部的评论:this page