创建一个InstallScript脚本的InstallShield安装程序,在脚本代码中更新环境变量,更新后发现注册表和计算机->属性->高级->环境变量中的变量值都更新了,但是使用命令行(WIN+R,CMD)始终获取不到设置的环境变量。
出现这个问题的原因是脚本代码中更新环境变量时没有给windows系统发送更新的通知事件。虽然网上有很多该问题的解决办法,但是我做了很多遍都不正确。最后在InstallShield自带的帮助文档中(搜索“Environment Variables”,然后在See Also中有个“Environment Variables Example”,点击进去),然后直接拷贝到你的代码中即可。需要注意:
1、pEnv的类型是WPOINTER,不是很多网上说的PONITER;
2、两个宏定义的HWND_BROADCAST和WM_WININICHANGE的值;
3、还是直接拷贝过去吧……
修改环境变量和卸载时删除环境变量的部分可以参考:
http://blog.csdn.net/amy0428/article/details/6579264 ,但是在修改和删除的最后记得加上本文中所提到的通知。另外,使用CurrentControlSet,不要使用ControlSet001、ControlSet002这种。具体的windows控件集的区别可以参考:http://blog.csdn.net/xujianlane/article/details/1861929