subsurface/packaging/windows/smtk-import.nsi.in
Michael Keller d92777a3ff Packaging: Cleanup Windows Build Scripts.
Do some housekeeping and cleanup on the build scripts for Windows:
- remove Windows 32bit builds as support for this has been removed from
  the mxe container;
- fix some warnings in the smtk2ssrf installer configuration;
- sanitise the output colour of the smtk2ssrf build script;
- add a docker based build script for the Windows installers;
- remove outdated and deprecated documentation and scripts.

Signed-off-by: Michael Keller <mikeller@042.ch>
2024-04-26 07:42:59 -07:00

232 lines
7.1 KiB
Text

#
# Smrtk2ssrf NSIS installer script
#
# This installer creator needs to be run with:
# makensis smtk-import.nsi
#
#--------------------------------
# Include Modern UI
!include "MUI2.nsh"
#--------------------------------
# General
# Program version
!define SUBSURFACE_VERSION "VERSIONTOKEN"
# VIProductVersion requires version in x.x.x.x format
!define SUBSURFACE_VIPRODUCTVERSION "PRODVTOKEN"
# Installer name and filename
Name "Smtk2ssrf"
Caption "Smtk2ssrf ${SUBSURFACE_VERSION} Setup"
OutFile "..\smtk2ssrf-${SUBSURFACE_VERSION}.exe"
# Icon to use for the installer
!define MUI_ICON "subsurface.ico"
# Default installation folder
InstallDir "$PROGRAMFILES\Smtk2ssrf"
# Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Smtk2ssrf" ""
# Request application privileges
RequestExecutionLevel admin
#--------------------------------
# Version information
VIProductVersion "${SUBSURFACE_VIPRODUCTVERSION}"
VIAddVersionKey "ProductName" "Smtk2ssrf"
VIAddVersionKey "FileDescription" "Smtk2ssrf - Import SmartTrak divelogs to Subsurface XML format."
VIAddVersionKey "FileVersion" "${SUBSURFACE_VERSION}"
VIAddVersionKey "LegalCopyright" "GPL v.2"
VIAddVersionKey "ProductVersion" "${SUBSURFACE_VERSION}"
#--------------------------------
# Settings
# Show a warn on aborting installation
!define MUI_ABORTWARNING
# Defines the target start menu folder
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Smtk2ssrf"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
#--------------------------------
# Variables
Var StartMenuFolder
#--------------------------------
# Custom pages
#
# Maintain some checkboxes in the uninstall dialog
#Var UninstallDialog
#Var Checkbox_Reg
#Var Checkbox_Reg_State
#Var Checkbox_UserDir
#Var Checkbox_UserDir_State
#Var UserDir
#
#Function un.UninstallOptions
# nsDialogs::Create 1018
# Pop $UninstallDialog
# ${If} $UninstallDialog == error
# Abort
# ${EndIf}
#
# StrCpy $Checkbox_Reg_State 0
# StrCpy $Checkbox_UserDir 0
#
# # if this key exists Subsurface was run at least once
# ReadRegStr $UserDir HKCU "Software\Subsurface\Subsurface\GeneralSettings" "default_directory"
# ${If} $UserDir != ""
# # checkbox for removing registry entries
# ${NSD_CreateCheckbox} 0 0u 100% 20u "Registry entries (HKEY_CURRENT_USER\Software\Subsurface)"
# Pop $Checkbox_Reg
# GetFunctionAddress $0 un.OnCheckbox_Reg
# nsDialogs::OnClick $Checkbox_Reg $0
#
# ${If} ${FileExists} "$UserDir\*.*"
# # checkbox for removing the user directory
# ${NSD_CreateCheckbox} 0 20u 100% 20u "User directory ($UserDir)"
# Pop $Checkbox_UserDir
# GetFunctionAddress $0 un.OnCheckbox_UserDir
# nsDialogs::OnClick $Checkbox_UserDir $0
# ${EndIf}
# ${EndIf}
#
# nsDialogs::Show
#FunctionEnd
#
#Function un.OnCheckbox_Reg
# ${NSD_GetState} $Checkbox_Reg $Checkbox_Reg_State
#FunctionEnd
#Function un.OnCheckbox_UserDir
# ${NSD_GetState} $Checkbox_UserDir $Checkbox_UserDir_State
# ${If} $Checkbox_UserDir_State == 1
# MessageBox MB_OK "WARNING!$\nMake sure you don't have important files in the user directory!"
# ${EndIf}
#FunctionEnd
#--------------------------------
# Pages
# Installer pages
!insertmacro MUI_PAGE_LICENSE "gpl-2.0.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
# Uninstaller pages
!insertmacro MUI_UNPAGE_CONFIRM
# UninstPage custom un.UninstallOptions
!insertmacro MUI_UNPAGE_INSTFILES
#--------------------------------
# Languages
!insertmacro MUI_LANGUAGE "English"
Section
SetShellVarContext all
# Installation path
SetOutPath "$INSTDIR"
# Delete any already installed DLLs to avoid buildup of various
# versions of the same library when upgrading
Delete "$INSTDIR\*.dll"
# Files to include in installer
# now that we install into the staging directory and try to only have
# the DLLs there that we depend on, this is much easier
File smtk2ssrf.exe
# File /r data
# File /r theme
# File /r images
File /r plugins
# File /r Documentation
# File /r translations
# File /r printing_templates
File *.dll
File subsurface.ico
File qt.conf
# Store installation folder in registry
WriteRegStr HKCU "Software\Smtk2ssrf" "" $INSTDIR
# Create shortcuts
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Smtk2ssrf.lnk" "$INSTDIR\smtk2ssrf.exe" "" "$INSTDIR\subsurface.ico" 0
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Smtk2ssrf.lnk" "$INSTDIR\Uninstall_smtk2ssrf.exe"
CreateShortCut "$DESKTOP\Smtk2ssrf.lnk" "$INSTDIR\smtk2ssrf.exe" "" "$INSTDIR\subsurface.ico" 0
!insertmacro MUI_STARTMENU_WRITE_END
# Create the uninstaller
WriteUninstaller "$INSTDIR\Uninstall_smtk2ssrf.exe"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
"DisplayName" "Smtk2ssrf"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
"DisplayIcon" "$INSTDIR\subsurface.ico"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
"UninstallString" "$INSTDIR\Uninstall_smtk2ssrf.exe"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
"DisplayVersion" ${SUBSURFACE_VERSION}
SectionEnd
#--------------------------------
# Uninstaller section
Section "Uninstall"
SetShellVarContext all
# Delete installed files
Delete "$INSTDIR\*.dll"
Delete "$INSTDIR\freetype-config"
Delete "$INSTDIR\smtk2ssrf.exe"
Delete "$INSTDIR\subsurface.ico"
Delete "$INSTDIR\Uninstall_smtk2ssrf.exe"
Delete "$INSTDIR\qt.conf"
# RMDir /r "$INSTDIR\share"
# RMDir /r "$INSTDIR\data"
# RMDir /r "$INSTDIR\theme"
# RMDir /r "$INSTDIR\images"
# RMDir /r "$INSTDIR\translations"
# RMDir /r "$INSTDIR\oldshare"
RMDir /r "$INSTDIR\plugins"
# RMDir /r "$INSTDIR\Documentation"
# RMDir /r "$INSTDIR\printing_templates"
RMDir "$INSTDIR"
# Remove shortcuts
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\Smtk2ssrf.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Smtk2ssrf.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
Delete "$DESKTOP\Smtk2ssrf.lnk"
# remove the registry entires
# ${If} $Checkbox_Reg_State == 1
# DeleteRegKey HKCU "Software\Smtk2ssrf"
# ${EndIf}
# remove the user directory
# ${If} $Checkbox_UserDir_State == 1
# ${AndIf} $UserDir != ""
# ${AndIf} ${FileExists} "$UserDir\*.*"
# RMDir /r $UserDir
# ${EndIf}
# remove the uninstaller entry
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf"
SectionEnd