Inno设置-NPM程序由SubInstaller添加到路径中,在安装程序执行的批处理文件中未识别



我已经使用Inno设置为我制作的应用程序创建了一个Windows安装程序。作为安装程序的一部分,我包括安装一些第三方应用程序,然后是批处理文件,以执行许多npm命令可操作程序或批处理文件。

一切都可以安装,但是当批处理文件运行时,我会收到消息

'npm'未被认为是内部或外部命令

命令不运行,因此该应用不会打开。但是,如果我将所有内容保留原样,并且在安装后再次重新运行批处理文件,则命令执行并且应用程序正常。如何使批处理文件作为安装的一部分正确运行?

Inno设置Run

[Run]
Filename: "{tmp}Git-2.15.0-64-bit.exe";  Flags: waituntilterminated
Filename: "{tmp}rubyinstaller-2.3.3-x64.exe";  Flags: waituntilterminated
Filename: "{tmp}visualcppbuildtools_full.exe";  Flags: waituntilterminated
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}mongodb-win32-x86_64-2008plus-ssl-3.4.10-signed.msi"; WorkingDir: {tmp}; Flags: waituntilterminated
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}node-v6.11.0-x64.msi"; WorkingDir: {tmp}; Flags: waituntilterminated
Filename: "{tmp}setup.bat";
Filename: "{app}{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: shellexec postinstall skipifsilent

批处理文件

cd C:/Users/%USERNAME%/Documents/myApp/api/
call npm install -g bower
call npm install -g grunt
call npm install -g grunt-cli
call npm config set msvs_version 2015 -global
call npm install bcrypt -save
call npm install
cd ../admin/
call npm install -g bower
call npm install -g grunt
call npm install -g grunt-cli
echo 1 | call gem install compass
call bower install
call npm install 

如果批处理文件在安装程序完成后起作用,则子安装程序之一可能会将npm添加到PATH环境变量。但是,对环境的更改并不适用于现有过程(包括Inno设置安装程序本身)及其子流程(其中包括您从Inno设置安装程序执行的批处理文件),仅适用于新过程。

您必须在运行批处理文件之前明确重新加载环境。

[Run]
Filename: "{tmp}setup.bat"; BeforeInstall: RefreshEnvironment

其中 RefreshEnvironment实现显示在:
中环境变量在Inno设置中未识别[不可用]

中的[运行]程序

,或者您当然可以在批处理文件中使用绝对路径。但为此,您必须根据安装位置即时生成批处理文件。

或从npm目录运行批处理文件。为此使用WorkingDir参数。

我猜想安装程序不会为您修改路径,因此NPM不会被称为命令。如果您使用可执行文件的绝对路径调用NPM,则应按预期工作。

相关内容

  • 没有找到相关文章

最新更新