소프트웨어 공부/기타

[NSIS] 환경변수 등록

야곰야곰+책벌레 2022. 11. 14. 10:46
728x90
반응형

NSIS로 라이브러리를 배포하게 될 경우에는 DLL의 경우 system32나 해당 응용프로그램과 같은 폴더에 존재해야 한다. 그렇지 않으면 직접 환경 변수를 설정해야 하는데, 이는 매우 귀찮은 일이 된다. nsis로 인스톨 프로그램을 제작하면 인스톨 시에 환경 변수를 등록할 수 있다. dll이 포함된 디렉터리를 환경 변수 path에 등록해 보자.

 

Windows 버전에 따라 레지스터리 위치가 상이하지만 win 10 기준으로는 아래와 같다.

SYSTEM\CurrentControlSet\Control\Session Manager\Environment

해당 레지스터에서 등록된 환경 변수 값을 읽어와 추가하고 싶은 디렉터리를 붙여서 다시 쓴다.

Section -Post
   ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
   WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;C:\Libs"
SectionEnd

여러 폴더를 추가하게 되면 명령어의 길이가 길어짐으로 변수를 사용하여 늘려 본다.

Section -Post
   ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
   StrCpy $0 "$0;$INSTDIR\Bin\x86"
   StrCpy $0 "$0;$INSTDIR\Bin\x86\motion"
   StrCpy $0 "$0;$INSTDIR\Bin\x86\inout"
   WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0"
SectionEnd

StrCpy는 문자열을 카피하는 명령으로 $0에 폴더를 계속해서 추가하여 마지막에 write 한다.

시스템 환경 변수를 열어보면 해당 폴더가 path에 등록되었음을 확인할 수 있다.

728x90
반응형

'소프트웨어 공부 > 기타' 카테고리의 다른 글

[doxygen] 한글 깨짐 문제  (0) 2022.11.14
[NSIS] 아이콘 변경  (0) 2022.09.14
[NSIS] VSCode 에서 NSIS 설정하기  (0) 2022.09.14
[VSCode] 한글 깨짐  (0) 2022.09.14
NSIS 프로그램 설치  (0) 2022.07.21