2022-12-11 13:26:46 +01:00
! pragma warning error all
!define /ifndef VERSION " 0.0.1 "
!define /ifndef BUILD_DIR " ../build-Debug "
!define /ifndef OUTPUT_FILE " ../SteamDeckTools_Setup_${VERSION}.exe "
;--------------------------------
;Include Modern UI
!include " MUI2.nsh "
;--------------------------------
;General
;Properly display all languages (Installer will not work on Windows 95, 98 or ME!)
Unicode true
;Name and file
Name " Windows Deck Tools for Steam Deck "
OutFile " ${OUTPUT_FILE} "
;Default installation folder
InstallDir " $PROGRAMFILES64 \SteamDeckTools "
;Get installation folder from registry if available
InstallDirRegKey HKCU " Software\SteamDeckTools " " "
;Request application privileges for Windows Vista
RequestExecutionLevel admin
; Version
VIProductVersion " ${VERSION}.0 "
VIFileVersion " ${VERSION}.0 "
VIAddVersionKey " FileVersion " " ${VERSION} "
VIAddVersionKey " LegalCopyright " " (C) Kamil Trzciński 2022. "
VIAddVersionKey " FileDescription " " Windows Deck Tools for Steam Deck "
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;Show all languages, despite user's codepage
!define MUI_LANGDLL_ALLLANGUAGES
;--------------------------------
;Interface Configuration
!define MUI_HEADERIMAGE
#!define MUI_HEADERIMAGE_BITMAP "logo.bmp" ; optional
;--------------------------------
;Language Selection Dialog Settings
;Remember the installer language
!define MUI_LANGDLL_REGISTRY_ROOT " HKCU "
!define MUI_LANGDLL_REGISTRY_KEY " Software\Modern UI Test "
!define MUI_LANGDLL_REGISTRY_VALUENAME " Installer Language "
;--------------------------------
;Pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE " ..\License.md "
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_LICENSE " ..\License.md "
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_DIRECTORY
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE " English " ; The first language is the default language
!insertmacro MUI_LANGUAGE " French "
!insertmacro MUI_LANGUAGE " German "
!insertmacro MUI_LANGUAGE " Spanish "
!insertmacro MUI_LANGUAGE " SpanishInternational "
!insertmacro MUI_LANGUAGE " SimpChinese "
!insertmacro MUI_LANGUAGE " TradChinese "
!insertmacro MUI_LANGUAGE " Japanese "
!insertmacro MUI_LANGUAGE " Korean "
!insertmacro MUI_LANGUAGE " Italian "
!insertmacro MUI_LANGUAGE " Dutch "
!insertmacro MUI_LANGUAGE " Danish "
!insertmacro MUI_LANGUAGE " Swedish "
!insertmacro MUI_LANGUAGE " Norwegian "
!insertmacro MUI_LANGUAGE " NorwegianNynorsk "
!insertmacro MUI_LANGUAGE " Finnish "
!insertmacro MUI_LANGUAGE " Greek "
!insertmacro MUI_LANGUAGE " Russian "
!insertmacro MUI_LANGUAGE " Portuguese "
!insertmacro MUI_LANGUAGE " PortugueseBR "
!insertmacro MUI_LANGUAGE " Polish "
!insertmacro MUI_LANGUAGE " Ukrainian "
!insertmacro MUI_LANGUAGE " Czech "
!insertmacro MUI_LANGUAGE " Slovak "
!insertmacro MUI_LANGUAGE " Croatian "
!insertmacro MUI_LANGUAGE " Bulgarian "
!insertmacro MUI_LANGUAGE " Hungarian "
!insertmacro MUI_LANGUAGE " Thai "
!insertmacro MUI_LANGUAGE " Romanian "
!insertmacro MUI_LANGUAGE " Latvian "
!insertmacro MUI_LANGUAGE " Macedonian "
!insertmacro MUI_LANGUAGE " Estonian "
!insertmacro MUI_LANGUAGE " Turkish "
!insertmacro MUI_LANGUAGE " Lithuanian "
!insertmacro MUI_LANGUAGE " Slovenian "
!insertmacro MUI_LANGUAGE " Serbian "
!insertmacro MUI_LANGUAGE " SerbianLatin "
!insertmacro MUI_LANGUAGE " Arabic "
!insertmacro MUI_LANGUAGE " Farsi "
!insertmacro MUI_LANGUAGE " Hebrew "
!insertmacro MUI_LANGUAGE " Indonesian "
!insertmacro MUI_LANGUAGE " Mongolian "
!insertmacro MUI_LANGUAGE " Luxembourgish "
!insertmacro MUI_LANGUAGE " Albanian "
!insertmacro MUI_LANGUAGE " Breton "
!insertmacro MUI_LANGUAGE " Belarusian "
!insertmacro MUI_LANGUAGE " Icelandic "
!insertmacro MUI_LANGUAGE " Malay "
!insertmacro MUI_LANGUAGE " Bosnian "
!insertmacro MUI_LANGUAGE " Kurdish "
!insertmacro MUI_LANGUAGE " Irish "
!insertmacro MUI_LANGUAGE " Uzbek "
!insertmacro MUI_LANGUAGE " Galician "
!insertmacro MUI_LANGUAGE " Afrikaans "
!insertmacro MUI_LANGUAGE " Catalan "
!insertmacro MUI_LANGUAGE " Esperanto "
!insertmacro MUI_LANGUAGE " Asturian "
!insertmacro MUI_LANGUAGE " Basque "
!insertmacro MUI_LANGUAGE " Pashto "
!insertmacro MUI_LANGUAGE " ScotsGaelic "
!insertmacro MUI_LANGUAGE " Georgian "
!insertmacro MUI_LANGUAGE " Vietnamese "
!insertmacro MUI_LANGUAGE " Welsh "
!insertmacro MUI_LANGUAGE " Armenian "
!insertmacro MUI_LANGUAGE " Corsican "
!insertmacro MUI_LANGUAGE " Tatar "
!insertmacro MUI_LANGUAGE " Hindi "
;--------------------------------
;Reserve Files
;If you are using solid compression, files that are required before
;the actual installation should be stored first in the data block,
;because this will make your installer start faster.
!insertmacro MUI_RESERVEFILE_LANGDLL
;--------------------------------
;Installer Sections
Section " " ShutdownTools
; Shutdown existing processes
#!if /FileExists "$INSTDIR\Updater.exe"
ExecWait '"$INSTDIR\Updater.exe" -uninstall'
#!endif
SectionEnd
Section " Windows Deck Tools for Steam Deck " SteamDeckTools
SetShellVarContext All
SectionIn RO
SetOutPath " $INSTDIR "
SetRegView 64
;ADD YOUR OWN FILES HERE...
File /r " ${BUILD_DIR}\* "
;Store installation folder
WriteRegStr HKLM " Software\SteamDeckTools " " " $INSTDIR
;Create uninstaller
WriteUninstaller " $INSTDIR \Uninstall.exe "
; Create entry in Programs
WriteRegStr HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\SteamDeckTools " \
" DisplayName " " Windows Deck Tools for Steam Deck - ${VERSION} "
WriteRegStr HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\SteamDeckTools " \
" UninstallString " " $\" $INSTDIR \Uninstall.exe$\ " "
WriteRegStr HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\SteamDeckTools " \
" QuietUninstallString " " $\" $INSTDIR \Uninstall.exe$\ " /S "
SectionEnd
Section " Desktop Shortcut " DesktopShortcut
SetShellVarContext All
CreateShortcut " $DESKTOP \Fan Control.lnk " " $INSTDIR \FanControl.exe "
CreateShortcut " $DESKTOP \Performance Overlay.lnk " " $INSTDIR \PerformanceOverlay.exe "
CreateShortcut " $DESKTOP \Power Control.lnk " " $INSTDIR \PowerControl.exe "
CreateShortcut " $DESKTOP \Steam Controller.lnk " " $INSTDIR \SteamController.exe "
SectionEnd
Section " Programs Folder Shortcut " ProgramsShortcut
SetShellVarContext All
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Fan Control.lnk " " $INSTDIR \FanControl.exe "
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Performance Overlay.lnk " " $INSTDIR \PerformanceOverlay.exe "
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Power Control.lnk " " $INSTDIR \PowerControl.exe "
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Steam Controller.lnk " " $INSTDIR \SteamController.exe "
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Check for Updates.lnk " " $INSTDIR \Updater.exe "
CreateShortcut " $SMPROGRAMS \Steam Deck Tools\Uninstall.lnk " " $INSTDIR \Uninstall.exe "
SectionEnd
!ifdef USE_REDIST
Section " Visual Studio Runtime " VisualStudioRuntime
SetOutPath " $INSTDIR \Redist "
File " Redist\vc_redist.x64.exe "
ExecWait '"$INSTDIR\Redist\vc_redist.x64.exe" /passive /norestart'
SectionEnd
Section " ViGEmBus Setup 1.21.442 " ViGEmBus
SetOutPath " $INSTDIR \Redist "
File " Redist\ViGEmBus_1.21.442_x64_x86_arm64.exe "
ExecWait '"$INSTDIR\Redist\ViGEmBus_1.21.442_x64_x86_arm64.exe" /quiet /norestart'
SectionEnd
Section " .NET Desktop Runtime 6.0.11 " DotNetRuntime
SetOutPath " $INSTDIR \Redist "
File " Redist\windowsdesktop-runtime-6.0.11-win-x64.exe "
ExecWait '"$INSTDIR\Redist\windowsdesktop-runtime-6.0.11-win-x64.exe" /passive /norestart'
SectionEnd
!endif
!ifdef USE_WINGET
Section " Visual Studio Runtime " VisualStudioRuntime
ExecWait 'winget install -e --id Microsoft.VC++2015-2022Redist-x64 --override "/passive /norestart"'
SectionEnd
Section " ViGEmBus Setup " ViGEmBus
ExecWait 'winget install -e --id ViGEm.ViGEmBus'
SectionEnd
Section " .NET Desktop Runtime 6.0 " DotNetRuntime
ExecWait 'winget install -e --id Microsoft.DotNet.DesktopRuntime.6 --override "/passive /norestart"'
SectionEnd
!endif
Section " Run on Startup " StartAllComponents
Exec '"$INSTDIR\FanControl.exe" -run-on-startup'
Exec '"$INSTDIR\PerformanceOverlay.exe" -run-on-startup'
Exec '"$INSTDIR\PowerControl.exe" -run-on-startup'
Exec '"$INSTDIR\SteamController.exe" -run-on-startup'
SectionEnd
2022-12-16 22:32:59 +01:00
Section /o " Disable Check for Updates " DisableCheckForUpdates
SetShellVarContext All
FileOpen $0 " $INSTDIR \DisableCheckForUpdates.txt " w
FileClose $0
SectionEnd
2022-12-11 13:26:46 +01:00
;--------------------------------
;Installer Functions
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
;--------------------------------
;Descriptions
;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGAUGE SPECIFIC
;Assign descriptions to sections
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SteamDeckTools} " The Steam Deck Tools components. "
!ifdef USE_REDIST | USE_WINGET
!insertmacro MUI_DESCRIPTION_TEXT ${VisualStudioRuntime} " Install Visual Studio C++ Runtime 2015-2022. "
!insertmacro MUI_DESCRIPTION_TEXT ${DotNetRuntime} " Install .NET Desktop Runtime 6.0. "
!insertmacro MUI_DESCRIPTION_TEXT ${ViGEmBus} " Install ViGEmBus Driver. "
!endif
!insertmacro MUI_DESCRIPTION_TEXT ${DesktopShortcut} " Create a shortcut on your desktop. "
!insertmacro MUI_DESCRIPTION_TEXT ${ProgramsShortcut} " Create a shortcut in your start menu folder. "
!insertmacro MUI_DESCRIPTION_TEXT ${StartAllComponents} " Start all components on system boot. "
2022-12-16 22:32:59 +01:00
!insertmacro MUI_DESCRIPTION_TEXT ${DisableCheckForUpdates} " This application might connect remote server to check for updates or track errors. This helps this project development. "
2022-12-11 13:26:46 +01:00
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
;Uninstaller Section
Section " Uninstall "
SetShellVarContext all
ExecWait '"$INSTDIR\FanControl.exe" -uninstall'
ExecWait '"$INSTDIR\PerformanceOverlay.exe" -uninstall'
ExecWait '"$INSTDIR\PowerControl.exe" -uninstall'
ExecWait '"$INSTDIR\SteamController.exe" -uninstall'
ExecWait '"$INSTDIR\Updater.exe" -uninstall'
Delete " $INSTDIR \* "
Delete " $DESKTOP \Fan Control.lnk "
Delete " $DESKTOP \Performance Overlay.lnk "
Delete " $DESKTOP \Power Control.lnk "
Delete " $DESKTOP \Steam Controller.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Fan Control.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Performance Overlay.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Power Control.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Steam Controller.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Check for Updates.lnk "
Delete " $SMPROGRAMS \Steam Deck Tools\Uninstall.lnk "
RMDir " $SMPROGRAMS \Steam Deck Tools "
DeleteRegKey /ifempty HKLM " Software\SteamDeckTools "
DeleteRegKey HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\SteamDeckTools "
SectionEnd
;--------------------------------
;Uninstaller Functions
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd