Files
OpenVR-AdvancedSettings-frame/installer/installer.nsi
T
Vasily 164158330e Convert C++ version string to be define instead of include
This allows Qmake to use the version number as well as not requiring all
other uses of the version string to strip double quotes from it. This
also reduces the fragility of the version string as it was required to
be a valid C++ char*, even in contexts where that wouldn't matter.
2019-04-19 22:30:04 +02:00

172 lines
4.3 KiB
NSIS

;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
;--------------------------------
;General
!define BASEDIR "..\bin\win64\AdvancedSettings"
!define SRCDIR "..\src"
!define THIRDDIR "..\third-party"
!define PACKAGEDIR "..\src\package_files"
!define PROJECTDIR "..\"
!define /file VERSION_STRING "..\build_scripts\compile_version_string.txt"
;Installer icon
!define MUI_ICON "${PROJECTDIR}\src\res\img\icons\advicon256px.ico"
;Name and file
Name "OpenVR Advanced Settings"
OutFile "AdvancedSettings-${VERSION_STRING}-Installer.exe"
;Default installation folder
InstallDir "$PROGRAMFILES64\OpenVR-AdvancedSettings"
;Get installation folder from registry if available
InstallDirRegKey HKLM "Software\OpenVR-AdvancedSettings" ""
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;--------------------------------
;Variables
VAR upgradeInstallation
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
!define MUI_PAGE_CUSTOMFUNCTION_PRE dirPre
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Macros
!macro TerminateOverlay
DetailPrint "Terminating OpenVR Advanced Settings overlay..."
ExecWait '"taskkill" /F /IM AdvancedSettings.exe'
Sleep 2000 ; give 2 seconds for the application to finish exiting
!macroend
;--------------------------------
;Functions
Function dirPre
StrCmp $upgradeInstallation "true" 0 +2
Abort
FunctionEnd
Function .onInit
StrCpy $upgradeInstallation "false"
ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenVRAdvancedSettings" "UninstallString"
StrCmp $R0 "" done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
"OpenVR Advanced Settings is already installed. $\n$\nClick `OK` to upgrade the \
existing installation or `Cancel` to cancel this upgrade." \
IDOK upgrade
Abort
upgrade:
StrCpy $upgradeInstallation "true"
done:
FunctionEnd
;--------------------------------
;Installer Sections
Section "Install" SecInstall
!insertmacro TerminateOverlay
StrCmp $upgradeInstallation "true" 0 noupgrade
DetailPrint "Uninstall previous version..."
ExecWait '"$INSTDIR\Uninstall.exe" /S _?=$INSTDIR'
Delete $INSTDIR\Uninstall.exe
Goto afterupgrade
noupgrade:
afterupgrade:
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
File "${BASEDIR}\LICENSE-GPL.txt"
File "${BASEDIR}\LICENSE-MIT.txt"
File "${BASEDIR}\LICENSE-VALVE.txt"
File "${BASEDIR}\*.exe"
;Any action manifests
File "${BASEDIR}\*.json"
;And their defaults
File /r "${BASEDIR}\default_action_manifests"
File "${THIRDDIR}\openvr\bin\win64\*.dll"
File "${BASEDIR}\*.dll"
File "${PACKAGEDIR}\*.bat"
File "${PACKAGEDIR}\*.vrmanifest"
File "${PACKAGEDIR}\*.conf"
File /r "${SRCDIR}\res"
File /r "${BASEDIR}\qtdata"
; Install redistributable
ExecWait '"$INSTDIR\vcredist_x64.exe" /install /quiet'
; Install the vrmanifest
nsExec::ExecToLog '"$INSTDIR\AdvancedSettings.exe" --force-install-manifest'
;Store installation folder
WriteRegStr HKLM "Software\OpenVR-AdvancedSettings" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenVRAdvancedSettings" "DisplayName" "OpenVR Advanced Settings"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenVRAdvancedSettings" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
; If SteamVR is already running, execute the dashboard as the user
FindWindow $0 "Qt5QWindowIcon" "SteamVR Status"
StrCmp $0 0 +2
Exec '"$INSTDIR\AdvancedSettings.exe"'
SectionEnd
;--------------------------------
;Uninstaller Section
Section "Uninstall"
!insertmacro TerminateOverlay
; Remove the vrmanifest
nsExec::ExecToLog '"$INSTDIR\AdvancedSettings.exe" --force-remove-manifest'
; Delete installed files
!include uninstallFiles.list
DeleteRegKey HKLM "Software\OpenVR-AdvancedSettings"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenVRAdvancedSettings"
SectionEnd