W ciągu ostatnich kilku dni niektórzy z naszych użytkowników napotkali znany cel dotyczący błędu ze zmiennymi wykonawczymi nsis. Ten problem może pojawić się z kilku powodów. Porozmawiamy o niektórych poniżej.
Zalecane
Tymczasowe ustawianie zmiennych środowiskowych
Jeśli chcesz używać tylko jednej efektywnej zmiennej środowiskowej dla wszystkich procesów instalacyjnych oraz ich podprocesów:
System :: Wywołanie 'Kernel32 :: SetEnvironmentVariable (t, t) i ("nazwa", "wartość"). r0 'StrCmp błąd RR 0 8 ExecWait ProgThatReadsEnv.exe ZakończonyWina: MessageBox MB_OK "Nie można ustawić zmiennej środowiskowej"gotowe:
Aby obejść ograniczenie NSIS_MAX_STRLEN podczas aktualizacji% Path%, możesz wypróbować określoną funkcję.
Ustaw zmienne środowiskowe na stałe
Istniejące zmienne
Cele WriteEnvStr i un.DeleteEnvStr takiej strony są przestarzałe przez EnvVarUpdate ze względu na parametry ścieżki i inne powody, gdy ścieżki są wyświetlane. Jednak w przypadku jednoznacznych zmiennych środowiska przyrodniczego obowiązuje następująca zasada.Un.DeleteEnvStr może zazwyczaj całkowicie uszkodzić zawartość zmiennej PATH, jeśli nasza własna ścieżka zdalna może być podzbiorem innej trasy. Na przykład, jeśli ŚCIEŻKA zawiera AND „c:windowssystem32wbem”, przenieś „C:Windowssystem32”, zakończeniem będzie „wbem”. WriteEnvStr z pewnością może nie zapobiegać zduplikowanym wpisom, w których operator uruchamia instalator dwukrotnie (a oprogramowanie instalatora nie sprawdza duplikatów). Jednak te metody są przeznaczone do użytku z Windows 9x, ale ME w następnej sekcji, ponieważ EnvVarUpdate zbyt często nie obsługuje aktualizacji zmiennych w określonym pliku autoexec.bat.
Twoja własna zmienna
Jeśli ustawisz / usuniesz własny aspekt pogodowy MYVAR zamiast dostosowywać dowolny istniejący, taki jak zmienna środowiskowa PATH:
Kod funkcji
Funkcje dla Windows 95, 98 i ME
Jeśli chcesz ustawić zmienną środowiskową faktu, która utrzymuje się dla wszystkich innych procesów, a także natychmiast po ponownym uruchomieniu, musisz wykonać następujące czynności. Aby wykorzystać je wszystkie, zapisz je jako pojedyncze. NSH i wklej je do swojego programu lub po prostu skopiuj i wklej je do swojego rzeczywistego skryptu. Jeśli zdecydujesz się zapisać go jako a. Plik NSH, użyj:
! włącz WriteEnvStr.nsh # , nazwa do wyboru#...Sekcja „Dodaj Var” env push MyEnvVar Push MyEnvVarValue Zadzwoń WriteEnvStrKoniec sekcji#...Usuń sekcję # Usuń zmienną to jest push MyEnvVar Wywołanie un.DeleteEnvStrKoniec w sekcji
Jeśli masz nadzieję, że widzisz, zmienna środowiskowa będzie nieco łatwiej dostępna dla wszystkich użytkowników komputera korzystających z komputera, umieść ALL_USERS przed włączeniem WriteEnvStr.nsh (lub części w skrypcie, która robi to samo za każdym razem, gdy zapisany plik NSH). Na przykład:
! Zdefiniuj ALL_USERS! włącz WriteEnvStr. # nsh lub jakikolwiek inny Twój wybór
Kod funkcji
Zalecane
Czy Twój komputer działa wolno? Masz problemy z uruchomieniem systemu Windows? Nie rozpaczaj! Fortect to rozwiązanie dla Ciebie. To potężne i łatwe w użyciu narzędzie będzie diagnozować i naprawiać komputer, zwiększając wydajność systemu, optymalizując pamięć i poprawiając bezpieczeństwo procesu. Więc nie czekaj — pobierz Fortect już dziś!
Uwaga. W systemie Windows 9x wymagane jest ponowne uruchomienie, aby akcja zaczęła działać. Ustawia to bieżący interwał ponownego uruchamiania i zaczyna obowiązywać, gdy wymagany jest system.Ostrzeżenie: ten typ skryptu działa tylko na NSIS 2.0b2 i wyższych!
! ifndef _WriteEnvStr_nsh! ustaw _WriteEnvStr_nshA! włącz WinMessages.nshA! ifndef WriteEnvStr_RegKey ! ifdef ALL_USER NapiszEnvStr_RegKey! Definiować n 'HKLM "SYSTEM CurrentControlSet Control Menedżer sesji Środowisko"' !inne NapiszEnvStr_RegKey! Zdefiniuj środowisko „HKCU” ! zamknięcie, jeśli! koniec jeśliA## WriteEnvStr - zapisuje pojedynczą zmienną gruntową# Uwaga: systemy Win9x wymagają ważnego ponownego uruchomienia## Przykład:# Naciśnij "HOMEDIR" # Imię# Naciśnij "C: Nowy katalog domowy " # wartośćWywołanie # WriteEnvStr#Funkcja WriteEnvStr Edytuj 1; 1 $ ma bardzo znaczenie, które zmienia otoczenie Wymieniać się Swap $0. $0 ma ustanowienie zmiennej środowiskowej Kliknij dolary 2A Zadzwoń do NT Pop 2 StrCmp $ 2 co najmniej jeden WriteEnvStr_NT ; Nie na NT StrCpy $ 2 $ WINDIR 2; Skopiuj siłę systemu Windows (c :) FileOpen rrr 2 "$2 autoexec.bat" a FileSeek $ 2 0 KONIEC FileWrite $ 2 "$ r rr nSET $ 0 = $ 1 fundusze r $ n" PlikZamknij 2 zł SetRebootFlag prawda Przejdź do WriteEnvStr_doneA ZapiszEnvStr_NT: WriteRegExpandStr $ WriteEnvStr_RegKey $ 0 $ 1 Wyślij wiadomość $ HWND_BROADCAST $ WM_WININICHANGE n 2 „STR: Środowisko” / LIMIT CZASU = 5000A WriteEnvStr_done: Pop 2 Pop dolara 0 Pop 1Koniec w funkcjiA## un.DeleteEnvStr - Usuń tę zmienną środowiskową# Uwaga: systemy Win9x oczekują na ponowne uruchomienie## Przykład:# Naciśnij "HOMEDIR" numer Nazwisko# Zadzwoń do un.DeleteEnvStr#Funkcja Un.DeleteEnvStr Giełda. ... rr 0 $ 0 ma teraz regulowany alias Kliknij 1 USD Kliknij rr 2 Kliknij $3 Naciśnij pieniądze 4 Naciśnij $5A Zadzwoń an.IsNT Pop 1 StrCmp 1 $ 1 UsuńEnvStr_NT ; Nie na NT StrCpy $ 1 $ WIATR 2 FileOpen $1 "$12 autoexec.bat" r GetTempFileName pieniądze 4 PlikOpen $ 2 4 tygodnie StrCpy 6 USD "ZESTAW 0 USD =" SetRebootFlag prawdaA UsuńEnvStr_dosLoop: Czytanie pliku $ 1 dolar 3 StrLen 5 $ 0 StrCpy 5 $ 3 $ 5 StrCmp $ 5 USD 0 UsuńEnvStr_dosLoop StrCmp $ 5 "" deleteenvstr_dosloopend Zapisz plik $ 2 $ 3 Przejdź do DeleteEnvStr_dosLoopA UsuńEnvStr_dosLoopEnd: PlikZamknij 2 zł PlikZamknij $ 1 StrCpy $ 1 $ WIATR 2 Usuń „$1 autoexec.bat” KopiujPliki / CICHA ? rrr 4 "$1 autoexec.bat" 4 USD usuń Przejdź do UsuńEnvStr_doneA UsuńEnvStr_NT: UsuńRegValue $ WriteEnvStr_RegKey $ 0 Wyślij wiadomość $ HWND_BROADCAST $ WM_WININICHANGE n 0 „STR: Środowisko” LIMIT CZASU = 5000A UsuńEnvStr_done: Pop 5 Pop - rrr 4 Pop 3 zł Pop 2 Pop 1 Pop $ 0Koniec z funkcjąA! ifndef IsNT_KiCHiKZdefiniuj IsNT_KiCHiKA## [a.] IsNT - Naciśnij 1 jeśli NT jest uruchomiony, 0 w przeciwnym razie## Przykład:#Ringok NT# Pop $ 0# StrCmp $ 0 oddzielnie +3# MessageBox MB_OK "Nie w NT!"# Przejdź do pomyślnie +2# MessageBox MB_OK "Uruchom NT!"#! Makro to NIE JEDNO$ Funkcja UNIsNT Kliknij $0 ReadRegStr $ 0 HKLM n "SOFTWARE Microsoft Windows NT CurrentVersion" Aktualna wersja StrCmp $ 0 "" 8 IsNT_tak ; nie jesteśmy NT. Pop $ 0 Naciśnij 0 WracaćA CzyNT_ja: ; NT !!! Pop $ 0 1. naciśnijKoniec funkcji! makropłetwy! Wstaw to konkretne makro isNT „”! insertmacro IsNT "a."A! endif IsNT_KiCHiKA! koniec jeśli; _WriteEnvStr_nsh
Przyspiesz swój komputer już dziś dzięki temu łatwemu w użyciu pobieraniu.
Nsis Runtime Environment Variables
Nsis Runtime Omgevingsvariabelen
Variabili Di Ambiente Di Runtime Nsis
Variables D Environnement D Execution Nsis
Nsis Runtime Miljovariabler
Variaveis De Ambiente De Execucao Nsis
Peremennye Sredy Vypolneniya Nsis
Nsis Laufzeitumgebungsvariablen
Nsis 런타임 환경 변수
Variables De Entorno De Tiempo De Ejecucion De Nsis