반응형
- 등록
x86 환경에선 RegDLL "$SYSDIR\Test.ocx"처럼 RegDLL 뒤에 등록할 파일의 풀 경로를 입력해 주면 되고
x64 환경에선 ExecWait '"$SYSDIR\regsvr32.exe" /s "$SYSDIR\Text_x64.ocx"' 처럼 regsvr32.exe 프로그램을 통해 등록한다.
- 해제
x86 환경에서 UnRegDLL "$SYSDIR\Test.ocx"
x64 환경에선 ExecWait '"$SYSDIR\regsvr32.exe" /u /s "$SYSDIR\Test_x64.ocx"'
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "제품 이름"
!define PRODUCT_VERSION "1.0.0.1"
!define PRODUCT_PUBLISHER "회사이름 Co., LTD."
!define PRODUCT_WEB_SITE "http://www.회사사이트.co.kr"
; "Software\Microsoft\Windows\CurrentVersion\App Paths" 경로의 레지스트리에 키 값을 추가하면
; "실행" 창에서 입력하여 바로 실행이 가능하다.
; 아래 처럼 추가가 된다면 "실행" 창에 "프로그램명.exe"를 입력하면 프로그램이 실행된다.
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\프로그램명.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "x64.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON ".\install.ico"
!define MUI_UNICON ".\install.ico"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
; !insertmacro MUI_PAGE_LICENSE "..\..\..\..\path\to\licence\YourSoftwareLicence.txt"
; Directory page
; !insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Korean"
; MUI end ------
Name "${PRODUCT_NAME}"
OutFile "설치파일명.exe"
InstallDir "$PROGRAMFILES\Moong\TestProgram"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Section "MainSection" SEC01
SetOutPath "$SYSDIR"
SetOverwrite on
File ".\TestProject\Test.ocx"
RegDLL "$SYSDIR\Test.ocx" ; x86 환경에서 파일 레지 등록
SetOutPath "$SYSDIR"
SetOverwrite on
${DisableX64FSRedirection} ; x64 환경에서 Syswow64 폴더가 아니라 System32 폴더에 넣고자 할 때.
File ".\TestProject\Test_x64.ocx"
ExecWait '"$SYSDIR\regsvr32.exe" /s "$SYSDIR\Text_x64.ocx"' ; x64 환경에서 파일 레지 등록
${EnableX64FSRedirection}
SectionEnd
Section -Post
WriteUninstaller "$SYSDIR\UnInstaller.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$WINDIR\SysWOW64\프로그램명.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$SYSDIR\UnInstaller.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$WINDIR\SysWOW64\프로그램명.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name)는(은) 완전히 제거되었습니다."
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(^Name)을(를) 제거하시겠습니까?" IDYES +2
Abort
FunctionEnd
Section Uninstall
Delete "$SYSDIR\UnInstaller.exe"
${DisableX64FSRedirection}
ExecWait '"$SYSDIR\regsvr32.exe" /u /s "$SYSDIR\Test_x64.ocx"' ; x64 환경에서 파일 레지스트리 등록 해제
Delete "$SYSDIR\Test_x64.ocx"
${EnableX64FSRedirection}
UnRegDLL "$SYSDIR\Test.ocx" ; x86 환경에서 파일 레지스트리 등록 해제
Delete "$SYSDIR\Test.ocx"
;RMDir "$WINDIR\SysWOW64"
;RMDir "$WINDIR\System32"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
반응형
'NSIS > Reference' 카테고리의 다른 글
[NSIS] 재배포 패키지 설치 여부 체크 후 설치하는 방법 (0) | 2024.12.11 |
---|---|
[NSIS] 커맨드 라인 옵션 값 받아오기 + 사일런트 모드 설치 (0) | 2024.12.11 |
[NSIS] StrLower (0) | 2024.12.09 |
[NSIS] Internet Explorer 버전 얻는 함수 (0) | 2024.12.09 |
[NSIS] Windows 버전 얻는 함수 (0) | 2024.12.09 |