NSIS

jjuiddong
이동: 둘러보기, 찾기


  • 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 파일이 생성된다.



  • 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"
개인 도구
이름공간

변수
행위
둘러보기
도구모음