forked from LBRYCommunity/lbry-sdk
commit
561fe757f3
4 changed files with 141 additions and 41 deletions
54
packaging/uri_handler/LBRYURIRegistry.py
Normal file
54
packaging/uri_handler/LBRYURIRegistry.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
import _winreg as winreg
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import win32con
|
||||||
|
import win32gui
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
install = 'remove' not in sys.argv[1]
|
||||||
|
except:
|
||||||
|
install = True
|
||||||
|
lbry_path = os.path.join(os.environ["ProgramFiles"], "LBRY", "LBRY.exe")
|
||||||
|
|
||||||
|
key_url = 'lbry'
|
||||||
|
try:
|
||||||
|
key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, key_url, 0, winreg.KEY_ALL_ACCESS)
|
||||||
|
except:
|
||||||
|
key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, key_url)
|
||||||
|
if install:
|
||||||
|
winreg.SetValueEx(key, None, 0, winreg.REG_SZ, "URL:LBRY Protocol")
|
||||||
|
winreg.SetValueEx(key, "URL Protocol", 0, winreg.REG_SZ, "")
|
||||||
|
else:
|
||||||
|
winreg.DeleteKey(winreg.HKEY_CLASSES_ROOT, key_url)
|
||||||
|
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
|
||||||
|
key_icon = os.path.join('lbry', 'DefaultIcon')
|
||||||
|
try:
|
||||||
|
key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, key_icon, 0, winreg.KEY_ALL_ACCESS)
|
||||||
|
except:
|
||||||
|
key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, key_icon)
|
||||||
|
if install:
|
||||||
|
winreg.SetValueEx(key, None, 0, winreg.REG_SZ, "\"LBRY.exe,1\"")
|
||||||
|
else:
|
||||||
|
winreg.DeleteKey(winreg.HKEY_CLASSES_ROOT, key_icon)
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
|
||||||
|
key_command = os.path.join('lbry', 'shell', 'open', 'command')
|
||||||
|
try:
|
||||||
|
key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, key_command, 0, winreg.KEY_ALL_ACCESS)
|
||||||
|
except:
|
||||||
|
key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, key_command)
|
||||||
|
if install:
|
||||||
|
winreg.SetValueEx(key, None, 0, winreg.REG_SZ, "\"{0}\" \"%1\"".format(lbry_path))
|
||||||
|
else:
|
||||||
|
winreg.DeleteKey(winreg.HKEY_CLASSES_ROOT, key_command)
|
||||||
|
winreg.CloseKey(key)
|
||||||
|
|
||||||
|
win32gui.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment')
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -5,7 +5,7 @@ Windows Registry Editor Version 5.00
|
||||||
"URL Protocol"=""
|
"URL Protocol"=""
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\lbry\DefaultIcon]
|
[HKEY_CLASSES_ROOT\lbry\DefaultIcon]
|
||||||
@="LBRY.exe,1"
|
@="\"LBRY.exe,1\""
|
||||||
|
|
||||||
[HKEY_CLASSES_ROOT\lbry\shell]
|
[HKEY_CLASSES_ROOT\lbry\shell]
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import win32gui_struct
|
||||||
from jsonrpc.proxy import JSONRPCProxy
|
from jsonrpc.proxy import JSONRPCProxy
|
||||||
from twisted.internet import reactor, error
|
from twisted.internet import reactor, error
|
||||||
from twisted.web import server
|
from twisted.web import server
|
||||||
|
import twisted
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import winxpgui as win32gui
|
import winxpgui as win32gui
|
||||||
|
@ -19,15 +20,21 @@ except ImportError:
|
||||||
|
|
||||||
from lbrynet.lbrynet_daemon.LBRYDaemonServer import LBRYDaemonServer, LBRYDaemonRequest
|
from lbrynet.lbrynet_daemon.LBRYDaemonServer import LBRYDaemonServer, LBRYDaemonRequest
|
||||||
from lbrynet.conf import API_PORT, API_INTERFACE, ICON_PATH, APP_NAME
|
from lbrynet.conf import API_PORT, API_INTERFACE, ICON_PATH, APP_NAME
|
||||||
from lbrynet.conf import UI_ADDRESS, API_CONNECTION_STRING
|
from lbrynet.conf import UI_ADDRESS, API_CONNECTION_STRING, LOG_FILE_NAME
|
||||||
from packaging.uri_handler.LBRYURIHandler import LBRYURIHandler
|
from packaging.uri_handler.LBRYURIHandler import LBRYURIHandler
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: omg, this code is essentially duplicated in LBRYDaemon
|
||||||
|
data_dir = os.path.join(os.path.expanduser("~"), ".lbrynet")
|
||||||
|
if not os.path.isdir(data_dir):
|
||||||
|
os.mkdir(data_dir)
|
||||||
|
|
||||||
|
lbrynet_log = os.path.join(data_dir, LOG_FILE_NAME)
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
if getattr(sys, 'frozen', False) and os.name == "nt":
|
if getattr(sys, 'frozen', False) and os.name == "nt":
|
||||||
os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(os.path.dirname(sys.executable), "cacert.pem")
|
os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(os.path.dirname(sys.executable), "cacert.pem")
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
REMOTE_SERVER = "www.google.com"
|
REMOTE_SERVER = "www.google.com"
|
||||||
|
|
||||||
|
|
||||||
|
@ -282,7 +289,11 @@ def main(lbry_name=None):
|
||||||
d.addCallback(lambda _: LBRYURIHandler.open_address(lbry_name))
|
d.addCallback(lambda _: LBRYURIHandler.open_address(lbry_name))
|
||||||
lbrynet_server = server.Site(lbry.root)
|
lbrynet_server = server.Site(lbry.root)
|
||||||
lbrynet_server.requestFactory = LBRYDaemonRequest
|
lbrynet_server.requestFactory = LBRYDaemonRequest
|
||||||
reactor.listenTCP(API_PORT, lbrynet_server, interface=API_INTERFACE)
|
try:
|
||||||
|
reactor.listenTCP(API_PORT, lbrynet_server, interface=API_INTERFACE)
|
||||||
|
except error.CannotListenError:
|
||||||
|
log.info('Daemon already running, exiting app')
|
||||||
|
sys.exit(1)
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -298,7 +309,7 @@ if __name__ == '__main__':
|
||||||
lbry_name = LBRYURIHandler.parse_name(sys.argv[1])
|
lbry_name = LBRYURIHandler.parse_name(sys.argv[1])
|
||||||
except IndexError:
|
except IndexError:
|
||||||
lbry_name = None
|
lbry_name = None
|
||||||
|
start_daemon = True
|
||||||
if start_daemon:
|
if start_daemon:
|
||||||
main(lbry_name)
|
main(lbry_name)
|
||||||
else:
|
else:
|
||||||
|
|
105
setup.py
105
setup.py
|
@ -124,7 +124,9 @@ elif platform == WINDOWS:
|
||||||
from cx_Freeze import setup, Executable
|
from cx_Freeze import setup, Executable
|
||||||
import requests.certs
|
import requests.certs
|
||||||
|
|
||||||
win_icon = os.path.join('packaging', 'windows', 'lbry-win32-app', 'icons', 'lbry256.ico')
|
app_dir = os.path.join('packaging', 'windows', 'lbry-win32-app')
|
||||||
|
daemon_dir = os.path.join('lbrynet', 'lbrynet_daemon')
|
||||||
|
win_icon = os.path.join(app_dir, 'icons', 'lbry256.ico')
|
||||||
wordlist_path = pkg_resources.resource_filename('lbryum', 'wordlist')
|
wordlist_path = pkg_resources.resource_filename('lbryum', 'wordlist')
|
||||||
|
|
||||||
# Allow virtualenv to find distutils of base python installation
|
# Allow virtualenv to find distutils of base python installation
|
||||||
|
@ -140,26 +142,8 @@ elif platform == WINDOWS:
|
||||||
data_dir = os.path.dirname(__file__)
|
data_dir = os.path.dirname(__file__)
|
||||||
return os.path.join(data_dir, filename)
|
return os.path.join(data_dir, filename)
|
||||||
|
|
||||||
if os.path.isdir("C:\Program Files (x86)"):
|
|
||||||
shortcut_icon = 'C:\Program Files (x86)\lbrynet\icons\lbry256.ico'
|
|
||||||
else:
|
|
||||||
shortcut_icon = 'C:\Program Files\lbrynet\icons\lbry256.ico'
|
|
||||||
|
|
||||||
shortcut_table = [
|
shortcut_table = [
|
||||||
('DesktopShortcut', # Shortcut
|
('LBRYShortcut', # Shortcut
|
||||||
'DesktopFolder', # Directory
|
|
||||||
'lbrynet-daemon', # Name
|
|
||||||
'TARGETDIR', # Component
|
|
||||||
'[TARGETDIR]\lbrynet-daemon.exe', # Target
|
|
||||||
'--log-to-console', # Arguments
|
|
||||||
description, # Description
|
|
||||||
None, # Hotkey
|
|
||||||
shortcut_icon, # Icon
|
|
||||||
None, # IconIndex
|
|
||||||
None, # ShowCmd
|
|
||||||
'TARGETDIR', # WkDir
|
|
||||||
),
|
|
||||||
('DaemonShortcut', # Shortcut
|
|
||||||
'DesktopFolder', # Directory
|
'DesktopFolder', # Directory
|
||||||
'LBRY', # Name
|
'LBRY', # Name
|
||||||
'TARGETDIR', # Component
|
'TARGETDIR', # Component
|
||||||
|
@ -167,7 +151,20 @@ elif platform == WINDOWS:
|
||||||
None, # Arguments
|
None, # Arguments
|
||||||
description, # Description
|
description, # Description
|
||||||
None, # Hotkey
|
None, # Hotkey
|
||||||
shortcut_icon, # Icon
|
None, # Icon
|
||||||
|
None, # IconIndex
|
||||||
|
None, # ShowCmd
|
||||||
|
'TARGETDIR', # WkDir
|
||||||
|
),
|
||||||
|
('DaemonShortcut', # Shortcut
|
||||||
|
'DesktopFolder', # Directory
|
||||||
|
'lbrynet-daemon', # Name
|
||||||
|
'TARGETDIR', # Component
|
||||||
|
'[TARGETDIR]\lbrynet-daemon.exe', # Target
|
||||||
|
'--log-to-console', # Arguments
|
||||||
|
description, # Description
|
||||||
|
None, # Hotkey
|
||||||
|
None, # Icon
|
||||||
None, # IconIndex
|
None, # IconIndex
|
||||||
None, # ShowCmd
|
None, # ShowCmd
|
||||||
'TARGETDIR', # WkDir
|
'TARGETDIR', # WkDir
|
||||||
|
@ -180,7 +177,49 @@ elif platform == WINDOWS:
|
||||||
None, # Arguments
|
None, # Arguments
|
||||||
description, # Description
|
description, # Description
|
||||||
None, # Hotkey
|
None, # Hotkey
|
||||||
shortcut_icon, # Icon
|
None, # Icon
|
||||||
|
None, # IconIndex
|
||||||
|
None, # ShowCmd
|
||||||
|
'TARGETDIR', # WkDir
|
||||||
|
),
|
||||||
|
('ProgramMenuLBRYShortcut', # Shortcut
|
||||||
|
'ProgramMenuFolder', # Directory
|
||||||
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
||||||
|
'LBRY', # Name
|
||||||
|
'TARGETDIR', # Component
|
||||||
|
'[TARGETDIR]\{0}.exe'.format(dist_name), # Target
|
||||||
|
None, # Arguments
|
||||||
|
description, # Description
|
||||||
|
None, # Hotkey
|
||||||
|
None, # Icon
|
||||||
|
None, # IconIndex
|
||||||
|
None, # ShowCmd
|
||||||
|
'TARGETDIR', # WkDir
|
||||||
|
),
|
||||||
|
('ProgramMenuDaemonShortcut', # Shortcut
|
||||||
|
'ProgramMenuFolder', # Directory
|
||||||
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
||||||
|
'lbrynet-daemon', # Name
|
||||||
|
'TARGETDIR', # Component
|
||||||
|
'[TARGETDIR]\lbrynet-daemon.exe', # Target
|
||||||
|
'--log-to-console', # Arguments
|
||||||
|
description, # Description
|
||||||
|
None, # Hotkey
|
||||||
|
None, # Icon
|
||||||
|
None, # IconIndex
|
||||||
|
None, # ShowCmd
|
||||||
|
'TARGETDIR', # WkDir
|
||||||
|
),
|
||||||
|
('ProgramMenuDaemonCLIShortcut', # Shortcut
|
||||||
|
'ProgramMenuFolder', # Directory
|
||||||
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
||||||
|
'lbrynet-cli', # Name
|
||||||
|
'TARGETDIR', # Component
|
||||||
|
'[TARGETDIR]\lbrynet-cli.exe', # Target
|
||||||
|
None, # Arguments
|
||||||
|
description, # Description
|
||||||
|
None, # Hotkey
|
||||||
|
None, # Icon
|
||||||
None, # IconIndex
|
None, # IconIndex
|
||||||
None, # ShowCmd
|
None, # ShowCmd
|
||||||
'TARGETDIR', # WkDir
|
'TARGETDIR', # WkDir
|
||||||
|
@ -240,10 +279,8 @@ elif platform == WINDOWS:
|
||||||
'Tkinter', 'tk', 'tcl', 'PyQt4', 'nose', 'mock'
|
'Tkinter', 'tk', 'tcl', 'PyQt4', 'nose', 'mock'
|
||||||
'zope.interface._zope_interface_coptimizations', 'leveldb'],
|
'zope.interface._zope_interface_coptimizations', 'leveldb'],
|
||||||
'include_files': [(distutils_path, 'distutils'), (requests.certs.where(), 'cacert.pem'),
|
'include_files': [(distutils_path, 'distutils'), (requests.certs.where(), 'cacert.pem'),
|
||||||
(os.path.join('packaging', 'windows', 'lbry-win32-app', 'icons', 'lbry16.ico'),
|
(os.path.join(app_dir, 'icons', 'lbry16.ico'), os.path.join('icons', 'lbry16.ico')),
|
||||||
os.path.join('icons', 'lbry16.ico')),
|
(os.path.join(app_dir, 'icons', 'lbry256.ico'), os.path.join('icons', 'lbry256.ico')),
|
||||||
(os.path.join('packaging', 'windows', 'lbry-win32-app', 'icons', 'lbry256.ico'),
|
|
||||||
os.path.join('icons', 'lbry256.ico')),
|
|
||||||
(os.path.join(wordlist_path, 'chinese_simplified.txt'),
|
(os.path.join(wordlist_path, 'chinese_simplified.txt'),
|
||||||
os.path.join('wordlist', 'chinese_simplified.txt')),
|
os.path.join('wordlist', 'chinese_simplified.txt')),
|
||||||
(os.path.join(wordlist_path, 'english.txt'), os.path.join('wordlist', 'english.txt')),
|
(os.path.join(wordlist_path, 'english.txt'), os.path.join('wordlist', 'english.txt')),
|
||||||
|
@ -254,30 +291,28 @@ elif platform == WINDOWS:
|
||||||
'namespace_packages': ['zope', 'google']}
|
'namespace_packages': ['zope', 'google']}
|
||||||
|
|
||||||
tray_app = Executable(
|
tray_app = Executable(
|
||||||
script=os.path.join('packaging', 'windows', 'lbry-win32-app', 'LBRYWin32App.py'),
|
script=os.path.join(app_dir, 'LBRYWin32App.py'),
|
||||||
base='Win32GUI',
|
base='Win32GUI',
|
||||||
icon=win_icon,
|
icon=win_icon,
|
||||||
compress=True,
|
compress=True,
|
||||||
shortcutName=dist_name,
|
# shortcutName=dist_name,
|
||||||
shortcutDir='DesktopFolder',
|
# shortcutDir='DesktopFolder',
|
||||||
targetName='{0}.exe'.format(dist_name)
|
targetName='{0}.exe'.format(dist_name)
|
||||||
# targetDir="LocalAppDataFolder"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
daemon_dir = os.path.join('lbrynet', 'lbrynet_daemon')
|
|
||||||
daemon_exe = Executable(
|
daemon_exe = Executable(
|
||||||
script=os.path.join(daemon_dir, 'LBRYDaemonControl.py'),
|
script=os.path.join(daemon_dir, 'LBRYDaemonControl.py'),
|
||||||
icon=win_icon,
|
icon=win_icon,
|
||||||
shortcutName="lbrynet-daemon",
|
# shortcutName="lbrynet-daemon",
|
||||||
shortcutDir='DesktopFolder',
|
# shortcutDir='DesktopFolder',
|
||||||
targetName='lbrynet-daemon.exe'
|
targetName='lbrynet-daemon.exe'
|
||||||
)
|
)
|
||||||
|
|
||||||
cli_exe = Executable(
|
cli_exe = Executable(
|
||||||
script=os.path.join(daemon_dir, 'LBRYDaemonCLI.py'),
|
script=os.path.join(daemon_dir, 'LBRYDaemonCLI.py'),
|
||||||
icon=win_icon,
|
icon=win_icon,
|
||||||
shortcutName="lbrynet-cli",
|
# shortcutName="lbrynet-cli",
|
||||||
shortcutDir='DesktopFolder',
|
# shortcutDir='DesktopFolder',
|
||||||
targetName='lbrynet-cli.exe'
|
targetName='lbrynet-cli.exe'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue