Some work about adaptive color scheme for Web UI (PR #19901)
http://[316:c51a:62a3:8b9::4]/d4708/qBittorrent/src/branch/adaptive-webui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
6.6 KiB
200 lines
6.6 KiB
;Start of user configurable options |
|
;============================================================================== |
|
|
|
; Uncomment if you want to use UPX to pack the installer header |
|
; Doing so may make antivirus software flag the installer as virus/malware |
|
;!define USE_UPX |
|
|
|
; Uncomment when packaging 64bit qbittorrent |
|
;!define QBT_IS_X64 |
|
|
|
; Uncomment when packaging qt6 qbittorrent |
|
; It will also define QBT_IS_X64 |
|
;!define QBT_USES_QT6 |
|
|
|
!ifdef QBT_USES_QT6 |
|
!define /redef QBT_IS_X64 |
|
!endif |
|
|
|
; qBittorrent version |
|
; The string MUST contain ONLY numbers delimited by dots. |
|
; It MUST contain a maximum of 4 delimited numbers |
|
; Other values will result in undefined behavior |
|
; examples: |
|
; 4.5.0 -> good |
|
; 4.5.1.3 -> good |
|
; 4.5.1.3.2 -> bad |
|
; 4.5.0beta -> bad |
|
!define /ifndef QBT_VERSION "4.5.0" |
|
|
|
; Option that controls the installer's window name |
|
; If set, its value will be used like this: |
|
; "qBittorrent ${QBT_INSTALLER_FILENAME}" |
|
; If not set, the window name will be auto composed from QBT_VERSION, QBT_USES_QT6, QBT_IS_X64 |
|
; If you set this define then you MUST set QBT_INSTALLER_FILENAME too. Otherwise it will be ignored. |
|
; This define is meant to ease automation from scripts/commandline |
|
;!define QBT_INSTALLER_WINDOWNAME |
|
|
|
; Option that controls the installer's window name |
|
; If set, its value will be used like this: |
|
; "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe" |
|
; If not set, the window name will be auto composed from QBT_VERSION, QBT_USES_QT6, QBT_IS_X64 |
|
; If you set this define then you MUST set QBT_INSTALLER_WINDOWNAME too. Otherwise it will be ignored. |
|
; This define is meant to ease automation from scripts/commandline |
|
;!define QBT_INSTALLER_FILENAME |
|
|
|
;End of user configurable options |
|
;============================================================================== |
|
|
|
!ifndef QBT_INSTALLER_WINDOWNAME | QBT_INSTALLER_FILENAME |
|
!ifndef QBT_IS_X64 |
|
; The name of the installer |
|
!define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION}" |
|
|
|
; The file to write |
|
!define QBT_INSTALLER_FILENAME "${QBT_VERSION}" |
|
!else ; QBT_IS_X64 |
|
!ifndef QBT_USES_QT6 |
|
; The name of the installer |
|
!define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} x64" |
|
|
|
; The file to write |
|
!define QBT_INSTALLER_FILENAME "${QBT_VERSION}_x64" |
|
!else ; QBT_USES_QT6 |
|
; The name of the installer |
|
!define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} (qt6) x64" |
|
|
|
; The file to write |
|
!define QBT_INSTALLER_FILENAME "${QBT_VERSION}_qt6_x64" |
|
!endif ; QBT_USES_QT6 |
|
!endif ; QBT_IS_X64 |
|
!endif |
|
|
|
Unicode true |
|
ManifestDPIAware true |
|
|
|
!ifdef USE_UPX |
|
!packhdr "$%TEMP%\exehead.tmp" 'upx.exe -9 --best --ultra-brute "$%TEMP%\exehead.tmp"' |
|
!endif |
|
|
|
;Setting the compression |
|
SetCompressor /SOLID LZMA |
|
SetCompressorDictSize 64 |
|
XPStyle on |
|
|
|
!include "MUI2.nsh" |
|
!include "UAC.nsh" |
|
!include "FileFunc.nsh" |
|
!include "WinVer.nsh" |
|
!ifdef QBT_IS_X64 |
|
!include "x64.nsh" |
|
!endif |
|
!include "3rdparty\VersionCompleteXXXX.nsi" |
|
|
|
;For the file association |
|
!define SHCNE_ASSOCCHANGED 0x8000000 |
|
!define SHCNF_IDLIST 0 |
|
|
|
;For special folder detection |
|
!define CSIDL_APPDATA '0x1A' ;Application Data path |
|
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path |
|
|
|
!define MUI_FINISHPAGE_RUN |
|
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun |
|
!define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt) |
|
|
|
; The name of the installer |
|
Name "qBittorrent ${QBT_INSTALLER_WINDOWNAME}" |
|
|
|
; The file to write |
|
OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe" |
|
|
|
;Installer Version Information |
|
VIAddVersionKey "ProductName" "qBittorrent" |
|
VIAddVersionKey "CompanyName" "The qBittorrent project" |
|
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2023 The qBittorrent project" |
|
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client" |
|
VIAddVersionKey "FileVersion" "${QBT_VERSION}" |
|
|
|
; VIProductVersion needs a 4 part version. |
|
; If QBT_VERSION contains less than 4 parts then VersionCompleteXXXX, will extend it with zeroes. |
|
${VersionCompleteXXXX} ${QBT_VERSION} VERSION_4_PART |
|
VIProductVersion "${VERSION_4_PART}" |
|
|
|
; The default installation directory. It changes depending if we install in the 64bit dir or not. |
|
; A caveat of this is if a user has installed a 32bit version and then runs the 64bit installer |
|
; (which in turn launches the 32bit uninstaller first) the value will still point to the 32bit location. |
|
; The user has to manually uninstall the old version and THEN run the 64bit installer |
|
!ifndef QBT_IS_X64 |
|
InstallDir $PROGRAMFILES32\qBittorrent |
|
!else |
|
InstallDir $PROGRAMFILES64\qBittorrent |
|
!endif |
|
|
|
; Registry key to check for directory (so if you install again, it will |
|
; overwrite the old one automatically) |
|
InstallDirRegKey HKLM Software\qbittorrent InstallLocation |
|
|
|
; Request application privileges for Windows Vista |
|
RequestExecutionLevel user |
|
|
|
;-------------------------------- |
|
;General Settings |
|
!define MUI_ABORTWARNING |
|
!define MUI_HEADERIMAGE |
|
!define MUI_COMPONENTSPAGE_NODESC |
|
;!define MUI_ICON "qbittorrent.ico" |
|
!define MUI_LICENSEPAGE_CHECKBOX |
|
!define MUI_LANGDLL_ALLLANGUAGES |
|
|
|
;-------------------------------- |
|
;Remember the unistaller/installer language |
|
!define MUI_LANGDLL_REGISTRY_ROOT "HKLM" |
|
!define MUI_LANGDLL_REGISTRY_KEY "Software\qbittorrent" |
|
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" |
|
|
|
;-------------------------------- |
|
;Installer Pages |
|
!insertmacro MUI_PAGE_WELCOME |
|
!insertmacro MUI_PAGE_LICENSE "license.txt" |
|
!insertmacro MUI_PAGE_COMPONENTS |
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE check_instance |
|
!insertmacro MUI_PAGE_DIRECTORY |
|
!insertmacro MUI_PAGE_INSTFILES |
|
!insertmacro MUI_PAGE_FINISH |
|
|
|
;-------------------------------- |
|
;Uninstaller Pages |
|
!insertmacro MUI_UNPAGE_CONFIRM |
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.check_instance |
|
!insertmacro MUI_UNPAGE_COMPONENTS |
|
!insertmacro MUI_UNPAGE_INSTFILES |
|
|
|
!insertmacro MUI_RESERVEFILE_LANGDLL |
|
ReserveFile "${NSISDIR}\Plugins\x86-unicode\FindProcDLL.dll" |
|
ReserveFile "${NSISDIR}\Plugins\x86-unicode\UAC.dll" |
|
|
|
!macro Init thing |
|
uac_tryagain: |
|
!insertmacro UAC_RunElevated |
|
${Switch} $0 |
|
${Case} 0 |
|
${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done |
|
${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on |
|
${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user |
|
MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0 |
|
${EndIf} |
|
;fall-through and die |
|
${Case} 1223 |
|
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, aborting!" |
|
Quit |
|
${Case} 1062 |
|
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Logon service not running, aborting!" |
|
Quit |
|
${Default} |
|
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Unable to elevate , error $0" |
|
Quit |
|
${EndSwitch} |
|
|
|
SetShellVarContext all |
|
!macroend
|
|
|