kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
172 wiersze
5.6 KiB
Plaintext
172 wiersze
5.6 KiB
Plaintext
/*
|
|
GridTracker Installation Script
|
|
*/
|
|
|
|
# Installer Attributes
|
|
RequestExecutionLevel highest
|
|
SetCompressor /SOLID LZMA
|
|
Unicode true
|
|
!include Sections.nsh
|
|
!include Registry.nsh
|
|
!include LogicLib.nsh
|
|
ReserveFile "${NSISDIR}/Plugins/x86-unicode/registry.dll"
|
|
CRCCheck on
|
|
|
|
|
|
# Define Common Variables
|
|
!define NAME "GridTracker"
|
|
!define COMPANY "Gridtracker.org"
|
|
!define VERSION <versionplaceholder>
|
|
!define URL "http://gridtracker.org"
|
|
!define HELPURL "https://gitlab.com/gridtracker.org/gridtracker/-/wikis/Home"
|
|
!define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}"
|
|
!define SMPATH "$SMPROGRAMS\${NAME}"
|
|
!define /date CPYEAR "%Y"
|
|
!define BUILDPATH "<buildplaceholder>"
|
|
Name "${NAME} ${VERSION} Installer"
|
|
Icon "${BUILDPATH}/dist/GridTracker-${VERSION}-win-x86/gridview.ico"
|
|
OutFile "${BUILDPATH}/dist/GridTracker-Installer.${VERSION}.exe"
|
|
|
|
|
|
VIProductVersion ${VERSION}.0
|
|
VIAddVersionKey ProductName "${NAME}"
|
|
VIAddVersionKey ProductVersion "${VERSION}"
|
|
VIAddVersionKey CompanyName "${COMPANY}"
|
|
VIAddVersionKey CompanyWebsite "${URL}"
|
|
VIAddVersionKey FileVersion "${VERSION}"
|
|
VIAddVersionKey FileDescription "An Amateur Radio Companion"
|
|
VIAddVersionKey LegalCopyright "${CPYEAR} Gridtracker.org"
|
|
|
|
|
|
# Add registry reading plugin early on as we need to see if we are installed already
|
|
|
|
# Set Default install dir then look at uninstall key to find if previously installed #
|
|
InstallDir "$ProgramFiles\${NAME}"
|
|
|
|
## For 32 bit installs on 64 bit OS this is located in the WOW6432Node [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall] ##
|
|
InstallDirRegKey HKLM "${REGPATH_UNINSTSUBKEY}" "InstallPath"
|
|
|
|
|
|
# Pages displayed
|
|
#Page license
|
|
Page directory
|
|
Page components
|
|
Page instfiles
|
|
|
|
# Display license file to user #
|
|
#LicenseData "LICENSE"
|
|
|
|
Function .onInit
|
|
nsProcess::_FindProcess "GridTracker.exe"
|
|
Pop $R0
|
|
${If} $R0 = 0
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION "GridTracker is still running. Please close GridTracker and run the installer again."
|
|
Abort
|
|
${EndIf}
|
|
call checkMSVC
|
|
FunctionEnd
|
|
|
|
Function checkMSVC
|
|
ClearErrors
|
|
ReadRegStr $0 HKCR "Installer\Dependencies\VC,redist.x86,x86,14.30,bundle" ""
|
|
IfErrors 0 +15
|
|
ClearErrors
|
|
ReadRegStr $0 HKCR "Installer\Dependencies\Microsoft.VS.VC_RuntimeMinimumVSU_x86,v14" ""
|
|
IfErrors 0 +12
|
|
ClearErrors
|
|
ReadRegStr $0 HKCR "Installer\Dependencies\Microsoft.VS.VC_RuntimeAdditionalVSU_x86,v14" ""
|
|
IfErrors 0 +9
|
|
ClearErrors
|
|
ReadRegStr $0 HKCR "Installer\Products\679E80FBE29B63345BF612177149674C" "PackageCode"
|
|
IfErrors 0 +6
|
|
MessageBox MB_YESNO|MB_ICONQUESTION "GridTracker requires MSVC Runtime Libraries. Do you want to install them now?" IDYES InstallNow IDNO Next
|
|
InstallNow:
|
|
Call InstallMSVC
|
|
Goto Next
|
|
Next:
|
|
|
|
FunctionEnd
|
|
|
|
|
|
Function InstallMSVC
|
|
NSISdl::download "https://aka.ms/vs/17/release/vc_redist.x86.exe" "$TEMP\vc_redist.x86.exe" $0
|
|
StrCmp $0 success fail
|
|
success:
|
|
ExecWait '"$TEMP\vc_redist.x86.exe" /PASSIVE /NORESTART' $1
|
|
Goto is_reboot_requested
|
|
fail:
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Unable to download MSVC Runtime files. Please see GridTracker.org for details on download"
|
|
is_reboot_requested:
|
|
${If} $1 = 1641
|
|
${OrIf} $1 = 3010
|
|
SetRebootFlag true
|
|
${EndIf}
|
|
FunctionEnd
|
|
|
|
InstType "Full"
|
|
InstType "Minimal"
|
|
|
|
Section "Program Files (Required)"
|
|
SectionIn 1 2 RO
|
|
SetOverwrite ifdiff
|
|
|
|
SetOutPath $InstDir
|
|
RmDir /r $InstDir\package.nw
|
|
File /r "${BUILDPATH}/dist/GridTracker-${VERSION}-win-x86/*"
|
|
|
|
CreateDirectory "${SMPATH}"
|
|
CreateShortcut "${SMPATH}\${NAME}.lnk" "$InstDir\${NAME}.exe"
|
|
CreateShortcut "${SMPATH}\Help Wiki.lnk" "${HELPURL}" "" "$InstDir\gridview.ico"
|
|
CreateShortcut "${SMPATH}\Uninstall.lnk" $InstDir\uninstall.exe
|
|
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}"
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayVersion" "${VERSION}"
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "Publisher" "${COMPANY}"
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "URLInfoAbout" "${URL}"
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" "$InstDir\gridview.ico"
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$InstDir\uninstall.exe"'
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$InstDir\uninstall.exe" /S'
|
|
WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "InstallPath" $InstDir
|
|
WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1
|
|
WriteRegDWORD HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1
|
|
|
|
WriteUninstaller "$InstDir\uninstall.exe"
|
|
|
|
SectionEnd
|
|
|
|
# Section for PDF when we have it #
|
|
/*
|
|
Section "Offline Help Docs"
|
|
SectionIn 1
|
|
SectionEnd
|
|
*/
|
|
|
|
# Section for Locales when we have it #
|
|
/*
|
|
SectionGroup "Locales"
|
|
SetOutPath $INSTDIR\locales
|
|
Section "de"
|
|
|
|
SectionEnd
|
|
|
|
Section "es"
|
|
|
|
SectionEnd
|
|
SectionGroupEnd
|
|
*/
|
|
|
|
# Give User Option for Desktop Shortcut #
|
|
Section "Desktop Shortcut"
|
|
SectionIn 1
|
|
CreateShortcut /NoWorkingDir "$DESKTOP\${NAME}.lnk" "$InstDir\${NAME}.exe"
|
|
SectionEnd
|
|
|
|
# Uninstall stuffs #
|
|
Section -un.Main
|
|
RmDir /r /REBOOTOK $INSTDIR
|
|
RmDir /r /REBOOTOK "${SMPATH}"
|
|
Delete /REBOOTOK "$DESKTOP\${NAME}.lnk"
|
|
DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}"
|
|
Delete "$InstDir\uninstall.exe"
|
|
SectionEnd
|