2017-12-06 9 views
2

私が作成したアプリケーションのInno Setupを使用してWindowsインストーラを作成しました。インストーラの一環として、いくつかのサードパーティ製アプリケーションのインストールに続いてバッチファイルをインストールし、npmコマンド実行可能プログラムまたはバッチファイルを実行しました。Inno Setup - サブインストーラでPATHに追加されたnpmプログラムが、インストーラから実行されるバッチファイルで認識されない

すべてが大丈夫インストールされますが、バッチファイルの実行時に、私はメッセージを取得

「NPMは、」は、内部コマンドまたは外部コマンドのコマンドは実行されません

となるように認識されていません アプリは開かれません。しかし、すべてをそのまま残し、インストール後にバッチファイルをもう一度やり直すと、コマンドが実行され、アプリケーションは正常に動作します。バッチファイルをインストールの一部として適切に実行させるにはどうすればよいですか?

Inno Setupの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 
+0

ファイル名を「{tmp} \ python-3.5.4-amd64-webinstall.exe」にしました。フラグ:waituntilterminated もインストールされました – Deef

+1

「NPM」フォルダがどのフォルダに入っているのかわかりません。完全なパスを与える必要があります。 – Squashman

答えて

0

NPMがないので、私は、あなたのためにPATHを変更しないインストーラを推測していますコマンドとしてエイリアス化されています。実行可能ファイルの絶対パスを使用してnpmを呼び出すと、期待どおりに動作するはずです。

+0

Squshmanとposit labsに感謝します。 – Deef

+0

インストーラが 'PATH'を変更していない場合、インストーラが完了した後、バッチファイルはどのように動作しますか? –

+0

PATHを変更する必要がありますか?私はそうは思わない。インストーラが尋ねることなく私のノードのバージョンを上書きするなら、私はとても幸せではないでしょう。 –

0

インストーラの完了後にバッチファイルが機能する場合、サブインストーラの1つがを環境変数PATHに追加する可能性があります。しかし、環境への変更は、既存のプロセス(Inno Setupインストーラ自体を含む)とその子プロセス(Inno Setupインストーラから実行されたバッチファイルを含む)には自動的には適用されません。

バッチファイルを実行する前に、環境を明示的にリロードする必要があります。 RefreshEnvironment実装がで示され

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


Environment variable not recognized [not available] for [Run] programs in Inno Setup


それとも、当然のことながら、バッチファイルに絶対パスを使用することができます。しかし、そのためには、インストール場所に基づいてオンザフライでバッチファイルを生成する必要があります。

npmディレクトリからバッチファイルを実行してください。それにはWorkingDir parameterを使用してください。

関連する問題