MYNT-EYE-S-SDK/scripts/win/nsis/winpack.nsi.in
2018-11-01 23:27:43 +08:00

198 lines
5.4 KiB
Plaintext

; winpack.nsi
!addincludedir scripts\win\nsis\Include
!include EnvVarUpdate.nsh
!addplugindir scripts\win\nsis\Plugins
!include WinMessages.nsh
!define VERSION "@mynteye_VERSION@"
!define OpenCV_VERSION "@OpenCV_VERSION@"
!define DSETDIR "$APPDATA"
;!define DSETDIR "$PROGRAMFILES64"
; HKLM (all users) vs HKCU (current user) defines
!define ENV_HKLM 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
!define ENV_HKCU 'HKCU "Environment"'
;--------------------------------
; The name of the installer
Name "MYNTEYE S SDK ${VERSION}"
; The icon of the installer
Icon "scripts\win\nsis\mynt.ico"
; The file to write
OutFile "mynteye-s-${VERSION}-win-x64-opencv-${OpenCV_VERSION}.exe"
; The default installation directory
InstallDir ${DSETDIR}\Slightech\MYNTEYES\SDK\${VERSION}
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM "Software\MYNTEYESSDK" "Install_Dir"
; Request application privileges for Windows Vista
;RequestExecutionLevel user
RequestExecutionLevel admin
;--------------------------------
; Pages
Page components
Page directory
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
;--------------------------------
; The stuff to install
Section "SDK (required)"
SectionIn RO
; Set output path to the installation directory.
SetOutPath $INSTDIR
; Put file there
File /r "mynteye-s-${VERSION}-win-x64\*"
; Write the installation path into the registry
WriteRegStr HKLM "SOFTWARE\MYNTEYESSDK" "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "DisplayName" "MYNTEYE S SDK"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK" "NoRepair" 1
WriteUninstaller "uninstall.exe"
; Set variables for local machine
WriteRegExpandStr ${ENV_HKLM} MYNTEYES_SDK_ROOT "$INSTDIR"
;${EnvVarUpdate} $0 "PATH" "P" "HKLM" "%MYNTEYES_SDK_PATH%"
${EnvVarUpdate} $0 "PATH" "P" "HKLM" "$INSTDIR\bin;$INSTDIR\3rdparty\opencv\build\x64\vc15\bin"
; Push "%MYNTEYES_SDK_PATH%"
; Call AddToPath
; Make sure windows knows about the change
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
SectionEnd
; Optional section (can be disabled by the user)
Section "Desktop Shortcuts"
CreateShortcut "$DESKTOP\MYNTEYE S SDK ${VERSION}.lnk" "$INSTDIR" "" "$INSTDIR" 0
SectionEnd
Function .onInstSuccess
;WriteRegStr "HKLM" "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "View README" \
; "cmd.exe /c start /max notepad.exe $INSTDIR\README"
MessageBox MB_OKCANCEL "Reboot your system now?" /SD IDOK IDCANCEL NoReboot
Reboot
NoReboot:
FunctionEnd
Function .onInstFailed
MessageBox MB_OK "Install failed."
FunctionEnd
;--------------------------------
; Uninstaller
Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MYNTEYESSDK"
DeleteRegKey HKLM "SOFTWARE\MYNTEYESSDK"
; Remove install stuff
RMDir /r "$INSTDIR"
; Remove shortcuts, if any
Delete "$DESKTOP\MYNTEYE S SDK ${VERSION}.lnk"
; Remove directories used
StrCpy $0 "${DSETDIR}\Slightech\MYNTEYES"
Call un.DeleteDirIfEmpty
StrCpy $0 "${DSETDIR}\Slightech"
Call un.DeleteDirIfEmpty
RMDir /r "$APPDATA\Slightech\MYNTEYES"
StrCpy $0 "$APPDATA\Slightech"
Call un.DeleteDirIfEmpty
; Delete variables
DeleteRegValue ${ENV_HKLM} MYNTEYES_SDK_ROOT
;${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "%MYNTEYES_SDK_PATH%"
${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\bin"
${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\3rdparty\opencv\build\x64\vc15\bin"
; Push "%MYNTEYES_SDK_PATH%"
; Call un.RemoveFromPath
; Make sure windows knows about the change
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
SectionEnd
Function un.onUninstSuccess
MessageBox MB_OK "Uninstall success."
FunctionEnd
Function un.onUninstFailed
MessageBox MB_OK "Uninstall failed."
FunctionEnd
;--------------------------------
; DeleteDirIfEmpty - Delete dir only if empty
Function un.DeleteDirIfEmpty
FindFirst $R0 $R1 "$0\*.*"
strcmp $R1 "." 0 NoDelete
FindNext $R0 $R1
strcmp $R1 ".." 0 NoDelete
ClearErrors
FindNext $R0 $R1
IfErrors 0 NoDelete
FindClose $R0
Sleep 1000
RMDir "$0"
NoDelete:
FindClose $R0
FunctionEnd
;--------------------------------
; Path Manipulation
; http://nsis.sourceforge.net/Path_Manipulation
; Environmental Variables: append, prepend, and remove entries
; http://nsis.sourceforge.net/Environmental_Variables:_append%2C_prepend%2C_and_remove_entries
; Setting Environment Variables
; http://nsis.sourceforge.net/Setting_Environment_Variables
; Setting Environment Variables to Active Installer Process
; http://nsis.sourceforge.net/Setting_Environment_Variables_to_Active_Installer_Process
; Delete files and subdirectories
; http://nsis.sourceforge.net/Delete_files_and_subdirectories
; Delete dir only if empty
; http://nsis.sourceforge.net/Delete_dir_only_if_empty
;https://gist.github.com/azalea/deb3c1ed2a984eadf96be77b81dd49b1
;!include ProcessEnvPrependPath.nsh