|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
; Requires files:
|
|
|
192cd8 |
; config.nsh
|
|
|
192cd8 |
; files-install.nsh
|
|
|
192cd8 |
; files-uninstall.nsh
|
|
|
192cd8 |
; files-stuff-install.nsh
|
|
|
192cd8 |
; files-stuff-uninstall.nsh
|
|
|
192cd8 |
|
|
|
192cd8 |
; Defines which will set by 'config.nsh':
|
|
|
192cd8 |
; PK_NAME - XxxxxXxxxx - name without spaces
|
|
|
192cd8 |
; PK_NAME_FULL - Xxxxx Xxxxxxxxxx - full name, may be with spaces
|
|
|
192cd8 |
; PK_ARCH - XX - architecture, 32 or 64
|
|
|
192cd8 |
; PK_VERSION - X.X - first two numbers of version
|
|
|
192cd8 |
; PK_VERSION_FULL - X.X.X-xxxxx-xxxxx - full version, without spaces
|
|
|
192cd8 |
; PK_EXECUTABLE - xxx\XxxxXxxx-xxx_xxx.exe - subpath to executable file
|
|
|
192cd8 |
|
|
|
192cd8 |
!include "config.nsh"
|
|
|
192cd8 |
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
|
|
|
192cd8 |
!include "MUI2.nsh"
|
|
|
192cd8 |
|
|
|
192cd8 |
;second directory selection
|
|
|
192cd8 |
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
|
|
|
192cd8 |
; The name of the installer
|
|
|
192cd8 |
Name "${PK_NAME_FULL} ${PK_VERSION_FULL}"
|
|
|
192cd8 |
|
|
|
192cd8 |
; The file to write
|
|
|
192cd8 |
OutFile "${PK_NAME}-${PK_VERSION_FULL}.exe"
|
|
|
192cd8 |
|
|
|
192cd8 |
; The default installation directory and registry
|
|
|
192cd8 |
InstallDir "$PROGRAMFILES${PK_ARCH}\${PK_NAME}"
|
|
|
192cd8 |
Var STUFFDIR
|
|
|
192cd8 |
|
|
|
192cd8 |
; Request application privileges for Windows Vista
|
|
|
192cd8 |
RequestExecutionLevel highest
|
|
|
192cd8 |
|
|
|
192cd8 |
!insertmacro MUI_LANGUAGE "English"
|
|
|
192cd8 |
|
|
|
192cd8 |
!define MUI_ABORTWARNING
|
|
|
192cd8 |
|
|
|
192cd8 |
!define SHCNE_ASSOCCHANGED 0x8000000
|
|
|
192cd8 |
!define SHCNF_IDLIST 0
|
|
|
192cd8 |
|
|
|
192cd8 |
!define PRODUCT_REG_KEY "Software\${PK_NAME}"
|
|
|
192cd8 |
!define PRODUCT_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PK_NAME}"
|
|
|
192cd8 |
!define PRODUCT_UNINSTALL_KEY2 "Software\Microsoft\Windows\CurrentVersion\Uninstall\{D9A9B1A3-9370-4BE9-9C8F-7B52EEECB973}_is1"
|
|
|
192cd8 |
!define PRODUCT_UNINSTALL_EXE "uninstall-${PK_NAME}.exe"
|
|
|
192cd8 |
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
|
|
|
192cd8 |
; Pages
|
|
|
192cd8 |
|
|
|
192cd8 |
!insertmacro MUI_PAGE_COMPONENTS
|
|
|
192cd8 |
|
|
|
192cd8 |
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE InstDirPageLeave
|
|
|
192cd8 |
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
192cd8 |
|
|
|
192cd8 |
Function InstDirPageLeave
|
|
|
192cd8 |
StrCpy $STUFFDIR "C:\${PK_NAME} ${PK_VERSION} stuff"
|
|
|
192cd8 |
FunctionEnd
|
|
|
192cd8 |
|
|
|
192cd8 |
!define MUI_DIRECTORYPAGE_VARIABLE $STUFFDIR
|
|
|
192cd8 |
!define MUI_DIRECTORYPAGE_TEXT_TOP "Choose stuff directory for ${PK_NAME}..."
|
|
|
192cd8 |
!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Stuff Directory:"
|
|
|
192cd8 |
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
192cd8 |
!insertmacro MUI_PAGE_INSTFILES
|
|
|
192cd8 |
|
|
|
192cd8 |
!insertmacro MUI_UNPAGE_CONFIRM
|
|
|
192cd8 |
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
192cd8 |
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
; Installer
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
|
|
|
192cd8 |
Section "${PK_NAME_FULL} (required)"
|
|
|
192cd8 |
SetRegView ${PK_ARCH}
|
|
|
192cd8 |
|
|
|
192cd8 |
SectionIn RO
|
|
|
192cd8 |
|
|
|
192cd8 |
SetOutPath "$INSTDIR"
|
|
|
192cd8 |
!include "files-install.nsh"
|
|
|
192cd8 |
|
|
|
192cd8 |
SetOutPath "$STUFFDIR"
|
|
|
192cd8 |
!include "files-stuff-install.nsh"
|
|
|
192cd8 |
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Path" "$INSTDIR"
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_REG_KEY}" "Version" "${PK_VERSION_FULL}"
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_REG_KEY}\${PK_NAME}\${PK_VERSION}" "TOONZROOT" "$STUFFDIR"
|
|
|
192cd8 |
|
|
|
192cd8 |
; Write the uninstall keys for Windows
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayName" "${PK_NAME_FULL}"
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "DisplayVersion" "${PK_VERSION_FULL}"
|
|
|
192cd8 |
WriteRegStr HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\${PRODUCT_UNINSTALL_EXE}"'
|
|
|
192cd8 |
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoModify" 1
|
|
|
192cd8 |
WriteRegDWORD HKLM "${PRODUCT_UNINSTALL_KEY}" "NoRepair" 1
|
|
|
192cd8 |
|
|
|
192cd8 |
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
|
|
192cd8 |
|
|
|
192cd8 |
SetOutPath "$INSTDIR"
|
|
|
192cd8 |
WriteUninstaller "${PRODUCT_UNINSTALL_EXE}"
|
|
|
192cd8 |
SectionEnd
|
|
|
192cd8 |
|
|
|
192cd8 |
; Optional section (can be disabled by the user)
|
|
|
192cd8 |
Section "Start Menu Shortcuts"
|
|
|
192cd8 |
SetRegView ${PK_ARCH}
|
|
|
192cd8 |
|
|
|
192cd8 |
SetOutPath "$INSTDIR\bin"
|
|
|
192cd8 |
|
|
|
192cd8 |
SetShellVarContext All
|
|
|
192cd8 |
CreateDirectory "$SMPROGRAMS\${PK_NAME_FULL}"
|
|
|
192cd8 |
CreateShortCut "$SMPROGRAMS\${PK_NAME_FULL}\Uninstall ${PK_NAME_FULL}.lnk" "$INSTDIR\uninstall-${PK_NAME}.exe" "" "$INSTDIR\uninstall-${PK_NAME}.exe" 0
|
|
|
192cd8 |
CreateShortCut "$SMPROGRAMS\${PK_NAME_FULL}\${PK_NAME_FULL}.lnk" "$INSTDIR\${PK_EXECUTABLE}" "" "$INSTDIR\${PK_EXECUTABLE}" 0
|
|
|
192cd8 |
SectionEnd
|
|
|
192cd8 |
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
; Uninstaller
|
|
|
192cd8 |
;--------------------------------
|
|
|
192cd8 |
|
|
|
192cd8 |
Section "Uninstall"
|
|
|
192cd8 |
SetRegView ${PK_ARCH}
|
|
|
192cd8 |
|
|
|
192cd8 |
ReadRegStr $STUFFDIR HKLM "${PRODUCT_REG_KEY}\${PK_NAME}\${PK_VERSION}" "TOONZROOT"
|
|
|
192cd8 |
|
|
|
192cd8 |
; Remove registry keys
|
|
|
192cd8 |
DeleteRegKey HKLM "${PRODUCT_REG_KEY}"
|
|
|
192cd8 |
DeleteRegKey HKLM "${PRODUCT_UNINSTALL_KEY}"
|
|
|
192cd8 |
|
|
|
192cd8 |
; Remove files and uninstaller
|
|
|
192cd8 |
!include "files-stuff-uninstall.nsh"
|
|
|
192cd8 |
!include "files-uninstall.nsh"
|
|
|
192cd8 |
Delete "$INSTDIR\${PRODUCT_UNINSTALL_EXE}"
|
|
|
192cd8 |
|
|
|
192cd8 |
; Remove shortcuts, if any
|
|
|
192cd8 |
SetShellVarContext All
|
|
|
192cd8 |
Delete "$SMPROGRAMS\${PK_NAME_FULL}\${PK_NAME_FULL}.lnk"
|
|
|
192cd8 |
Delete "$SMPROGRAMS\${PK_NAME_FULL}\Uninstall ${PK_NAME_FULL}.lnk"
|
|
|
192cd8 |
|
|
|
192cd8 |
; Remove directories used
|
|
|
192cd8 |
RMDir "$SMPROGRAMS\${PK_NAME_FULL}"
|
|
|
192cd8 |
RMDir "$STUFFDIR"
|
|
|
192cd8 |
RMDir "$INSTDIR"
|
|
|
192cd8 |
|
|
|
192cd8 |
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
|
|
192cd8 |
SectionEnd
|
|
|
192cd8 |
|
|
|
192cd8 |
Function .onInit
|
|
|
192cd8 |
SetRegView 32
|
|
|
192cd8 |
|
|
|
192cd8 |
; Check previous installation
|
|
|
192cd8 |
ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
|
|
|
192cd8 |
StrCmp $R0 "" 0 oops
|
|
|
192cd8 |
|
|
|
192cd8 |
; Check previous installation 2
|
|
|
192cd8 |
ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY2}" "UninstallString"
|
|
|
192cd8 |
StrCmp $R0 "" 0 oops
|
|
|
192cd8 |
|
|
|
192cd8 |
SetRegView 64
|
|
|
192cd8 |
|
|
|
192cd8 |
; Check previous installation
|
|
|
192cd8 |
ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY}" "UninstallString"
|
|
|
192cd8 |
StrCmp $R0 "" 0 oops
|
|
|
192cd8 |
|
|
|
192cd8 |
; Check previous installation 2
|
|
|
192cd8 |
ReadRegStr $R0 HKLM "${PRODUCT_UNINSTALL_KEY2}" "UninstallString"
|
|
|
192cd8 |
StrCmp $R0 "" 0 oops
|
|
|
192cd8 |
|
|
|
192cd8 |
BringToFront
|
|
|
192cd8 |
Return
|
|
|
192cd8 |
|
|
|
192cd8 |
oops:
|
|
|
192cd8 |
MessageBox MB_OK|MB_ICONEXCLAMATION "Another version of ${PK_NAME_FULL} appears to be installed. Please, uninstall it first?"
|
|
|
192cd8 |
Abort
|
|
|
192cd8 |
FunctionEnd
|