windows autostart
This commit is contained in:
parent
0551a18cc9
commit
18aebe76d3
5 changed files with 67 additions and 4 deletions
|
@ -74,6 +74,14 @@ def command_restart(*args):
|
||||||
Restart Open Media Libary
|
Restart Open Media Libary
|
||||||
"""
|
"""
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
|
from urllib.request import urlopen
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
url = 'http://{address}:{port}/api/'.format(**settings.server)
|
||||||
|
data = urlencode({'action': 'quit', 'data': '{}'}).encode()
|
||||||
|
try:
|
||||||
|
urlopen(url, data, timeout=2)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
from utils import check_pid, ctl
|
from utils import check_pid, ctl
|
||||||
pidfile = os.path.join(settings.data_path, 'openmedialibrary.pid')
|
pidfile = os.path.join(settings.data_path, 'openmedialibrary.pid')
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -10,10 +10,13 @@ root_dir = os.path.dirname(settings.base_dir)
|
||||||
def install_autostart():
|
def install_autostart():
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
install_launchd()
|
install_launchd()
|
||||||
elif sys.platform.startswith('linux'):
|
elif sys.platform == 'win32':
|
||||||
|
install_autostart_win32()
|
||||||
|
elif sys.platform.startswith('linux') or \
|
||||||
|
os.path.exists(os.path.expanduser('~/.config/autostart')):
|
||||||
install_autostart_xdg()
|
install_autostart_xdg()
|
||||||
else:
|
else:
|
||||||
print('no launcher integration supported for %s' % sys.platform)
|
print('no autostart support for %s' % sys.platform)
|
||||||
|
|
||||||
|
|
||||||
def uninstall_autostart():
|
def uninstall_autostart():
|
||||||
|
@ -30,6 +33,10 @@ def uninstall_autostart():
|
||||||
]):
|
]):
|
||||||
if os.path.exists(f):
|
if os.path.exists(f):
|
||||||
os.unlink(f)
|
os.unlink(f)
|
||||||
|
elif sys.platform == 'win32':
|
||||||
|
lnk = get_startup_path()
|
||||||
|
if os.path.exists(lnk):
|
||||||
|
os.unlink(lnk)
|
||||||
|
|
||||||
def install_launcher():
|
def install_launcher():
|
||||||
if sys.platform.startswith('linux'):
|
if sys.platform.startswith('linux'):
|
||||||
|
@ -99,3 +106,36 @@ Icon=%(base)s/openmedialibrary/static/png/oml.png
|
||||||
Terminal=false
|
Terminal=false
|
||||||
X-GNOME-Autostart-enabled=true
|
X-GNOME-Autostart-enabled=true
|
||||||
''' % {'base': root_dir})
|
''' % {'base': root_dir})
|
||||||
|
|
||||||
|
|
||||||
|
def get_trayicon_version():
|
||||||
|
from win32com.client import Dispatch
|
||||||
|
ver_parser = Dispatch('Scripting.FileSystemObject')
|
||||||
|
info = ver_parser.GetFileVersion(get_trayicon_path())
|
||||||
|
if info == 'No Version Information Available':
|
||||||
|
info = None
|
||||||
|
return info
|
||||||
|
|
||||||
|
def get_trayicon_path():
|
||||||
|
from win32com.client import Dispatch
|
||||||
|
shell = Dispatch("WScript.Shell")
|
||||||
|
applnk = os.path.join('C:\\', 'ProgramData', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Open Media Library.lnk')
|
||||||
|
if applnk and os.path.exists(applnk):
|
||||||
|
app = shell.CreateShortCut(applnk)
|
||||||
|
target = app.Targetpath
|
||||||
|
return target
|
||||||
|
|
||||||
|
def get_startup_path():
|
||||||
|
#return os.path.join('C:\\', 'ProgramData', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup', 'Open Media Library.lnk')
|
||||||
|
return os.path.join(os.getenv('APPDATA'), 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup', 'Open Media Library.lnk')
|
||||||
|
|
||||||
|
def install_autostart_win32():
|
||||||
|
from win32com.client import Dispatch
|
||||||
|
shell = Dispatch("WScript.Shell")
|
||||||
|
target = get_trayicon_path()
|
||||||
|
if target:
|
||||||
|
lnk = get_startup_path()
|
||||||
|
shortcut = shell.CreateShortCut(lnk)
|
||||||
|
shortcut.Targetpath = target
|
||||||
|
shortcut.Arguments = '--autostart'
|
||||||
|
shortcut.save()
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
|
|
||||||
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
|
@ -21,6 +20,7 @@ from oxtornado import actions
|
||||||
import settings
|
import settings
|
||||||
import utils
|
import utils
|
||||||
import db
|
import db
|
||||||
|
from integration import get_trayicon_version
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -234,8 +234,8 @@ def get_app_version(app):
|
||||||
return subprocess.check_output(cmd).strip()
|
return subprocess.check_output(cmd).strip()
|
||||||
|
|
||||||
def upgrade_app():
|
def upgrade_app():
|
||||||
|
base = os.path.dirname(settings.base_dir)
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
base = os.path.dirname(settings.base_dir)
|
|
||||||
bundled_app = os.path.join(base, 'platform_darwin64/Applications/Open Media Library.app')
|
bundled_app = os.path.join(base, 'platform_darwin64/Applications/Open Media Library.app')
|
||||||
app = '/Applications/Open Media Library.app'
|
app = '/Applications/Open Media Library.app'
|
||||||
version = get_app_version(app)
|
version = get_app_version(app)
|
||||||
|
@ -246,6 +246,15 @@ def upgrade_app():
|
||||||
shutil.copytree(bundled_app, app)
|
shutil.copytree(bundled_app, app)
|
||||||
except:
|
except:
|
||||||
logger.debug('Failed to update Application', exc_info=True)
|
logger.debug('Failed to update Application', exc_info=True)
|
||||||
|
elif sys.platform == 'win32':
|
||||||
|
current_version = get_trayicon_version()
|
||||||
|
if current_version != '0.2.0.0':
|
||||||
|
msi = os.path.normpath(os.path.join(base, 'platform_win32', 'Open Media Library.msi'))
|
||||||
|
cmd = ['msiexec.exe', '/qb', '/I', msi]
|
||||||
|
startupinfo = subprocess.STARTUPINFO()
|
||||||
|
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||||
|
startupinfo.wShowWindow = subprocess.SW_HIDE
|
||||||
|
subprocess.Popen(cmd, cwd=settings.base_dir, start_new_session=True, startupinfo=startupinfo)
|
||||||
|
|
||||||
def getVersion(data):
|
def getVersion(data):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -19,6 +19,8 @@ if sys.platform == 'win32':
|
||||||
return output_buf.value
|
return output_buf.value
|
||||||
else:
|
else:
|
||||||
output_buf_size = needed
|
output_buf_size = needed
|
||||||
|
|
||||||
else:
|
else:
|
||||||
def get_short_path_name(long_name):
|
def get_short_path_name(long_name):
|
||||||
return long_name
|
return long_name
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,10 @@
|
||||||
loadOMLFiles(function() {
|
loadOMLFiles(function() {
|
||||||
initOML(data);
|
initOML(data);
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
updatestatus: function(data) {
|
||||||
|
document.location.href = document.location.protocol + '//'
|
||||||
|
+ document.location.host;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue