Dodałem niestandardową akcję instalacyjną do mojego instalatora, aby dodać jeden z moich katalogów instalacyjnych do zmiennej środowiskowej System PATH. Po uruchomieniu instalatora zmienna PATH odzwierciedla zmiany (gdy uzyskuję do niego dostęp za pośrednictwem apletu Panel Control :: System), ale po uruchomieniu nowej powłoki poleceń zmienna PATH nie odzwierciedla zmian. Czy coś, czego nie mogę zrobić, powoduje to?Instalator zmienia zmienną PATH, zmiany nie pojawiają się w powłoce Command
Odpowiedz
myślę, że to zależy od tego jak zaczynasz nową powłokę poleceń. Na przykład, gdy zmienisz zmienną środowiskową PATH w obszarze Właściwości systemu, zmiana nie zostanie odzwierciedlona, dopóki nie otworzysz nowego wiersza polecenia. Myślę, że po uruchomieniu nowego procesu "cmd" (na przykład z okna dialogowego Uruchamianie) otrzymujesz świeżą kopię wszystkich zmiennych środowiskowych, ale jeśli uruchamiasz wiersz polecenia w inny sposób, to nie robisz tego.
Aby coś zrobić za pomocą takiego skryptu, konieczne może być ponowne uruchomienie, zanim zauważysz zmianę.
Tak, miałem skrypty zmieniające zmienne ścieżki i odkryłem, że żaden sposób uruchomienia wiersza polecenia nie pokazuje tych zmian aż do ponownego uruchomienia. To jest w systemie Windows XP. – sampablokuper
Jak uruchamiasz powłokę poleceń? Z TaskManager?
Podejrzewam, że możesz uruchomić go z Eksploratora - jeśli dobrze pamiętam, może to oznaczać, że dziedziczysz procesy macierzyste (w tym przypadku Windows Explorer) zmienną PATH. Ponieważ zostało to ustawione przed uruchomieniem instalatora, widzisz starą wartość.
Nie wiem, czy to pomaga ...
http://support.microsoft.com/kb/310519 mówi, że dla zmiennych środowiskowych systemu (które PATH jest jednym z) wymaga ponownego uruchomienia, chociaż mam wrażenie, że wylogowanie i włączenie może być wystarczające.
Jak dodajesz zmienną środowiskową?
Bez użycia narzędzi zewnętrznych można uzyskać add it to the registry. Następnie twoja próba otwarcia nowego okna poleceń będzie odzwierciedlać twoją zmianę.
Dlaczego używasz do tego CustomAction? Instalator Windows natywnie obsługuje modyfikujące zmienne środowiskowe. Sądzę też, że Instalator Windows wysyła komunikat rozgłoszeniowy, aby zaktualizować system po zmianie zmiennych środowiskowych. To może oznaczać, że nie musisz restartować ... ale minęło trochę czasu, odkąd próbowałem tak YMMV.
Zobacz także http://serverfault.com/questions/8855/how-do-you-add-a-windows-environment-variable-without-rebooting widocznie musisz wysłać wiadomość systemową lub nowe wygrali PATH ' t take – rogerdpack