mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-10 14:57:52 +00:00
Merge pull request #105 from sledgehammer999/packaging_scripts
Packaging script for Windows.
This commit is contained in:
commit
f691ce2238
42
src/windows/README.txt
Normal file
42
src/windows/README.txt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
You will need NSIS and upx to make the installer.
|
||||||
|
|
||||||
|
Open the qbittorrent.nsi file in an editor and change line that contains "!define PROG_VERSION "3.0.3"" to the version of qbittorrent you just built.
|
||||||
|
|
||||||
|
The installer script expects the following file tree:
|
||||||
|
|
||||||
|
Root:
|
||||||
|
translations
|
||||||
|
qt_ar.qm
|
||||||
|
qt_bg.qm
|
||||||
|
qt_ca.qm
|
||||||
|
qt_cs.qm
|
||||||
|
qt_da.qm
|
||||||
|
qt_de.qm
|
||||||
|
qt_es.qm
|
||||||
|
qt_fi.qm
|
||||||
|
qt_fr.qm
|
||||||
|
qt_gl.qm
|
||||||
|
qt_he.qm
|
||||||
|
qt_hu.qm
|
||||||
|
qt_it.qm
|
||||||
|
qt_ja.qm
|
||||||
|
qt_ko.qm
|
||||||
|
qt_lt.qm
|
||||||
|
qt_nl.qm
|
||||||
|
qt_pl.qm
|
||||||
|
qt_pt.qm
|
||||||
|
qt_pt_BR.qm
|
||||||
|
qt_ru.qm
|
||||||
|
qt_sk.qm
|
||||||
|
qt_sv.qm
|
||||||
|
qt_tr.qm
|
||||||
|
qt_uk.qm
|
||||||
|
qt_zh_CN.qm
|
||||||
|
qt_zh_TW.qm
|
||||||
|
license.txt
|
||||||
|
qbittorrent.exe
|
||||||
|
qbittorrent.nsi
|
||||||
|
qt.conf
|
||||||
|
|
||||||
|
|
||||||
|
license.txt is a text file that contains the text rendered from src\gpl.html
|
316
src/windows/qbittorrent.nsi
Normal file
316
src/windows/qbittorrent.nsi
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
;Compress the header too
|
||||||
|
!packhdr "$%TEMP%\exehead.tmp" 'upx.exe -9 --best --ultra-brute "$%TEMP%\exehead.tmp"'
|
||||||
|
|
||||||
|
;Setting the compression
|
||||||
|
SetCompressor /SOLID LZMA
|
||||||
|
SetCompressorDictSize 64
|
||||||
|
XPStyle on
|
||||||
|
|
||||||
|
!include "MUI.nsh"
|
||||||
|
|
||||||
|
;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 PROG_VERSION "3.0.3"
|
||||||
|
|
||||||
|
; The name of the installer
|
||||||
|
Name "qBittorrent"
|
||||||
|
|
||||||
|
; The file to write
|
||||||
|
OutFile "qbittorrent_${PROG_VERSION}_setup.exe"
|
||||||
|
|
||||||
|
; The default installation directory
|
||||||
|
InstallDir $PROGRAMFILES\qBittorrent
|
||||||
|
|
||||||
|
; 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 admin
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
|
||||||
|
; Pages
|
||||||
|
;Interface Settings
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
!define MUI_HEADERIMAGE
|
||||||
|
!define MUI_COMPONENTSPAGE_NODESC
|
||||||
|
;!define MUI_ICON "qbittorrent.ico"
|
||||||
|
!define MUI_LICENSEPAGE_CHECKBOX
|
||||||
|
!define MUI_LANGDLL_ALLLANGUAGES
|
||||||
|
|
||||||
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
!insertmacro MUI_PAGE_LICENSE "license.txt"
|
||||||
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
!insertmacro MUI_UNPAGE_COMPONENTS
|
||||||
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
|
!insertmacro MUI_LANGUAGE "English"
|
||||||
|
!insertmacro MUI_LANGUAGE "Afrikaans"
|
||||||
|
!insertmacro MUI_LANGUAGE "Albanian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Arabic"
|
||||||
|
!insertmacro MUI_LANGUAGE "Basque"
|
||||||
|
!insertmacro MUI_LANGUAGE "Belarusian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Bosnian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Breton"
|
||||||
|
!insertmacro MUI_LANGUAGE "Bulgarian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Catalan"
|
||||||
|
!insertmacro MUI_LANGUAGE "Croatian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Czech"
|
||||||
|
!insertmacro MUI_LANGUAGE "Danish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Dutch"
|
||||||
|
!insertmacro MUI_LANGUAGE "Esperanto"
|
||||||
|
!insertmacro MUI_LANGUAGE "Estonian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Farsi"
|
||||||
|
!insertmacro MUI_LANGUAGE "Finnish"
|
||||||
|
!insertmacro MUI_LANGUAGE "French"
|
||||||
|
!insertmacro MUI_LANGUAGE "Galician"
|
||||||
|
!insertmacro MUI_LANGUAGE "German"
|
||||||
|
!insertmacro MUI_LANGUAGE "Greek"
|
||||||
|
!insertmacro MUI_LANGUAGE "Hebrew"
|
||||||
|
!insertmacro MUI_LANGUAGE "Hungarian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Icelandic"
|
||||||
|
!insertmacro MUI_LANGUAGE "Indonesian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Irish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Italian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Japanese"
|
||||||
|
!insertmacro MUI_LANGUAGE "Korean"
|
||||||
|
!insertmacro MUI_LANGUAGE "Kurdish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Latvian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Lithuanian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Luxembourgish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Macedonian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Malay"
|
||||||
|
!insertmacro MUI_LANGUAGE "Mongolian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Norwegian"
|
||||||
|
!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
|
||||||
|
!insertmacro MUI_LANGUAGE "Polish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||||
|
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||||
|
!insertmacro MUI_LANGUAGE "Romanian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Russian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Serbian"
|
||||||
|
!insertmacro MUI_LANGUAGE "SerbianLatin"
|
||||||
|
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||||
|
!insertmacro MUI_LANGUAGE "Slovak"
|
||||||
|
!insertmacro MUI_LANGUAGE "Slovenian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Spanish"
|
||||||
|
!insertmacro MUI_LANGUAGE "SpanishInternational"
|
||||||
|
!insertmacro MUI_LANGUAGE "Swedish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Thai"
|
||||||
|
!insertmacro MUI_LANGUAGE "TradChinese"
|
||||||
|
!insertmacro MUI_LANGUAGE "Turkish"
|
||||||
|
!insertmacro MUI_LANGUAGE "Ukrainian"
|
||||||
|
!insertmacro MUI_LANGUAGE "Uzbek"
|
||||||
|
!insertmacro MUI_LANGUAGE "Welsh"
|
||||||
|
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
|
||||||
|
; The stuff to install
|
||||||
|
Section "qBittorrent (required)"
|
||||||
|
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; Set output path to the installation directory.
|
||||||
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
|
;Create 'translations' directory
|
||||||
|
CreateDirectory $INSTDIR\translations
|
||||||
|
|
||||||
|
; Put file there
|
||||||
|
File "qbittorrent.exe"
|
||||||
|
File "qt.conf"
|
||||||
|
File /oname=translations\qt_ar.qm "translations\qt_ar.qm"
|
||||||
|
File /oname=translations\qt_bg.qm "translations\qt_bg.qm"
|
||||||
|
File /oname=translations\qt_ca.qm "translations\qt_ca.qm"
|
||||||
|
File /oname=translations\qt_cs.qm "translations\qt_cs.qm"
|
||||||
|
File /oname=translations\qt_da.qm "translations\qt_da.qm"
|
||||||
|
File /oname=translations\qt_de.qm "translations\qt_de.qm"
|
||||||
|
File /oname=translations\qt_es.qm "translations\qt_es.qm"
|
||||||
|
File /oname=translations\qt_fi.qm "translations\qt_fi.qm"
|
||||||
|
File /oname=translations\qt_fr.qm "translations\qt_fr.qm"
|
||||||
|
File /oname=translations\qt_gl.qm "translations\qt_gl.qm"
|
||||||
|
File /oname=translations\qt_he.qm "translations\qt_he.qm"
|
||||||
|
File /oname=translations\qt_hu.qm "translations\qt_hu.qm"
|
||||||
|
File /oname=translations\qt_it.qm "translations\qt_it.qm"
|
||||||
|
File /oname=translations\qt_ja.qm "translations\qt_ja.qm"
|
||||||
|
File /oname=translations\qt_ko.qm "translations\qt_ko.qm"
|
||||||
|
File /oname=translations\qt_lt.qm "translations\qt_lt.qm"
|
||||||
|
File /oname=translations\qt_nl.qm "translations\qt_nl.qm"
|
||||||
|
File /oname=translations\qt_pl.qm "translations\qt_pl.qm"
|
||||||
|
File /oname=translations\qt_pt.qm "translations\qt_pt.qm"
|
||||||
|
File /oname=translations\qt_pt_BR.qm "translations\qt_pt_BR.qm"
|
||||||
|
File /oname=translations\qt_ru.qm "translations\qt_ru.qm"
|
||||||
|
File /oname=translations\qt_sk.qm "translations\qt_sk.qm"
|
||||||
|
File /oname=translations\qt_sv.qm "translations\qt_sv.qm"
|
||||||
|
File /oname=translations\qt_tr.qm "translations\qt_tr.qm"
|
||||||
|
File /oname=translations\qt_uk.qm "translations\qt_uk.qm"
|
||||||
|
File /oname=translations\qt_zh_CN.qm "translations\qt_zh_CN.qm"
|
||||||
|
File /oname=translations\qt_zh_TW.qm "translations\qt_zh_TW.qm"
|
||||||
|
|
||||||
|
; Write the installation path into the registry
|
||||||
|
WriteRegStr HKLM "Software\qbittorrent" "InstallLocation" "$INSTDIR"
|
||||||
|
|
||||||
|
; Write the uninstall keys for Windows
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qbittorrent" "DisplayName" "qBittorrent ${PROG_VERSION}"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qbittorrent" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||||
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qbittorrent" "NoModify" 1
|
||||||
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qbittorrent" "NoRepair" 1
|
||||||
|
WriteUninstaller "uninst.exe"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; Optional section (can be disabled by the user)
|
||||||
|
Section /o "Create Desktop Shortcut"
|
||||||
|
|
||||||
|
CreateShortCut "$DESKTOP\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Create Start Menu Shortcut"
|
||||||
|
|
||||||
|
CreateDirectory "$SMPROGRAMS\qBittorrent"
|
||||||
|
CreateShortCut "$SMPROGRAMS\qBittorrent\qBittorrent.lnk" "$INSTDIR\qbittorrent.exe"
|
||||||
|
CreateShortCut "$SMPROGRAMS\qBittorrent\Uninstall.lnk" "$INSTDIR\uninst.exe"
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Open .torrent files with qBittorrent"
|
||||||
|
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT ".torrent" "" "qBittorrent"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT ".torrent" "Content Type" "application/x-bittorrent"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "qBittorrent\shell" "" "open"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "qBittorrent\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "qBittorrent\Content Type" "" "application/x-bittorrent"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "qBittorrent\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
|
||||||
|
|
||||||
|
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Open magnet links with qBittorrent"
|
||||||
|
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet" "" "Magnet URI"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet" "Content Type" "application/x-magnet"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet" "URL Protocol" ""
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet\DefaultIcon" "" '"$INSTDIR\qbittorrent.exe",1'
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet\shell" "" "open"
|
||||||
|
WriteRegStr HKEY_CLASSES_ROOT "Magnet\shell\open\command" "" '"$INSTDIR\qbittorrent.exe" "%1"'
|
||||||
|
|
||||||
|
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||||
|
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
|
||||||
|
Function .onInit
|
||||||
|
;Search if qBittorrent is already installed.
|
||||||
|
FindFirst $0 $1 "$INSTDIR\uninst.exe"
|
||||||
|
FindClose $0
|
||||||
|
StrCmp $1 "" done
|
||||||
|
|
||||||
|
;Display a confirmation dialog
|
||||||
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
|
||||||
|
"qBittorrent is already installed. $\n$\nClick $\"OK$\" to remove the \
|
||||||
|
previous version or $\"Cancel$\" to cancel this upgrade." IDOK uninst
|
||||||
|
Abort
|
||||||
|
|
||||||
|
|
||||||
|
uninst:
|
||||||
|
;Run the uninstaller of the previous install.
|
||||||
|
ExecWait '"$INSTDIR\uninst.exe" _?=$INSTDIR'
|
||||||
|
|
||||||
|
done:
|
||||||
|
!insertmacro MUI_LANGDLL_DISPLAY
|
||||||
|
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
|
||||||
|
; Uninstaller
|
||||||
|
|
||||||
|
Section "un.Remove files"
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; Remove files and uninstaller
|
||||||
|
Delete "$INSTDIR\qbittorrent.exe"
|
||||||
|
Delete "$INSTDIR\qt.conf"
|
||||||
|
Delete "$INSTDIR\translations\qt_ar.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_bg.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_ca.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_cs.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_da.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_de.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_es.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_fa.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_fi.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_fr.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_gl.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_he.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_hu.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_it.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_ja.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_ko.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_lt.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_nl.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_pl.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_pt.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_pt_BR.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_ru.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_sk.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_sl.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_sv.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_tr.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_uk.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_zh_CN.qm"
|
||||||
|
Delete "$INSTDIR\translations\qt_zh_TW.qm"
|
||||||
|
Delete "$INSTDIR\uninst.exe"
|
||||||
|
|
||||||
|
; Remove directories used
|
||||||
|
RMDir "$SMPROGRAMS\qBittorrent"
|
||||||
|
RMDir "$INSTDIR\translations"
|
||||||
|
RMDir "$INSTDIR"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "un.Remove shortcuts"
|
||||||
|
SectionIn RO
|
||||||
|
; Remove shortcuts, if any
|
||||||
|
Delete "$SMPROGRAMS\qBittorrent\*.*"
|
||||||
|
Delete "$DESKTOP\qBittorrent.lnk"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "un.Remove file associations"
|
||||||
|
SectionIn RO
|
||||||
|
DeleteRegKey HKEY_CLASSES_ROOT ".torrent"
|
||||||
|
DeleteRegKey HKEY_CLASSES_ROOT "qBittorrent"
|
||||||
|
DeleteRegKey HKEY_CLASSES_ROOT "Magnet"
|
||||||
|
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "un.Remove registry keys"
|
||||||
|
SectionIn RO
|
||||||
|
; Remove registry keys
|
||||||
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qbittorrent"
|
||||||
|
DeleteRegKey HKLM "Software\qbittorrent"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section /o "un.Remove configuration files"
|
||||||
|
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_APPDATA}, i0)i.r0'
|
||||||
|
RMDir /r "$1\qBittorrent"
|
||||||
|
|
||||||
|
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_LOCALAPPDATA}, i0)i.r0'
|
||||||
|
RMDir /r "$1\qBittorrent\"
|
||||||
|
SectionEnd
|
2
src/windows/qt.conf
Normal file
2
src/windows/qt.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[Paths]
|
||||||
|
Translations = translations
|
Loading…
Reference in New Issue
Block a user