微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSIS 和 PATH 环境变量

如何解决NSIS 和 PATH 环境变量

在我的安装程序中,我嵌入了 cmake 和其他安装程序。 在安装过程中,用户通过我的安装程序安装 cmake 并将 cmake 添加到路径中。

此时如果我打开命令提示符并输入cmake,它实际上已被识别。

但在安装程序中我运行以下命令:

ReadEnvStr $1 %COMSPEC%
ExecWait '"$1" /c cmake XXX'

但它告诉我无法识别 cmake。这怎么可能?我之前只是在 c:/windows/system32/cmd.exe 中打开一个命令提示符并键入 cmake 并被识别,所以为什么这段代码不起作用?

这就像路径 env 变量没有以某种方式更新。当然,如果我重新启动它可以正常工作,但我想避免它。

感谢您的帮助。

解决方法

环境变量默认继承自其父进程。 Explorer.exe 是唯一侦听环境变化的应用程序,因此如果您从开始菜单启动一个新进程,它将在更新后的环境中运行。

您可以更新安装程序进程环境,它将被传递给 ExecWait 子进程:

System::Call 'kernel32::SetEnvironmentVariable(t "foo",t "bar")'

在处理长路径字符串时,您确实应该使用 EnvVar plug-in

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。