Nos últimos dias, alguns de nossos usuários encontraram uma mensagem de erro conhecida real com variáveis de tempo de execução nsis. Esse problema pode surgir por vários motivos. Podemos muito bem falar sobre isso abaixo.
Recomendado
AVISO: tipos maiores que $ NSIS_MAX_STRLEN serão truncados corrompidos. NÃO use esta função, você certamente atualizará% PATH%, use EnVar_plug-in em seu lugar.
Definindo variáveis de ambiente temporariamente
Se você só precisa usar uma variável de ambiente efetiva para todos os processos de instalação e seus subprocessos:
System :: Call 'Kernel32 :: SetEnvironmentVariable (t, t) i ("nome", "valor"). r0 'Erro StrCmp $ 0 8 ExecWait ProgThatReadsEnv.exe ConcluídoCulpa: MessageBox MB_OK "Não foi possível escolher a variável de ambiente"feito:
Para contornar a limitação NSIS_MAX_STRLEN ao atualizar% Path%, o indivíduo pode tentar esta função.
Definir variáveis de ambiente permanentemente
Variáveis existentes
As funções WriteEnvStr e un.DeleteEnvStr de tal página podem ser substituídas por EnvVarUpdate devido aos parâmetros de caminho, bem como outros motivos para listas de caminhos. No entanto, o imediatamente depois se aplica a variáveis inequívocas do ambiente puramente natural.Un.DeleteEnvStr pode corromper o conteúdo do PATH totalmente adaptável se o caminho remoto puder ser um subconjunto de outra rota. Por exemplo, se o tipo de PATH contém AND “c: windows system32 wbem”, remova “C: Windows system32″, o final será ” wbem Polegada. WriteEnvStr certamente não evita entradas duplicadas no interior que o usuário executa o instalador duas vezes (e o código do instalador não verifica quando é duplicado). No entanto, esses procedimentos são destinados ao uso de quem tem Windows 9x e ME na próxima passagem, porque EnvVarUpdate muitas vezes não suporta a atualização de detalhes no autoexec arquivo .bat.
Sua própria variável
Se você definir / remover sua variável de clima MYVAR incrivelmente própria, em vez de adaptar qualquer uma oferecida, como a variável de ambiente PATH:
Código de função
Funções para Windows 95, 98 e ME
Se você deseja definir uma variável de ambiente substancial que persiste para todos os outros edifícios e também após o reinício, você precisa utilizar as seguintes funções. Para usar todos eles, talvez salve-os como um arquivo. Arquivo NSH e cole todos os envolvidos em seu script, ou apenas copie e misture-os em seu script. Se você escolher, salve-o como um arquivo. Arquivo NSH, use:
! facilite o WriteEnvStr.nsh # ou o nome de sua escolha# ...Seção "Adicionar Var" env push MyEnvVar Push MyEnvVarValue Chamada WriteEnvStrFim da seção# ...Excluir seção número Remover variável este é o push MyEnvVar Chamando un.DeleteEnvStrFim da seção
Se você espera que a variável de ambiente seja um pouco mais acessível para todos os usuários de computador que instalam o computador, defina ALL_USERS antes de habilitar WriteEnvStr.nsh (ou a parte do script que faz a mesma coisa que o arquivo. NSH salvo). Por exemplo:
! Defina ALL_USERS! habilite WriteEnvStr. # nsh nem qualquer outro st Sua escolha
Códigos de função
Recomendado
O seu PC está lento? Você tem problemas ao iniciar o Windows? Não se desespere! Fortect é a solução para você. Esta ferramenta poderosa e fácil de usar diagnosticará e reparará seu PC, aumentando o desempenho do sistema, otimizando a memória e melhorando a segurança no processo. Então não espere - baixe o Fortect hoje mesmo!
Nota. No Windows 9x, é necessário reinicializar para que a ação tenha efeito. Isso define o intervalo de reinicialização e torna-se realidade quando uma reinicialização é necessária.Aviso: este tipo relacionado ao script funciona apenas no NSIS 2.0b2 do que superior!
! ifndef _WriteEnvStr_nsh! create _WriteEnvStr_nshUMA! habilitar WinMessages.nshUMA! ifndef WriteEnvStr_RegKey ! ifdef ALL_USER WriteEnvStr_RegKey! Definir n 'HKLM "SYSTEM CurrentControlSet Control Session Manager Environment"' !outro WriteEnvStr_RegKey! Defina o ambiente "HKCU" ! fim se! fim seUMA## WriteEnvStr - escrever uma variável de base# Nota: as redes Win9x requerem uma reinicialização## Exemplo:# Pressione "HOMEDIR" # Nome# Pressione "C: Novo diretório inicial " valor numéricoChamando # WriteEnvStr#Função WriteEnvStr Editar 1; dinheiro 1 tem um significado que muda esse ambiente intercâmbio Troque $ 0. $ três tem o nome de uma variável de ambiente Clique em $ 2UMA Ligue para NT Pop 2 StrCmp $ 2 pelo menos definitivamente um WriteEnvStr_NT ; Não no NT StrCpy $ 2 $ WINDIR 2; Copiar força do Windows (c :) FileOpen $ 2 "$ 2 autoexec.bat" a FileSeek $ 2 zero END FileWrite $ a few "$ r $ nSET $ 0 equivale a $ 1 $ r $ n" FileClose $ 2 SetRebootFlag true Vá se quiser WriteEnvStr_doneUMA WriteEnvStr_NT: WriteRegExpandStr $ WriteEnvStr_RegKey $ 0 $ 1 SendMessage $ HWND_BROADCAST $ WM_WININICHANGE n apenas dois "STR: Environment" / TIMEOUT = 5000UMA WriteEnvStr_done: Pop 2 Pop $ 0 Pop 1Fim da funçãoUMA## un.DeleteEnvStr - Exclua esta variável ecológica# Nota: os sistemas Win9x estão aguardando reinicialização## Exemplo:# Pressione "HOMEDIR" # Nome# Call un.DeleteEnvStr#Função Un.DeleteEnvStr Intercâmbio. ... $ 0 $ 0 agora precisa de um alias variável Clique em $ 1 Clique em $ 2 Clique em $ 3 Pressione $ 4 Pressione $ 5UMA Ligue para um.IsNT Pop 1 StrCmp etapa 1 $ 1 DeleteEnvStr_NT ; Não no NT StrCpy $ an $ WINDIR 2 FileOpen? rrr 1 "$ 1 autoexec.bat" r GetTempFileName $ 4 FileOpen $ 2 $ 4 semanas StrCpy $ 0 "SET $ 0 =" SetRebootFlag trueUMA DeleteEnvStr_dosLoop: Lendo um início $ 1 $ 3 StrLen $ 5 $ 0 StrCpy $ 5 $ três positivos $ 5 StrCmp $ 5 $ 0 DeleteEnvStr_dosLoop StrCmp $ 5 "" deleteenvstr_dosloopend Gravar arquivo $ 2 rrr 3 Vá para permitir que DeleteEnvStr_dosLoopUMA DeleteEnvStr_dosLoopEnd: FileClose $ 2 FileClose $ 1 StrCpy $ 1 $ WINDIR 2 Remova "$ one particular autoexec.bat" CopyFiles / SILENT $ 4 "$ 1 autoexec.bat" $ documentos removidos Vá para DeleteEnvStr_doneUMA RemoveEnvStr_NT: DeleteRegValue $ WriteEnvStr_RegKey $ 0 SendMessage $ HWND_BROADCAST money WM_WININICHANGE n 7 "STR: Ambiente" / TIMEOUT = 5000UMA DeleteEnvStr_done: Pop 5 Pop - $ 4 Pop $ 3 Pop 2 Pop 1 Pop $ 0Fim da funçãoUMA! ifndef IsNT_KiCHiKDefina IsNT_KiCHiKUMA## [a.] IsNT - Pressione 1 se NT for para caminhadas, 0 caso contrário## Exemplo:#Ringok NT# Pop $ 0# StrCmp $ 0 individual +3# MessageBox MB_OK "Não via NT!"# Vá para +2# MessageBox MB_OK "Execute o NT!"#! Macro NÃO é UMFunção $ UNIsNT Clique em $ 0 ReadRegStr $ 0 HKLM n "SOFTWARE Microsoft Windows NT CurrentVersion" Versão atual StrCmp RR 0 "" 0 IsNT_yes ; nós nos tornamos não NT. Pop $ 0 Pressione 0 Para retornarUMA IsNT_ja: ; NT !!! Pop $ 0 1.pressFim em relação à função! macrofina! Insira a macro isNT ""! insertmacro Não é "a."UMA! endif IsNT_KiCHiKUMA! fim se; _WriteEnvStr_nshAcelere seu PC hoje mesmo com este download fácil de usar.
Nsis Runtime Environment Variables
Nsis Runtime Omgevingsvariabelen
Variabili Di Ambiente Di Runtime Nsis
Variables D Environnement D Execution Nsis
Nsis Runtime Miljovariabler
Peremennye Sredy Vypolneniya Nsis
Nsis Laufzeitumgebungsvariablen
Nsis 런타임 환경 변수
Variables De Entorno De Tiempo De Ejecucion De Nsis
Zmienne Srodowiskowe Runtime Nsis