출처: http://www.indidev.net/forum/viewtopic.php?t=69
UNICODE NSIS 설치
http://www.scratchpaper.com/
https://nsis.sourceforge.io/Download
WIN95/98을 지원하지 않는다고 할 때 UNICODE NSIS를 사용하면 설치파일의 다국어 지원 등에
매우 유리합니다. 물론 64비트 OS 는 전부 유니코드 지원 OS 죠.
Program files 폴더
nsis 에서 program files 폴더 변수는 $PROGRAMFILES입니다.
그런데 64비트 os에서는 $PROGRAMFILES는 program files (x86) 이 되어 버리죠.
64비트용 프로그램을 program files에 설치하고 싶으면 $PROGRAMFILES64 사용하면 됩니다.
$PROGRAMFILES64 변수는 32비트 os에서도 program files입니다.
레지스트리 접근
64비트 os는 32비트용 프로그램이 직접적으로 64비트 os 용 레지스트리에 접근하는 걸 막습니다.
마찬가지로 nsis 스크립트의 설치파일도 그냥 쓰면 64비트용 레지스트리에 접근이 안되기 때문에
64비트용 레지스트리에 접근하기 위해서는
SetRegView 64
를 써 줘야만 합니다.
런타임에 64비트 os 여부 확인
32비트 바이너리와 64비트 바이너리를 한 설치파일에 집어넣고자 할 경우가 있습니다.
이런 경우 런타임에 현재 os 가 64 비트인지 아닌지 확인하려면 다음과 같은 방식으로 코드를 사용하면 됩니다.
; 64비트 여부 체크하기
System::Call "kernel32::GetCurrentProcess() i .s"
System::Call "kernel32::IsWow64Process(i s, *i .r0)"
StrCmp $0 '0' Win32 Win64
Win32:
File /oname=name.exe name32.exe
Goto EndCheck
Win64:
File /oname=name.exe name64.exe
EndCheck:
'블로그 (Blog) > 개발로그 (Devlogs)' 카테고리의 다른 글
유용한 define문 (0) | 2025.02.18 |
---|---|
함수 내에서 malloc후 함수밖에서 free 하기 (0) | 2025.02.18 |
VMware 공유폴더 지정 (0) | 2025.02.18 |
리눅스 배포판 확인 (0) | 2025.02.17 |
C에서 JNI를 사용하여 Java 함수 호출하기 (0) | 2025.02.17 |