diff --git a/ChangeLog b/ChangeLog index c9124bc99..36f060ec5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -33,6 +33,7 @@ * #378: Allow showing a pieces bar instead of a regular progress bar in a torrent's status tab. * #2093: Make torrent opening compatible with all unicode paths. + * #1084: Fix magnet association button on Windows ==== WebUI ==== * Server (deluge-web) now daemonizes by default, use -d or --do-not-daemonize to disable. diff --git a/deluge/ui/gtkui/common.py b/deluge/ui/gtkui/common.py index e893d98a1..960a862af 100644 --- a/deluge/ui/gtkui/common.py +++ b/deluge/ui/gtkui/common.py @@ -12,6 +12,7 @@ import cPickle import logging import os import shutil +import sys import gtk import pygtk @@ -158,7 +159,29 @@ def associate_magnet_links(overwrite=False): Returns: bool: True if association was set """ - if not deluge.common.windows_check(): + + if deluge.common.windows_check(): + import _winreg + + try: + hkey = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, "Magnet") + except WindowsError: + overwrite = True + else: + _winreg.CloseKey(hkey) + + if overwrite: + deluge_exe = os.path.join(os.path.dirname(sys.executable), "deluge.exe") + magnet_key = _winreg.CreateKey(_winreg.HKEY_CLASSES_ROOT, "Magnet") + _winreg.SetValue(magnet_key, "", _winreg.REG_SZ, "URL:Magnet Protocol") + _winreg.SetValueEx(magnet_key, "URL Protocol", 0, _winreg.REG_SZ, "") + _winreg.SetValueEx(magnet_key, "BrowserFlags", 0, _winreg.REG_DWORD, 0x8) + _winreg.SetValue(magnet_key, "DefaultIcon", _winreg.REG_SZ, "{},0".format(deluge_exe)) + _winreg.SetValue(magnet_key, r"shell\open\command", _winreg.REG_SZ, '"{}" "%1"'.format(deluge_exe)) + _winreg.CloseKey(magnet_key) + + # Don't try associate magnet on OSX see: #2420 + elif not deluge.common.osx_check(): # gconf method is only available in a GNOME environment try: import gconf diff --git a/win32/deluge-win32-installer.nsi b/win32/deluge-win32-installer.nsi index 8b4d5a7ac..82f9e66c8 100644 --- a/win32/deluge-win32-installer.nsi +++ b/win32/deluge-win32-installer.nsi @@ -161,11 +161,11 @@ SectionEnd # Create magnet uri association Section "Create magnet uri link association for Deluge" Section3 - DeleteRegKey HKCR "magnet" - WriteRegStr HKCR "magnet" "" "URL:magnet protocol" - WriteRegStr HKCR "magnet" "URL Protocol" "" + DeleteRegKey HKCR "Magnet" + WriteRegStr HKCR "Magnet" "" "URL:Magnet Protocol" + WriteRegStr HKCR "Magnet" "URL Protocol" "" - WriteRegStr HKCR "magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' + WriteRegStr HKCR "Magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' SectionEnd