NSIS
jjuiddong
- 무료프로그램
- NSIS 설치프로그램 제작
- NSI 스크립트 설명
- OutFile : 인스톨러 파일명
- Page : 인스톨러 뷰 화면
- UninstPage : 언인스톨러의 뷰 화면
- Section : 동적으로 추가,제거할 수 있는 섹션, 컴포넌트로 인식됨
- InstallDir : 인스톨러에서 파일이 저장될 기본 경로
- SetOutPath : 인스톨러에서 실제로 파일을 설치할 경로
- File : 설치할 파일
- 언인스톨러 섹션은 un. 으로 시작한다.
- StrCmp var1 var2 goto1 goto2
- var1,var2 문자가 같으면 goto1 만큼 아래로 이동, 그렇지 않다면 goto2만큼 아래로 이동
- 미리 정의되어 있는 변수
- 자세한 내용은 매뉴얼의 Chapter4 : Variables에 있다.
- $INSTDIR : directory 페이지에서 설정한 설치경로
- $DESKTOP : 바탕화면 경로
- $EXEDIR : 인스톨러가 있는 경로
- $WINDIR : 윈도우 경로 c:windows
- 콜백함수
- .onInit : 인스톨러가 실행될 때 호출
- 디렉토리 경로설정
- SetOutPath $INSTDIR
- 바탕화면 바로가기
- 바로가기에서 시작위치를 지정하려면 SetOutPath 로 설정한다.
!ifdef CFG_SEC_DESKTOPICON Section "ShortCut" Section_CreateDesktopShortcut SetOutPath "${APP_LNK_STARTPATH}" CreateShortCut "$DESKTOP\${TXT_LNKNAME}.lnk" "$INSTDIR\${APP_EXENAME}" "" "" 0 SectionEnd !endif
- 언인스톨
- chapter4: Section 매뉴얼에 있음.
- 언인스톨러 생성
- WriteUninstaller "$INSTDIR\${APP_UNINST_EXENAME}"
- 예제
UninstPage uninstConfirm UninstPage instfiles Section "Uninstall" Delete $INSTDIR\Uninst.exe ; delete self (see explanation below why this works) Delete $INSTDIR\myApp.exe RMDir $INSTDIR DeleteRegKey HKLM SOFTWARE\myApp SectionEnd
- 다른 setup 파일 실행
- Exec '"$INSTDIR\vcredist_x86.exe"'
- 여러개의 파일을 한번에 설치하기
- 폴더 인스톨
- File /r "files.*"
- files 폴더안에 있는 모든 내용을 인스톨한다. 이 때 files라는 폴더도 같이 만들어진다.
- 폴더 인스톨
- 폴더내 파일 모두 지우기
- RMDir /r <directory>
- 언어설정
- 중국어,한국어, 그에 따른 설치파일 설정
- NSIS Example Language 를 참고하자.
- 머신건X 인스톨 nsi 파일 사용하기
- bin, media, 각종 설치할 파일이 있는 폴더에 *.nsi 파일을 넣는다.
- NSI Script 를 실행한다.
- 문제 없이 실행되었다면 install 파일이 생성된다.
- 대용량 설치파일
- 설명 문서
- 7zip plugin
- 사용법
- 7zip 플러그인을 다운 받는다.
- 압축을 풀고, Plugins\x86-ansi\nsis7z.dll 파일을 NSIS의 폴더의 Plugins 에 추가한다.
- 인스톨 파일에 추가하고 싶은 파일을 7zip 으로 압축해서 추가한다.
- nsis 스크립트에서, 해당 압축파일을 푸는 명령어를 추가한다.
- Nsis7z::Extract "$INSTDIR\game\2016-07-04[HMD].7z"
- NSIS 스크립트에 추가한 코드
; No need to compress twice! SetCompress off Function CallbackTest Pop $R8 Pop $R9 SetDetailsPrint textonly DetailPrint "Extracting $R8 / $R9..." SetDetailsPrint both FunctionEnd ---------------------------------------------- SetCompress auto SetDetailsPrint both DetailPrint "Installing package..." SetOutPath "$INSTDIR\game\" GetFunctionAddress $R9 CallbackTest Nsis7z::ExtractWithCallback "$INSTDIR\game\2016-07-04[HMD].7z" $R9 ; Set output path to the installation directory. SetOutPath $INSTDIR Delete "$OUTDIR\game\2016-07-04[HMD].7z"