헬마입니다.

이번에는 NSIS 에서 윈도 OS 정보를 얻어내는 플러그인입니다.

NSIS 로 OS 버전 알아내기

이 플러그인은 매우 간단합니다. 덜렁 함수 2개로 구성되어 있으며 필요에 따라 하나씩 호출하고 반환되는 값을 보고 판단하면 됩니다.

OS 버전을 알고 싶을 때
1) Call osversion ; OS 버전을 알려주는 함수를 호출합니다.
2) OS의 주요 버전은 $0 에 부가 버전은 $1 에 반환됩니다.

OS 플랫폼을 알고 싶을 때
1) Call osplatform ; OS 플랫폼을 알려주는 함수를 호출합니다.
2) $0 에 들어온 값을 분석합니다.
  $0 에는 'win31', 'win9x', 'winnt', 와 'unknown' 중의 하나가 들어갑니다.

버전 넘버 판별
--------------------------------
주요 버전:
  Windows 95   4
  Windows 98   4
  Windows Me   4
  Windows NT 3.51  3
  Windows NT 4.0  4
  Windows 2000   5
  Windows XP   5
  Windows .NET Server  5

부가 버전
  Windows 95   0
  Windows 98   10
  Windows Me   90
  Windows NT 3.51  51
  Windows NT 4.0  0
  Windows 2000   0
  Windows XP   1
  Windows .NET Server  1

예제
-------

; Copyright (C) 2001 Robert Rainwater

Name "NSIS OS Extension Example" ; 이름
OutFile "example.exe" ; 작성 파일

InstallDir $TEMP\nsisos
DirShow hide

ShowInstDetails show
AutoCloseWindow false

Function .onInit
SetSilent silent
FunctionEnd

Section -
; nsisos.dll 파일이 플러그인 폴더가 아닌 스크립트와 같은 폴더에 있어야 합니다.
File /oname=$TEMP\nsisos.dll nsisos.dll ;플러그인을 임시 디렉토리에 압축을 해제합니다.
CallInstDLL $TEMP\nsisos.dll osversion ; 플러그인을 호출합니다. osversion 함수를 호출합니다.
StrCpy $R0 $0 ; $0 과 $1 에는 숫자가 들어있습니다.
StrCpy $R1 $1
CallInstDLL $TEMP\nsisos.dll osplatform ; osplatform 함수를 호출합니다.
StrCpy $R2 $0
MessageBox MB_OK "Major Version: $R0 $\nMinor Version: $R1 $\nPlatform: $R2" ; 반환 받은 정보를 출력합니다.
Delete $TEMP\nsisos.dll
SectionEnd

또는 nsisos.dll 파일을 NSIS의 플러그인 디렉토리에 넣었다면
nsisos::osversion ; osversion 함수 호출
nsisos::osplatform ; osplatform 함수 호출
위와 같은 형식으로 호출할 수 있습니다.

댓글을 달아 주세요