본문 바로가기
프로그램 (PHP,Python)

NSIS로 64비트용 설치파일 만들때 팁

by 날으는물고기 2014. 5. 13.

NSIS로 64비트용 설치파일 만들때 팁

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비트용 레지스트리에 접근하기 위해서는 

Code:
SetRegView   64


를 써 줘야만 합니다.


4. 런타임에 64비트 os 여부 확인 

32비트 바이너리와 64비트 바이너리를 한 설치파일에 집어넣고자 할 경우가 있습니다.

이런 경우 런타임에 현재 os 가 64 비트인지 아닌지 확인하려면 다음과 같은 방식으로 코드를 사용하면 됩니다.

Code:
   ; 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:




출처 : 독립 개발자 네트워크

728x90

댓글