pcsx2/nsis/SharedDefs.nsh

120 lines
3.2 KiB
Plaintext

; Copyright (C) 2017 PCSX2 Team
; These definitions are shared between the 2 installers (pre-install/portable and full)
; This reduces duplicate code throughout both installers.
!include "FileFunc.nsh"
ManifestDPIAware true
Unicode true
ShowInstDetails nevershow
ShowUninstDetails nevershow
SetCompressor /SOLID lzma
SetCompressorDictSize 24
Var UserPrivileges
Var IsAdmin
!ifndef APP_VERSION
!define APP_VERSION "1.8.0"
!endif
!define APP_NAME "PCSX2 ${APP_VERSION}"
; The name of the installer
Name "${APP_NAME}"
!define APP_FILENAME "pcsx2"
!define APP_EXE "$INSTDIR\${APP_FILENAME}.exe"
;===============================
; MUI STUFF
!include "MUI2.nsh"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "banner.bmp"
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_ICON "AppIcon.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
Function IsUserAdmin
!include WinVer.nsh
# No user should ever have to experience this pain ;)
${IfNot} ${AtLeastWin8.1}
MessageBox MB_OK "Your operating system is unsupported by PCSX2. Please upgrade your operating system or install PCSX2."
Quit
${EndIf}
UserInfo::GetOriginalAccountType
Pop $UserPrivileges
# GetOriginalAccountType will check the tokens of the original user of the
# current thread/process. If the user tokens were elevated or limited for
# this process, GetOriginalAccountType will return the non-restricted
# account type.
# On Windows with UAC, for example, this is not the same value when running
# with `RequestExecutionLevel user`. GetOriginalAccountType will return
# "admin" while GetAccountType will return "user".
;UserInfo::GetOriginalAccountType
;Pop $R2
${If} $UserPrivileges == "Admin"
StrCpy $IsAdmin 1
${ElseIf} $UserPrivileges == "User"
StrCpy $IsAdmin 0
${EndIf}
FunctionEnd
Function ShowHelpMessage
!define line1 "Command line options:$\r$\n$\r$\n"
!define line2 "/S - silent install (must be uppercase)$\r$\n"
!define line3 "/D=path\to\install\folder - Change install directory (Must be uppercase, the last option given and no quotes)$\r$\n"
!define line4 "/NoStart - Do not create start menu shortcut$\r$\n"
!define line5 "/NoDesktop - Do not create desktop shortcut$\r$\n"
!define line6 "/Portable- Install in portable mode instead of full install, no effect unless /S is passed as well"
MessageBox MB_OK "${line1}${line2}${line3}${line4}${line5}${line6}"
Abort
FunctionEnd
Function .onInit
Var /GLOBAL cmdLineParams
Push $R0
${GetParameters} $cmdLineParams
ClearErrors
${GetOptions} $cmdLineParams '/?' $R0
IfErrors +2 0
Call ShowHelpMessage
${GetOptions} $cmdLineParams '/H' $R0
IfErrors +2 0
Call ShowHelpMessage
Pop $R0
Var /GLOBAL option_startMenu
Var /GLOBAL option_desktop
Var /GLOBAL option_portable
StrCpy $option_startMenu 1
StrCpy $option_desktop 1
StrCpy $option_portable 0
Push $R0
${GetOptions} $cmdLineParams '/NoStart' $R0
IfErrors +2 0
StrCpy $option_startMenu 0
${GetOptions} $cmdLineParams '/NoDesktop' $R0
IfErrors +2 0
StrCpy $option_desktop 0
${GetOptions} $cmdLineParams '/Portable' $R0
IfErrors +2 0
StrCpy $option_portable 1
Pop $R0
FunctionEnd