64비트용 프로그램을 만드셨습니까? NSIS 로 설치파일을 만드려고 하시나요?
이럴때 유용한 팁을 소개합니다.
1. UNICODE NSIS 설치 : http://www.scratchpaper.com/
WIN95/98 을 지원하지 않는다고 할때 UNICODE NSIS 를 사용하면 설치파일의 다국어 지원등에
매우 유리합니다. 물론 64비트 OS 는 전부 유니코드 지원 OS 죠.
2. Program files 폴더
nsis 에서 program files 폴더 변수는 $PROGRAMFILES 입니다.
그런데 64비트 os 에서는 $PROGRAMFILES 는 program files (x86) 이 되어 버리죠.
64비트용 프로그램을 program files 에 설치하고 싶으면 $PROGRAMFILES64 사용하면 됩니다.
$PROGRAMFILES64 변수는 32비트 os 에서도 program files 입니다.
3. 레지스트리 접근
64비트 os 는 32비트용 프로그램이 직접적으로 64비트 os 용 레지스트리에 접근하는걸 막습니다.
마찬가지로 nsis 스크립트의 설치파일도 그냥 쓰면 64비트용 레지스트리에 접근이 안되기 때문에
64비트용 레지스트리에 접근하기 위해서는
를 써 줘야만 합니다.
4. 런타임에 64비트 os 여부 확인
32비트 바이너리와 64비트 바이너리를 한 설치파일에 집어넣고자 할 경우가 있습니다.
이런 경우 런타임에 현재 os 가 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:
출처 : 독립 개발자 네트워크
댓글