NodeJSがNPMをすぐに見つけられないIExpressインストール後バッチ

NodeJSで作成した小さなスクリプトに依存関係をインストールするためにiExpressを使用しようとしています。

iExpressパッケージは、パッケージノードをインストールするだけです。

msiexec /i node.msi

次に、インストール後のバッチを実行して、Javascriptを%UserProfile%フォルダー内のフォルダーに配置します。

インストール後のバッチは、次のコマンドで実行されます。 cmd /c post_install.bat

バッチには、機能していない行があります。

npm install <dependency>

これは、MSIのインストール直後には機能しないようですが、.exeが2回実行され、NodeJSがインストールされたときに機能します。

したがって、何らかの理由で、MSIがバッチが終了するまでPATH変数を設定しないか、iExpressのインストール後のバッチに適切な環境変数が設定されません。

他の誰かがこの問題を経験しました、回避策または推奨事項はありますか?

インストール後を使用する代わりに、MSIのインストールとNPMの実行をインストールスクリプトに含める必要がありますか?

ご協力いただきありがとうございます。

モフィ

上の答えの理由で何が... 'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていませんか?どこを説明し、システムおよびユーザー環境変数がWindowsレジストリに保存され、どのようにアップデートすると、それらの上に作られています。また、すでに実行中のプロセスの環境変数を変更できるプロセスはなく、新しいプロセスはそれぞれ、親プロセスの環境変数の現在のリストを継承することも説明しています。

したがって、IExpressインストールプロセスを開始すると、このインストールプロセスは、通常はWindowsエクスプローラーである親プロセスから環境変数を継承しますが、wwwブラウザーやその他のアプリケーションにすることもできます。

IExpressのインストールプロセスの実行msiexec /i node.msiインストールのNode.jsを最も可能性が高いとは、追加または変更のシステムユーザー環境変数Windowsレジストリインチ ただし、マシン全体および現在のユーザーの永続的な保存環境変数に対するこれらの変更は、すでに実行されているIExpressインストールプロセスのローカル環境変数リストに自動的に引き継がれません

次にによって開始されたIExpressコマンドラインでインストール処理コマンド処理をcmd /c post_install.bat、Windowsで、現在のために設定した環境変数の新しいコピーを取得するIExpressで動作するようにインストールプロセスを。

したがって、永続的な保存システムユーザー環境変数、またはMSIEXECプロセスのローカル環境変数のWindowsレジストリで変更されNode.jsインストールプロセスは、バッチファイルを実行するWindowsコマンドプロセスには表示されませんpost_install.bat

ただしnpmpost_install.batによって実行されるバッチファイルは、Node.jsのインストールプロセス中にWindowsレジストリに保存されている環境変数によって異なります。そのため、バッチファイルを実行する前にローカル環境変数をシステム変数ユーザー環境変数(この順序で)で更新する必要がありnpmます。

これはpost_install.bat、次のコメント付きコードで拡張することで実行できます。

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem Set current directory to user's profile directory.
cd /D "%UserProfile%"

rem Make sure the environment variables used to build local PATH from
rem the PATH environment variables currently stored in Windows registry
rem do not already exist with unwanted values.
set "LocalPath="
set "SystemPath="
set "UserPath="

rem Get all system environment variables as currently stored in Windows
rem registry and set them in local environment with exception of system PATH.
for /F "skip=2 tokens=1,2*" %%A in ('%SystemRoot%\System32\reg.exe query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" 2^>nul') do (
    if /I "%%A" == "Path" (
        set "SystemPath=%%C"
    ) else if /I "%%B" == "REG_SZ" (
        set "%%A=%%C"
    ) else if /I "%%B" == "REG_EXPAND_SZ" (
        call set "%%A=%%C"
    )
)

rem Get all user environment variables as currently stored in Windows
rem registry and set them in local environment with exception of user PATH.
for /F "skip=2 tokens=1,2*" %%A in ('%SystemRoot%\System32\reg.exe query "HKEY_CURRENT_USER\Environment" 2^>nul') do (
    if /I "%%A" == "Path" (
        set "UserPath=%%C"
    ) else if /I "%%B" == "REG_SZ" (
        set "%%A=%%C"
    ) else if /I "%%B" == "REG_EXPAND_SZ" (
        call set "%%A=%%C"
    )
)

rem PATH can contain references to environment variables which can be
rem expanded only after having all environment variables except system
rem and user PATH already set in local environment. Now it is possible
rem to expand the environment variable references in system and user
rem PATH and concatenate them two one PATH set in local environment
rem replacing PATH as inherited from process starting this batch file.

if not defined SystemPath goto ProcessUserPath
call set "LocalPath=%SystemPath%"
if not "%LocalPath:~-1%" == ";" set "LocalPath=%LocalPath%;"

:ProcessUserPath
if not defined UserPath goto SetLocalPath
call set "LocalPath=%LocalPath%%UserPath%"

:SetLocalPath
if not defined LocalPath goto DoInstall
if "%LocalPath:~-1%" == ";" set "LocalPath=%LocalPath:~0,-1%"
if defined LocalPath set "PATH=%LocalPath%"

:DoInstall
rem Call NPM in its own environment inherited from current local environment.
rem Then discard all modifications made by NPM batch file on its own local
rem environment and restore the environment this batch file has set before.
setlocal
call npm.cmd install ...
endlocal

rem Insert here other post installation commands.


rem Restore previous environment on starting this batch file which means
rem discarding all modifications made on local list of environment variables
rem and restoring initial current directory before modification by CD at top
rem and restoring initial status of command extensions and delayed expansion.
endlocal

このバッチファイル読み取りシステムユーザー環境変数は、現在Windowsレジストリに保存されており、ローカルを含むローカル 環境変数を更新しますが、Windows XP / Server2003ではWindowsVista /と比較してREGのPATH出力が異なります。 Server2008以降のすべてのWindowsバージョン。

使用するコマンドとその動作を理解するには、コマンドプロンプトウィンドウを開き、そこで次のコマンドを実行して、各コマンドに表示されるすべてのヘルプページを注意深く読んでください。

  • call /?
  • cd /?
  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • reg /?
  • reg query /?
  • rem /?
  • set /?
  • setlocal /?

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

cfspreadsheet拡張機能がインストールされた後にLuceeがXSSFWorkbookを見つけられない

分類Dev

Dockerコンテナ内のCLionがインストール後にClangを見つけられない

分類Dev

明らかにインストールされているのに、バンドラーがrakeを見つけられないのはなぜですか?

分類Dev

rpm インストール後にバイナリが見つからない

分類Dev

バンドルがインストールされているgemを(Travis CIで)rubyが見つけられないのはなぜですか?

分類Dev

Python:印刷ステートメントが後半に値を見つけられず、印刷方法がバインドされていますか?

分類Dev

テストカバープロファイルがパッケージを見つけられない

分類Dev

Anacondaが `pip`でインストールされたパッケージを見つけられない

分類Dev

PycharmがGAEインストールを見つけられない

分類Dev

Rがanacondaのインストールを見つけられない

分類Dev

インストールされているnpmパッケージのバージョンを見つける

分類Dev

EclipseがMac OS XにインストールされているJREを見つけられない

分類Dev

ノードnpmパッケージスローuse strict:コマンドを発行してグローバルにインストールした後にコマンドが見つからない

分類Dev

webpackのビルド後にカルマがスペックファイルを見つけられない

分類Dev

TypeScriptが「node_modules」にインストールされているモジュールを見つけられないのはなぜですか?

分類Dev

angle2 が index.html にインポートされたスタイルシートを見つけられないのはなぜですか?

分類Dev

githubからreactチュートリアルリポジトリをフォークし、npmのインストール後に1つの重大な問題が見つかりました。npm監査修正を無視または実行するだけですか?

分類Dev

AURパッケージからインストールされたバイナリを見つけるにはどうすればよいですか?

分類Dev

カバールがソースを見つけられない

分類Dev

Java 8 Resource Bundleがすぐに作成されたファイルを見つけられない

分類Dev

`nix-env -q`がインストールされたパッケージを見つけられないのはなぜですか?(NixOSチャネル、プロファイル、およびパッケージ)

分類Dev

cmake がインストールされたパッケージを見つけられないのはなぜですか?

分類Dev

Python 3がインストール済みのパッケージ(BeautifulSoup4など)を見つけられないのはなぜですか?

分類Dev

Nodejs。npmのインストール後にgulpが見つかりません

分類Dev

Xcodeがポッドインストールでインストールされたフレームワークを見つけられない

分類Dev

Xcodeがポッドインストールでインストールされたフレームワークを見つけられない

分類Dev

dpkgは、すでにインストールされているパッケージが見つからないことについて文句を言います

分類Dev

とにかくpipinstallを介してインストールできるのに、pipsearchが特定のパッケージを見つけられない理由

分類Dev

TomcatがMaven経由でインポートした後にJDBCドライバーを見つけられない

Related 関連記事

  1. 1

    cfspreadsheet拡張機能がインストールされた後にLuceeがXSSFWorkbookを見つけられない

  2. 2

    Dockerコンテナ内のCLionがインストール後にClangを見つけられない

  3. 3

    明らかにインストールされているのに、バンドラーがrakeを見つけられないのはなぜですか?

  4. 4

    rpm インストール後にバイナリが見つからない

  5. 5

    バンドルがインストールされているgemを(Travis CIで)rubyが見つけられないのはなぜですか?

  6. 6

    Python:印刷ステートメントが後半に値を見つけられず、印刷方法がバインドされていますか?

  7. 7

    テストカバープロファイルがパッケージを見つけられない

  8. 8

    Anacondaが `pip`でインストールされたパッケージを見つけられない

  9. 9

    PycharmがGAEインストールを見つけられない

  10. 10

    Rがanacondaのインストールを見つけられない

  11. 11

    インストールされているnpmパッケージのバージョンを見つける

  12. 12

    EclipseがMac OS XにインストールされているJREを見つけられない

  13. 13

    ノードnpmパッケージスローuse strict:コマンドを発行してグローバルにインストールした後にコマンドが見つからない

  14. 14

    webpackのビルド後にカルマがスペックファイルを見つけられない

  15. 15

    TypeScriptが「node_modules」にインストールされているモジュールを見つけられないのはなぜですか?

  16. 16

    angle2 が index.html にインポートされたスタイルシートを見つけられないのはなぜですか?

  17. 17

    githubからreactチュートリアルリポジトリをフォークし、npmのインストール後に1つの重大な問題が見つかりました。npm監査修正を無視または実行するだけですか?

  18. 18

    AURパッケージからインストールされたバイナリを見つけるにはどうすればよいですか?

  19. 19

    カバールがソースを見つけられない

  20. 20

    Java 8 Resource Bundleがすぐに作成されたファイルを見つけられない

  21. 21

    `nix-env -q`がインストールされたパッケージを見つけられないのはなぜですか?(NixOSチャネル、プロファイル、およびパッケージ)

  22. 22

    cmake がインストールされたパッケージを見つけられないのはなぜですか?

  23. 23

    Python 3がインストール済みのパッケージ(BeautifulSoup4など)を見つけられないのはなぜですか?

  24. 24

    Nodejs。npmのインストール後にgulpが見つかりません

  25. 25

    Xcodeがポッドインストールでインストールされたフレームワークを見つけられない

  26. 26

    Xcodeがポッドインストールでインストールされたフレームワークを見つけられない

  27. 27

    dpkgは、すでにインストールされているパッケージが見つからないことについて文句を言います

  28. 28

    とにかくpipinstallを介してインストールできるのに、pipsearchが特定のパッケージを見つけられない理由

  29. 29

    TomcatがMaven経由でインポートした後にJDBCドライバーを見つけられない

ホットタグ

アーカイブ