安装程序更改PATH变量,更改不会显示在Command Shell中
时间:2020-03-05 18:46:39 来源:igfitidea点击:
我向安装程序中添加了一个自定义安装操作,以将我的安装目录之一添加到System PATH环境变量中。运行安装程序后,PATH变量会反映更改(当我通过"控制面板::系统"小程序访问它时),但是当我启动新的命令外壳程序时,PATH变量不会反映更改。有什么我做不到的原因导致的吗?
解决方案
回答
我们如何启动命令外壳程序?使用TaskManager?
如果我没有记错的话,我怀疑我们可能是从资源管理器启动它,这可能意味着我们正在继承父进程(在本例中为Windows资源管理器)PATH变量。由于是在安装程序运行之前设置的,因此我们会看到旧值。
不确定是否有帮助...
回答
我认为这取决于我们如何启动新的Command Shell。例如,当我们在"系统属性"下更改PATH环境变量时,只有打开新的"命令"提示符后,更改才会反映出来。我认为,当我们启动一个新的" cmd"进程时(例如,从"运行"对话框中),我们会获得所有环境变量的新副本,但是如果我们以另一种方式启动命令提示符,则不会。
对于通过这样的脚本完成的操作,我们可能需要重新启动才能注意到更改。
回答
http://support.microsoft.com/kb/310519指出,对于系统环境变量(PATH是其中的一个),需要重新启动,尽管我感觉注销然后再登录可能就足够了。
回答
我们如何添加环境变量?
无需使用任何外部工具,我们可以将其添加到注册表中。然后,我们对打开新命令窗口的测试将反映更改。
回答
为什么要为此使用CustomAction? Windows Installer支持本地修改环境变量。另外,我认为Windows Installer会在环境变量更改时发送一条广播消息来更新系统。这可能意味着我们不需要重新启动...但是自从我尝试使用YMMV以来已经有一段时间了。