Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Rename instances of win32 to generic win or the appropriate bit where applicable * Remove files used in GTK2 * Add spec file for use with PyInstaller * Remove Python bbfreeze Script * Add Modified script to make files used by NSIS * Update Readme
- Loading branch information
Showing
40 changed files
with
893 additions
and
1,290 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
= Deluge Installer for Windows = | ||
|
||
Instructions for building the Deluge NSIS Installer for Windows Vista/7/8/8.1/10/11. | ||
|
||
== Dependencies == | ||
* Deluge build: http://dev.deluge-torrent.org/wiki/Installing/Source#WindowsDependencies | ||
* PyInstaller: https://pypi.org/project/pyinstaller/ | ||
* NSIS: http://nsis.sourceforge.net/Download | ||
|
||
== Build Steps == | ||
|
||
1. Build and Install Deluge on Windows. | ||
|
||
2. Run the pyinstaller from the deluge\packaging\win directory with delugewin64.spec if you built deluge with 64-bit python or delugewin32.spec with 32-bit python: | ||
|
||
pyinstaller --clean delugewin64.spec --distpath .\packaging\win32\freeze | ||
|
||
The result is a PyInstaller version of Deluge in `packaging\win32\freeze`. | ||
|
||
3. Run the NSIS script (right-click and choose `Compile with NSIS`) | ||
|
||
The result is a standalone installer in the `packaging\win32` directory. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,215 @@ | ||
# Deluge Windows installer script | ||
# | ||
# Copyright (C) 2009 Jesper Lund <mail@jesperlund.com> | ||
# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com> | ||
# Copyright (C) 2009 John Garland <johnnybg@gmail.com> | ||
# | ||
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later. | ||
# See LICENSE for more details. | ||
# | ||
|
||
# Script version; displayed when running the installer | ||
!define DELUGE_INSTALLER_VERSION "2.0" | ||
|
||
# Deluge program information | ||
!define PROGRAM_NAME "Deluge" | ||
# Detect version from file | ||
!searchparse /file VERSION.tmp `build_version = "` PROGRAM_VERSION `"` | ||
!ifndef PROGRAM_VERSION | ||
!error "Program Version Undefined" | ||
!endif | ||
!define PROGRAM_WEB_SITE "http://deluge-torrent.org" | ||
!define LICENSE_FILEPATH "..\..\LICENSE" | ||
|
||
# Python files generated with bbfreeze | ||
!define INSTALLER_FILENAME "deluge-${PROGRAM_VERSION}-win64-setup.exe" | ||
|
||
# Set default compressor | ||
SetCompressor /FINAL /SOLID lzma | ||
SetCompressorDictSize 64 | ||
|
||
# --- Interface settings --- | ||
# Modern User Interface 2 | ||
!include MUI2.nsh | ||
# Installer | ||
!define MUI_ICON "..\..\deluge\ui\data\pixmaps\deluge.ico" | ||
!define MUI_HEADERIMAGE | ||
!define MUI_HEADERIMAGE_RIGHT | ||
!define MUI_HEADERIMAGE_BITMAP "installer-top.bmp" | ||
!define MUI_WELCOMEFINISHPAGE_BITMAP "installer-side.bmp" | ||
!define MUI_COMPONENTSPAGE_SMALLDESC | ||
!define MUI_FINISHPAGE_NOAUTOCLOSE | ||
!define MUI_ABORTWARNING | ||
# Start Menu Folder Page Configuration | ||
!define MUI_STARTMENUPAGE_DEFAULTFOLDER ${PROGRAM_NAME} | ||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCR" | ||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Deluge" | ||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" | ||
# Uninstaller | ||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" | ||
!define MUI_HEADERIMAGE_UNBITMAP "installer-top.bmp" | ||
!define MUI_WELCOMEFINISHPAGE_UNBITMAP "installer-side.bmp" | ||
!define MUI_UNFINISHPAGE_NOAUTOCLOSE | ||
|
||
!define MUI_FINISHPAGE_SHOWREADME "" | ||
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED | ||
!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut" | ||
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION finishpageaction | ||
|
||
# --- Start of Modern User Interface --- | ||
Var StartMenuFolder | ||
# Welcome, License & Components pages | ||
!insertmacro MUI_PAGE_WELCOME | ||
!insertmacro MUI_PAGE_LICENSE ${LICENSE_FILEPATH} | ||
!insertmacro MUI_PAGE_COMPONENTS | ||
# Let the user select the installation directory | ||
!insertmacro MUI_PAGE_DIRECTORY | ||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder | ||
# Run installation | ||
!insertmacro MUI_PAGE_INSTFILES | ||
# Display 'finished' page | ||
!insertmacro MUI_PAGE_FINISH | ||
# Uninstaller pages | ||
!insertmacro MUI_UNPAGE_INSTFILES | ||
# Language files | ||
!insertmacro MUI_LANGUAGE "English" | ||
|
||
|
||
# --- Functions --- | ||
|
||
# Check for running Deluge instance. | ||
Function .onInit | ||
System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "deluge") i .R0' | ||
IntCmp $R0 0 notRunning | ||
System::Call 'kernel32::CloseHandle(i $R0)' | ||
MessageBox MB_OK|MB_ICONEXCLAMATION "Deluge is running. Please close it first" /SD IDOK | ||
Abort | ||
notRunning: | ||
FunctionEnd | ||
|
||
Function un.onUninstSuccess | ||
HideWindow | ||
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK | ||
FunctionEnd | ||
|
||
Function un.onInit | ||
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to completely remove $(^Name)?" /SD IDYES IDYES +2 | ||
Abort | ||
FunctionEnd | ||
|
||
Function finishpageaction | ||
CreateShortCut "$DESKTOP\Deluge.lnk" "$INSTDIR\deluge.exe" | ||
FunctionEnd | ||
|
||
# --- Installation sections --- | ||
!define PROGRAM_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" | ||
!define PROGRAM_UNINST_ROOT_KEY "HKLM" | ||
!define PROGRAM_UNINST_FILENAME "$INSTDIR\deluge-uninst.exe" | ||
|
||
BrandingText "${PROGRAM_NAME} Windows Installer v${DELUGE_INSTALLER_VERSION}" | ||
Name "${PROGRAM_NAME} ${PROGRAM_VERSION}" | ||
OutFile "${INSTALLER_FILENAME}" | ||
InstallDir "$PROGRAMFILES64\Deluge" | ||
|
||
ShowInstDetails show | ||
ShowUnInstDetails show | ||
|
||
# Install main application | ||
Section "Deluge Bittorrent Client" Section1 | ||
SectionIn RO | ||
!include "install_files.nsh" | ||
|
||
SetOverwrite ifnewer | ||
SetOutPath "$INSTDIR" | ||
File ${LICENSE_FILEPATH} | ||
WriteIniStr "$INSTDIR\homepage.url" "InternetShortcut" "URL" "${PROGRAM_WEB_SITE}" | ||
|
||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application | ||
SetShellVarContext all | ||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder" | ||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Deluge.lnk" "$INSTDIR\deluge.exe" | ||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Website.lnk" "$INSTDIR\homepage.url" | ||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Deluge.lnk" ${PROGRAM_UNINST_FILENAME} | ||
!insertmacro MUI_STARTMENU_WRITE_END | ||
SectionEnd | ||
|
||
# Create .torrent file association. | ||
Section "Associate .torrent files with Deluge" Section2 | ||
DeleteRegKey HKCR ".torrent" | ||
WriteRegStr HKCR ".torrent" "" "Deluge" | ||
WriteRegStr HKCR ".torrent" "Content Type" "application/x-bittorrent" | ||
|
||
DeleteRegKey HKCR "Deluge" | ||
WriteRegStr HKCR "Deluge" "" "Deluge" | ||
WriteRegStr HKCR "Deluge\Content Type" "" "application/x-bittorrent" | ||
WriteRegStr HKCR "Deluge\DefaultIcon" "" "$INSTDIR\deluge.exe,0" | ||
WriteRegStr HKCR "Deluge\shell" "" "open" | ||
WriteRegStr HKCR "Deluge\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' | ||
SectionEnd | ||
|
||
# Create magnet uri association. | ||
Section "Associate Magnet URI links with Deluge" Section3 | ||
DeleteRegKey HKCR "Magnet" | ||
WriteRegStr HKCR "Magnet" "" "URL:Magnet Protocol" | ||
WriteRegStr HKCR "Magnet" "URL Protocol" "" | ||
WriteRegStr HKCR "Magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' | ||
SectionEnd | ||
|
||
LangString DESC_Section1 ${LANG_ENGLISH} "Install Deluge Bittorrent client." | ||
LangString DESC_Section2 ${LANG_ENGLISH} "Select this option to let Deluge handle the opening of .torrent files." | ||
LangString DESC_Section3 ${LANG_ENGLISH} "Select this option to let Deluge handle Magnet URI links from the web-browser." | ||
|
||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN | ||
!insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1) | ||
!insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) | ||
!insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) | ||
!insertmacro MUI_FUNCTION_DESCRIPTION_END | ||
|
||
# Create uninstaller. | ||
Section -Uninstaller | ||
WriteUninstaller ${PROGRAM_UNINST_FILENAME} | ||
WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayName" "$(^Name)" | ||
WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "UninstallString" ${PROGRAM_UNINST_FILENAME} | ||
SectionEnd | ||
|
||
# --- Uninstallation section --- | ||
Section Uninstall | ||
# Delete Deluge files. | ||
Delete "$INSTDIR\LICENSE" | ||
Delete "$INSTDIR\homepage.url" | ||
Delete ${PROGRAM_UNINST_FILENAME} | ||
!include "uninstall_files.nsh" | ||
|
||
# Delete Start Menu items. | ||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder | ||
SetShellVarContext all | ||
Delete "$SMPROGRAMS\$StartMenuFolder\Deluge.lnk" | ||
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Deluge.lnk" | ||
Delete "$SMPROGRAMS\$StartMenuFolder\Deluge Website.lnk" | ||
RmDir "$SMPROGRAMS\$StartMenuFolder" | ||
DeleteRegKey /ifempty HKCR "Software\Deluge" | ||
|
||
Delete "$DESKTOP\Deluge.lnk" | ||
|
||
# Delete registry keys. | ||
DeleteRegKey ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" | ||
# Only delete the .torrent association if Deluge owns it | ||
ReadRegStr $1 HKCR ".torrent" "" | ||
StrCmp $1 "Deluge" 0 DELUGE_skip_delete | ||
# Delete the key since it is owned by Deluge; afterwards there is no .torrent association | ||
DeleteRegKey HKCR ".torrent" | ||
DELUGE_skip_delete: | ||
# This key is only used by Deluge, so we should always delete it | ||
DeleteRegKey HKCR "Deluge" | ||
SectionEnd | ||
|
||
# Add version info to installer properties. | ||
VIProductVersion "${DELUGE_INSTALLER_VERSION}.0.0" | ||
VIAddVersionKey ProductName ${PROGRAM_NAME} | ||
VIAddVersionKey Comments "Deluge Bittorrent Client" | ||
VIAddVersionKey CompanyName "Deluge Team" | ||
VIAddVersionKey LegalCopyright "Deluge Team" | ||
VIAddVersionKey FileDescription "${PROGRAM_NAME} Application Installer" | ||
VIAddVersionKey FileVersion "${DELUGE_INSTALLER_VERSION}.0.0" | ||
VIAddVersionKey ProductVersion "${PROGRAM_VERSION}.0" | ||
VIAddVersionKey OriginalFilename ${INSTALLER_FILENAME} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
# | ||
# Copyright (C) 2012-2015 Calum Lind <calumlind@gmail.com> | ||
# Copyright (C) 2010 Damien Churchill <damoxc@gmail.com> | ||
# Copyright (C) 2009-2010 Andrew Resch <andrewresch@gmail.com> | ||
# Copyright (C) 2009 Jesper Lund <mail@jesperlund.com> | ||
# | ||
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with | ||
# the additional special exception to link portions of this program with the OpenSSL library. | ||
# See LICENSE for more details. | ||
# | ||
# isort:skip_file | ||
|
||
import os | ||
|
||
import deluge.common | ||
|
||
# Get build_version from installed deluge. | ||
build_version = deluge.common.get_version() | ||
print(build_version) | ||
build_dir = os.path.join('freeze', 'Deluge') | ||
print(build_dir) | ||
|
||
# Copy version info to file for nsis script. | ||
with open('VERSION.tmp', 'w') as ver_file: | ||
ver_file.write('build_version = "%s"' % build_version) | ||
|
||
# Create the install and uninstall file list for NSIS. | ||
filedir_list = [] | ||
for root, dirnames, filenames in os.walk(build_dir): | ||
dirnames.sort() | ||
filenames.sort() | ||
filedir_list.append((root[len(build_dir) :], filenames)) | ||
|
||
with open('install_files.nsh', 'w') as f: | ||
f.write('; Files to install\n') | ||
for dirname, files in filedir_list: | ||
if not dirname: | ||
dirname = os.sep | ||
f.write('\nSetOutPath "$INSTDIR%s"\n' % dirname) | ||
for filename in files: | ||
f.write('File ' + build_dir + os.path.join(dirname, filename) + '\n') | ||
|
||
with open('uninstall_files.nsh', 'w') as f: | ||
f.write('; Files to uninstall\n') | ||
for dirname, files in reversed(filedir_list): | ||
f.write('\n') | ||
if not dirname: | ||
dirname = os.sep | ||
for filename in files: | ||
f.write('Delete "$INSTDIR%s"\n' % os.path.join(dirname, filename)) | ||
f.write('RMDir "$INSTDIR%s"\n' % dirname) |
Oops, something went wrong.