我们正在使用具有.nsi文件的eclipse rcp产品。 所以,我想在.nsi文件中设置环境变量的路径。
我写了下面的代码:
Section "-Environment"
ReadRegStr $1 HKCU "Environment" "PATH"
;DetailPrint $1
StrCpy $0 $INSTDIR\MKS_Standalone\mkssi
;DetailPrint $0
StrLen $2 $1
;DetailPrint $2
StrLen $3 $0
;DetailPrint $3
IntOp $5 $5 & $5
IntOp $6 $2 - $3
;DetailPrint $6
IntCmp $2 0 labelWrite
labelLoop:
;DetailPrint $5/$6
StrCpy $4 $1 $3 $5
;DetailPrint $4
;DetailPrint $0
StrCmp $4 $0 labelEnd
IntOp $5 $5 + 1
IntCmp $6 $5 labelAdd labelAdd
Goto labelLoop
labelAdd:
WriteRegExpandStr HKCU "Environment" "PATH" $1;$INSTDIR\MKS_Standalone\mkssi
DetailPrint "Adding path environment."
Goto labelEnd
labelWrite:
WriteRegExpandStr HKCU "Environment" "PATH" $INSTDIR\MKS_Standalone\mkssi
DetailPrint "Adding path environment."
labelEnd:
SectionEnd
这段代码是在环境变量中添加路径,但仅在重启机器后才添加。 由于我的应用程序在多台计算机上运行,因此无法重新启动计算机以更新路径变量。
如何在没有系统重启的情况下使用nsis设置PATH?
答案 0 :(得分:0)
System::Call 'Kernel32::SetEnvironmentVariable(t "name", t "value")'
。您可以宣布对其他正在运行的应用程序的更改,如下所示:
!include WinMessages.nsh
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000`
Explorer.exe通常是处理此消息并重新加载其环境的唯一进程。