mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-08 11:47:30 +08:00
NSIS: Refactor configuration to ease installer creation via scripting
This commit is contained in:
parent
2af1e1874e
commit
102b6c32eb
61
dist/windows/3rdparty/VersionCompleteXXXX.nsi
vendored
Normal file
61
dist/windows/3rdparty/VersionCompleteXXXX.nsi
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
; Code taken from https://nsis.sourceforge.io/VersionCompleteXXXX
|
||||
; See http://nsis.sourceforge.net/VersionCompleteXXXX for documentation
|
||||
!macro VersionCompleteXXXRevision _INPUT_VALUE _OUTPUT_SYMBOL _REVISION
|
||||
!searchparse /noerrors ${_INPUT_VALUE} "" _VERSION_1 "." _VERSION_2 "." _VERSION_3 "." _VERSION_4
|
||||
!ifndef _VERSION_1
|
||||
!define _VERSION_1 0
|
||||
!else if `${_VERSION_1}` == ``
|
||||
!define /redef _VERSION_1 0
|
||||
!endif
|
||||
!ifndef _VERSION_2
|
||||
!define _VERSION_2 0
|
||||
!else if `${_VERSION_2}` == ``
|
||||
!define /redef _VERSION_2 0
|
||||
!endif
|
||||
!ifndef _VERSION_3
|
||||
!define _VERSION_3 0
|
||||
!else if `${_VERSION_3}` == ``
|
||||
!define /redef _VERSION_3 0
|
||||
!endif
|
||||
!ifndef _VERSION_4
|
||||
!define _VERSION_4 0
|
||||
!else if `${_VERSION_4}` == ``
|
||||
!define /redef _VERSION_4 0
|
||||
!endif
|
||||
!define ${_OUTPUT_SYMBOL} ${_VERSION_1}.${_VERSION_2}.${_VERSION_3}.${_REVISION}
|
||||
!undef _VERSION_1
|
||||
!undef _VERSION_2
|
||||
!undef _VERSION_3
|
||||
!undef _VERSION_4
|
||||
!undef _REVISION
|
||||
!macroend
|
||||
!define VersionCompleteXXXRevision `!insertmacro VersionCompleteXXXRevision`
|
||||
!macro VersionCompleteXXXX _INPUT_VALUE _OUTPUT_SYMBOL
|
||||
!searchparse /noerrors ${_INPUT_VALUE} "" _VERSION_1 "." _VERSION_2 "." _VERSION_3 "." _VERSION_4
|
||||
!ifndef _VERSION_1
|
||||
!define _VERSION_1 0
|
||||
!else if `${_VERSION_1}` == ``
|
||||
!define /redef _VERSION_1 0
|
||||
!endif
|
||||
!ifndef _VERSION_2
|
||||
!define _VERSION_2 0
|
||||
!else if `${_VERSION_2}` == ``
|
||||
!define /redef _VERSION_2 0
|
||||
!endif
|
||||
!ifndef _VERSION_3
|
||||
!define _VERSION_3 0
|
||||
!else if `${_VERSION_3}` == ``
|
||||
!define /redef _VERSION_3 0
|
||||
!endif
|
||||
!ifndef _VERSION_4
|
||||
!define _VERSION_4 0
|
||||
!else if `${_VERSION_4}` == ``
|
||||
!define /redef _VERSION_4 0
|
||||
!endif
|
||||
!define ${_OUTPUT_SYMBOL} ${_VERSION_1}.${_VERSION_2}.${_VERSION_3}.${_VERSION_4}
|
||||
!undef _VERSION_1
|
||||
!undef _VERSION_2
|
||||
!undef _VERSION_3
|
||||
!undef _VERSION_4
|
||||
!macroend
|
||||
!define VersionCompleteXXXX `!insertmacro VersionCompleteXXXX`
|
21
dist/windows/README.txt
vendored
21
dist/windows/README.txt
vendored
@ -16,16 +16,16 @@ TRANSLATORS:
|
||||
|
||||
PACKAGERS:
|
||||
|
||||
You will need NSIS and upx to make the installer. You need a unicode version of NSIS.
|
||||
I tested with NSIS 3.0 (final).
|
||||
You will need NSIS 3 to make the installer. UPX is an optional requirement.
|
||||
|
||||
1. Open the options.nsi file in an editor and change line that contains
|
||||
1. Open the config.nsi file in an editor and change line that contains
|
||||
"!define QBT_VERSION "3.0.3"" to the version of qbittorrent you just built.
|
||||
2. Extract the plugins found in the folder "nsis plugins" into your
|
||||
2. config.nsi contains some other defines that control the installer output. Read the comments in that file.
|
||||
3. Extract the plugins found in the folder "nsis plugins" into your
|
||||
NSIS's unicode Plugin directory(usually C:\Program Files\NSIS\Plugins\x86-unicode).
|
||||
Only the *.dll files are needed. Use the unicode version of the dlls.
|
||||
3. The script you need to compile is "qbittorrent.nsi". It includes all other necessary scripts.
|
||||
4. The script expects the following file tree:
|
||||
4. The script you need to compile is "qbittorrent.nsi". It includes all other necessary scripts.
|
||||
5. The script expects the following file tree:
|
||||
|
||||
The installer script expects the following file tree:
|
||||
|
||||
@ -46,8 +46,10 @@ translations
|
||||
qt_zh_TW.qm
|
||||
installer.nsi
|
||||
license.txt
|
||||
options.nsi
|
||||
config.nsi
|
||||
helper.nsi
|
||||
qbittorrent.exe
|
||||
qbittorrent.pdb
|
||||
qbittorrent.nsi
|
||||
qt.conf
|
||||
translations.nsi
|
||||
@ -55,9 +57,10 @@ UAC.nsh
|
||||
uninstaller.nsi
|
||||
|
||||
|
||||
5. "license.txt" is a text file that contains the text rendered
|
||||
6. "license.txt" is a text file that contains the text rendered
|
||||
from src\gui\gpl.html
|
||||
6. "qbittorrent.exe" is the compiled binary file.
|
||||
7. "qbittorrent.exe" is the compiled binary file.
|
||||
8. "qbittorrent.pdb" is the compiled binary's PDB file.
|
||||
|
||||
SCRIPT HACKERS:
|
||||
|
||||
|
94
dist/windows/config.nsi
vendored
94
dist/windows/config.nsi
vendored
@ -1,3 +1,10 @@
|
||||
;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
|
||||
|
||||
@ -10,25 +17,79 @@
|
||||
!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
|
||||
;Compress the header too
|
||||
|
||||
!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 "MUI.nsh"
|
||||
!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
|
||||
@ -42,27 +103,11 @@ XPStyle on
|
||||
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
|
||||
!define MUI_FINISHPAGE_RUN_TEXT $(launch_qbt)
|
||||
|
||||
!ifndef QBT_IS_X64
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${QBT_VERSION}"
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${QBT_INSTALLER_WINDOWNAME}"
|
||||
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${QBT_VERSION}_setup.exe"
|
||||
!else ; QBT_IS_X64
|
||||
!ifndef QBT_USES_QT6
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${QBT_VERSION} x64"
|
||||
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${QBT_VERSION}_x64_setup.exe"
|
||||
!else ; QBT_USES_QT6
|
||||
; The name of the installer
|
||||
Name "qBittorrent ${QBT_VERSION} (qt6) x64"
|
||||
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${QBT_VERSION}_qt6_x64_setup.exe"
|
||||
!endif ; QBT_USES_QT6
|
||||
!endif ; QBT_IS_X64
|
||||
; The file to write
|
||||
OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe"
|
||||
|
||||
;Installer Version Information
|
||||
VIAddVersionKey "ProductName" "qBittorrent"
|
||||
@ -71,7 +116,10 @@ VIAddVersionKey "LegalCopyright" "Copyright ©2006-2022 The qBittorrent project"
|
||||
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client"
|
||||
VIAddVersionKey "FileVersion" "${QBT_VERSION}"
|
||||
|
||||
VIProductVersion "${QBT_VERSION}.0"
|
||||
; 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
|
||||
|
2
dist/windows/installer.nsi
vendored
2
dist/windows/installer.nsi
vendored
@ -40,7 +40,7 @@ Section $(inst_qbt_req) ;"qBittorrent (required)"
|
||||
WriteRegStr HKLM "Software\qBittorrent" "InstallLocation" "$INSTDIR"
|
||||
|
||||
; Write the uninstall keys for Windows
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent ${QBT_VERSION}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayIcon" '"$INSTDIR\qbittorrent.exe",0'
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "Publisher" "The qBittorrent project"
|
||||
|
Loading…
Reference in New Issue
Block a user