インストーラで PATH 変数が変更されるが、変更がコマンド シェルに表示されない
-
09-06-2019 - |
質問
インストーラーにカスタム インストール アクションを追加して、インストール ディレクトリの 1 つを System PATH 環境変数に追加しました。インストーラーを実行すると、(コントロール パネル::システム アプレットからアクセスした場合) PATH 変数に変更が反映されますが、新しいコマンド シェルを起動すると、PATH 変数に変更が反映されません。何か私がやっていないことが原因なのでしょうか?
解決
これは、新しいコマンド シェルをどのように起動するかによって異なると思います。たとえば、システム プロパティで PATH 環境変数を変更した場合、新しいコマンド プロンプトを開くまで変更は反映されません。新しい "cmd" プロセスを (たとえば、[ファイル名を指定して実行] ダイアログから) 起動すると、すべての環境変数の新しいコピーが取得されると思いますが、コマンド プロンプトを別の方法で起動した場合は、取得されません。
このようなスクリプトを使用して何かを実行した場合、変更に気づく前に再起動が必要になる場合があります。
他のヒント
コマンドシェルをどのように起動していますか?タスクマネージャーを使って?
おそらくエクスプローラーから起動しているのではないかと思います。私の記憶が正しければ、これは親プロセス (この場合は Windows エクスプローラー) の PATH 変数を継承していることを意味しているのかもしれません。これはインストーラーの実行前に設定されているため、古い値が表示されます。
これが役立つかどうかはわかりません...
http://support.microsoft.com/kb/310519 システム環境変数(PATH もその 1 つ)の場合は再起動が必要だと書かれていますが、ログオフしてからログオンするだけで十分なような気がします。
これに CustomAction を使用するのはなぜですか?Windows インストーラーは、環境変数の変更をネイティブにサポートしています。また、環境変数が変更された場合、Windows インストーラーはシステムを更新するためにブロードキャスト メッセージを送信すると思います。つまり、再起動する必要はないのかもしれません...でも久しぶりにYMMVを試してみました。
環境変数はどのように追加していますか?
外部ツールを使用せずに、 レジストリに追加します. 。その後、新しいコマンド ウィンドウを開くテストに変更が反映されます。