インストーラで PATH 変数が変更されるが、変更がコマンド シェルに表示されない

StackOverflow https://stackoverflow.com/questions/40311

質問

インストーラーにカスタム インストール アクションを追加して、インストール ディレクトリの 1 つを System PATH 環境変数に追加しました。インストーラーを実行すると、(コントロール パネル::システム アプレットからアクセスした場合) PATH 変数に変更が反映されますが、新しいコマンド シェルを起動すると、PATH 変数に変更が反映されません。何か私がやっていないことが原因なのでしょうか?

役に立ちましたか?

解決

これは、新しいコマンド シェルをどのように起動するかによって異なると思います。たとえば、システム プロパティで PATH 環境変数を変更した場合、新しいコマンド プロンプトを開くまで変更は反映されません。新しい "cmd" プロセスを (たとえば、[ファイル名を指定して実行] ダイアログから) 起動すると、すべての環境変数の新しいコピーが取得されると思いますが、コマンド プロンプトを別の方法で起動した場合は、取得されません。

このようなスクリプトを使用して何かを実行した場合、変更に気づく前に再起動が必要になる場合があります。

他のヒント

コマンドシェルをどのように起動していますか?タスクマネージャーを使って?

おそらくエクスプローラーから起動しているのではないかと思います。私の記憶が正しければ、これは親プロセス (この場合は Windows エクスプローラー) の PATH 変数を継承していることを意味しているのかもしれません。これはインストーラーの実行前に設定されているため、古い値が表示されます。

これが役立つかどうかはわかりません...

http://support.microsoft.com/kb/310519 システム環境変数(PATH もその 1 つ)の場合は再起動が必要だと書かれていますが、ログオフしてからログオンするだけで十分なような気がします。

これに CustomAction を使用するのはなぜですか?Windows インストーラーは、環境変数の変更をネイティブにサポートしています。また、環境変数が変更された場合、Windows インストーラーはシステムを更新するためにブロードキャスト メッセージを送信すると思います。つまり、再起動する必要はないのかもしれません...でも久しぶりにYMMVを試してみました。

環境変数はどのように追加していますか?

外部ツールを使用せずに、 レジストリに追加します. 。その後、新しいコマンド ウィンドウを開くテストに変更が反映されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top