我正在开发一个安装程序,它可以自动安装Node.js,将节点应用程序提取到文件夹,然后通过npm install
进行安装。但是,安装程序始终需要运行两次才能使npm
正常工作。这是安装到Windows上。
在我的安装程序应用的生命周期内...
npm install
npm
不是有效命令我假设安装Node.js
会创建新的环境变量,但我的进程尚未获得这些新变量 - 直到重新启动进程。然后,第二次它可以看到那些变量。否则,在同一个过程中,它找不到npm
,因为它无法看到新的环境变量。至少这是我将问题缩小到的原因,也是解释为什么我总是要经常安装两次安装程序的原因。
背景:使用Inno Setup(Unicode)创建安装程序。我在Delphi中创建了一个应用程序,在安装完成时向用户显示一个界面,因为大多数原始安装程序只显示了一个空白的非响应页面,上面写着“准备安装......”。此Delphi应用程序在线程内执行实际的安装过程,该线程使用事件来更新用户可见的网格。此事件驱动的线程将每个安装步骤的进度报告回主表单,并显示响应的用户界面,显示安装过程的每个步骤及其状态。然后,此应用程序将退出代码返回给安装程序以进行进一步处理。
如果不是要求等待每个子流程并获得退出代码,这不是问题。但是,由于我需要这样做,Windows自然会将缓存的环境变量传递给每个子流程,仍然使它们无用。
如何强制我的应用程序查看自流程启动以来添加的新环境变量?
答案 0 :(得分:0)
不需要重新启动应用程序的解决方案是将完整路径传递到npm
程序文件文件夹中的nodejs
命令。这样你就不需要依赖Windows及其环境变量 - 它是一条直接的路线。记下您是否正在安装32位或64位版本的Node.js,并确保查看相应的文件夹......
C:\Program Files\nodejs\npm
C:\Program Files (x86)\nodejs\npm