Under de senaste dagarna har några mot våra användare stött på en känd felupplevelse med nsis -körtidsvariabler. Detta problem kan visa sig av flera skäl. Vi kommer att prata om idén nedan.
Rekommenderas
VARNING: rader som är längre än dollar NSIS_MAX_STRLEN kommer att trunkeras / skadas. ANVÄND INTE den här funktionen, du kan uppdatera% PATH%, överväg EnVar_plug-in istället.
Inställning av miljövariabler tillfälligt
Om du bara vill använda modelleffektiv miljövariabel för alla installationsprocesser i kombination med deras delprocesser:
System :: Ring 'Kernel32 :: SetEnvironmentVariable (t, t) i ("namn", "värde"). r0 'StrCmp -fel? rrr 0 8 ExecWait ProgThatReadsEnv.exe AvslutadSkuld: MessageBox MB_OK "Det går inte att ordna miljövariabel"gjort:
För att komma runt NSIS_MAX_STRLEN -begränsningen när du uppdaterar% Path% kan du prova denna processfunktion.
Ställ in miljövariabler permanent
Befintliga variabler
Rollen WriteEnvStr och un.DeleteEnvStr för en sådan sida utfasas av EnvVarUpdate på grund av sökvägsparametrar och andra orsaker i söklistor. Följande gäller dock slutligen entydiga variabler av den naturliga miljön.Un.DeleteEnvStr kan helt och hållet skada vissa innehåll i PATH -variabeln om min fjärrväg kan vara en delmängd av fler rutter. Till exempel, om PATH innehåller OCH “c: windows system32 wbem”, rensa bort “C: Windows system32″, kommer uppdelningen att vara ” wbem”. WriteEnvStr uppnår verkligen inte att dubletter av poster där datoranvändaren kör installationsprogrammet två gånger (och installationssystemet inte söker efter dubbletter). Dessa metoder är dock avsedda att användas med Windows 9x såväl som en ME i nästa avsnitt, eftersom EnvVarUpdate är benägen till stöder inte uppdatering av variabler i någon form av autoexec.bat -fil.
Din egen variabel
Om en ställer in / tar bort ditt eget MYVAR -väder varierade istället för att anpassa en befintlig sådan på grund av PATH -miljövariabeln:
Funktionskod
Funktioner för Windows 95, 98 och ME
Om du vill ange en miljövariabel som många kvarstår för alla andra processer och därefter, efter omstart, måste du använda följande procedurer. För att använda dem alla, spara dem som bra. NSH -fil och klistra in dem i din programvara, eller bara kopiera och klistra in dem i detta skript. Om du väljer att spara det i en. NSH -fil, använd:
! aktivera WriteEnvStr.nsh #, ditt valda namn# ...Avsnittet "Lägg till Var" env push MyEnvVar Push MyEnvVarValue WriteEnvStr -samtalSlut på avsnitt# ...Ta bort avsnitt # Ta bort variabel detta är MyEnvVar push Ringer un.DeleteEnvStrAvsluta tillsammans med avsnitt
Om du hoppas att du ser, kommer miljövariabeln att vara lite mer närvarande för alla datoranvändare som använder datorn, etablerade ALL_USERS innan du aktiverar WriteEnvStr.nsh (eller den del mot skriptet som gör samma sak när den sparade . NSH -fil). Till exempel:
! Definiera ALL_USERS! aktivera WriteEnvStr. # nsh eller något annat Ditt val
Funktionskod
Rekommenderas
Körs din dator långsamt? Har du problem med att starta Windows? Misströsta inte! Fortect är lösningen för dig. Detta kraftfulla och lättanvända verktyg kommer att diagnostisera och reparera din dator, öka systemets prestanda, optimera minnet och förbättra säkerheten i processen. Så vänta inte - ladda ner Fortect idag!
Obs. I Windows 9x krävs en omstart för åtgärdens räkning för att träda i kraft. Detta anger vårt eget omstartintervall och träder i kraft när en återaktivering krävs.Varning! Denna typ av skript fungerar bara på NSIS 2.0b2 och högre!
! ifndef _WriteEnvStr_nsh! ställ in _WriteEnvStr_nshA! aktivera WinMessages.nshA! ifndef WriteEnvStr_RegKey ! ifdef ALL_USER WriteEnvStr_RegKey! Definiera n 'HKLM "SYSTEM CurrentControlSet Control Session Manager Environment"' !annan WriteEnvStr_RegKey! Definiera "HKCU" Miljö " ! förhindra om! sluta omA## WriteEnvStr - skriv en ny markvariabel# Obs! Win9x -system kräver att du helt enkelt startar om## Exempel:# Tryck på "HOMEDIR" # Namn# Tryck på "C: New home directory " # värdeRinger # WriteEnvStr#WriteEnvStr -funktion Redigera 1; $ 1 har en lämplig betydelse som förändrar miljön utbyta Swap $ 0. $ 0 har information om en miljövariabel Klicka på pengar 2A Ring NT Pop 2 StrCmp $ 2 minst en WriteEnvStr_NT ; Inte på NT StrCpy $ 2 $ WINDIR 2; Kopiera windows force (c :) FileOpen -medel 2 "$ 2 autoexec.bat" a FileSeek $ 2 0 END FileWrite $ 2 "$ r pengar nSET $ 0 = $ 1 medel r $ n" FileClose $ 2 SetRebootFlag true Gå till WriteEnvStr_doneA WriteEnvStr_NT: WriteRegExpandStr $ WriteEnvStr_RegKey $ 0 $ 1 SendMessage $ HWND_BROADCAST $ WM_WININICHANGE n 2 "STR: Miljö" / TIMEOUT = 5000A WriteEnvStr_done: Pop 2 Pop 0 Pop 1Slut ansluten med funktionA## un.DeleteEnvStr - Ta bort denna miljövariabel# Obs! Win9x -system väntar på omstart## Exempel:# Tryck på "HOMEDIR" nummer Namn# Ring un.DeleteEnvStr#Un.DeleteEnvStr -funktion Utbyta. ... pengar 0 $ 0 har nu ett justerbart alias Klicka på $ 1 Klick ? rrr 2 Klicka på $ 3 Tryck på rrr 4 Tryck på $ 5A Ring an.IsNT Pop 1 StrCmp 1 $ 1 DeleteEnvStr_NT ; Inte på NT StrCpy $ 1 $ WINDIR 2 FileOpen $ 1 "$ an autoexec.bat" r GetTempFileName rr 4 FileOpen $ 2 USD 4 veckor StrCpy $ 6 "SET $ 0 =" SetRebootFlag trueA Ta bortEnvStr_dosLoop: Läser en fil $ 1 rr 3 StrLen rr 5 $ 0 StrCpy $ 5 $ 3 $ 5 StrCmp $ 5 rr 0 DeleteEnvStr_dosLoop StrCmp $ 5 "" deleteenvstr_dosloopend Skriv fil $ 2 $ 3 Gå till DeleteEnvStr_dosLoopA DeleteEnvStr_dosLoopEnd: FileClose $ 2 FileClose $ 1 StrCpy $ 1 $ WINDIR 2 Ta bort "$ 1 autoexec.bat" CopyFiles / SILENT RR 4 "$ 1 autoexec.bat" $ 4 ta bort Gå till DeleteEnvStr_doneA RemoveEnvStr_NT: DeleteRegValue $ WriteEnvStr_RegKey $ 0 SendMessage $ HWND_BROADCAST $ WM_WININICHANGE n 0 "STR: Miljö" kontra TIMEOUT = 5000A DeleteEnvStr_done: Pop 5 Pop - rr 4 Pop $ 3 Pop 2 Pop 1 Pop $ 0Slut om funktionA! ifndef IsNT_KiCHiKDefiniera IsNT_KiCHiKA## [a.] IsNT - Tryck på 1 om NT körs, 0 annars## Exempel:#Ringok NT# Pop $ 0# StrCmp $ 0 man +3# MessageBox MB_OK "Inte på NT!"# Fortsätt +2# MessageBox MB_OK "Kör NT!"#! Makro är INTE EN$ UNIsNT -funktion Klicka på $ 0 ReadRegStr $ 0 HKLM n "PROGRAMVARA Microsoft Windows NT CurrentVersion" Aktuell version StrCmp $ 0 "" 4 IsNT_yes ; vi är inte NT. Pop $ 0 Tryck på 0 Att återvändaA IsNT_ja: ; NT !!! Pop $ 0 1. tryckSlut på funktion! makrofin! Infoga valfritt isNT -makro ""! insertmacro IsNT "a."A! endif IsNT_KiCHiKA! sluta om; _WriteEnvStr_nshFå fart på din dator idag med denna lättanvända nedladdning.
Nsis Runtime Environment Variables
Nsis Runtime Omgevingsvariabelen
Variabili Di Ambiente Di Runtime Nsis
Variables D Environnement D Execution Nsis
Variaveis De Ambiente De Execucao Nsis
Peremennye Sredy Vypolneniya Nsis
Nsis Laufzeitumgebungsvariablen
Nsis 런타임 환경 변수
Variables De Entorno De Tiempo De Ejecucion De Nsis
Zmienne Srodowiskowe Runtime Nsis