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