steam-deck-tools/scripts/SteamDeckTools_Setup.nsi
2022-12-16 22:39:18 +01:00

324 lines
11 KiB
Plaintext

!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
Section /o "Disable Check for Updates" DisableCheckForUpdates
SetShellVarContext All
FileOpen $0 "$INSTDIR\DisableCheckForUpdates.txt" w
FileClose $0
SectionEnd
;--------------------------------
;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."
!insertmacro MUI_DESCRIPTION_TEXT ${DisableCheckForUpdates} "This application might connect remote server to check for updates or track errors. This helps this project development."
!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