J'ai fait un paquet pour le logiciel Logi Options+ sous Windows et MacOS, avec update_package() fonctionnel.
Windows
setup.py :
Code : Tout sélectionner
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
installer = r'logioptionsplus_%s.exe'
def install():
appver = control.version.split('-',1)[0]
install_exe_if_needed(installer % appver,
silentflags = '/quiet /analytics no /device-recommendation no /update no',
name = 'Logi Options+',
min_version = get_version_from_binary(installer % appver, property_name='ProductVersion')
)
remove_desktop_shortcut(r'Logi Options+')
def update_package():
appname = control.name
url_dl = control.sources
appver = control.version.split('-',1)[0]
installer_dl = r'logioptionsplus_latest.exe'
# Download installer to check its version
wget(url_dl, installer_dl)
installer_dl_version = get_version_from_binary(installer_dl)
print(r'Latest %s version : %s' % (appname, installer_dl_version))
if Version(installer_dl_version) > Version(appver):
os.rename(installer_dl, installer % installer_dl_version)
# Changing version of the package
control.version = '%s-%s'%(installer_dl_version, control.version.split('-')[-1])
control.save_control_to_wapt()
print('Changing version to: %s in WAPT\\control' % control.version)
remove_outdated_binaries(installer_dl_version)
else:
print("Already up to date")
Code : Tout sélectionner
package : xxx-logi_options_plus
version : 1.97.791262-3
architecture : x64
section : base
priority : optional
name : Logi Options+
categories : Utilities
maintainer : XXXX
description : Enhance your Logitech devices with Logi Options Plus software. Customize settings, create shortcuts, and increase productivity.
depends : xxx-vcredist2015-2022
conflicts :
maturity : PROD
locale : all
target_os : windows
min_wapt_version :
sources : https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe
installed_size :
impacted_process : logioptionsplus,logioptionsplus_agent,logioptionsplus_appbroker,logioptionsplus_updater,LogiSyncStub
description_fr : Améliorez vos appareils Logitech grâce au logiciel Logi Options Plus. Personnalisez les paramètres, créez des raccourcis et augmentez votre productivité.
description_pl :
description_de :
description_es :
description_pt :
description_it :
description_nl :
description_ru :
audit_schedule :
editor : Logitech, Inc.
keywords :
licence : Proprietary
homepage : https://www.logitech.com/software/logi-options-plus
valid_from :
valid_until :
forced_install_on :
changelog : https://support.logi.com/hc/fr/articles/1500005516462-Logi-Options-Release-Notes
min_os_version : 10
max_os_version :
setup.py :
Code : Tout sélectionner
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import plistlib
installer_name = r'logioptionsplus_installer'
def install():
appname = control.name
appver = control.version.split('-',1)[0]
installer_zip = r'%s_%s.zip' % (installer_name, appver)
installer = r'./%s_%s/%s.app/Contents/MacOS/%s' % (installer_name, appver, installer_name, installer_name)
soft = installed_softwares(r'logioptionsplus')
if soft:
if soft[0]["version"] >= appver:
if not WAPT.options.force:
print(r'%s is already installed with version %s' % (appname, soft[0]["version"]))
return(0)
unzip(installer_zip, r'%s_%s' % (installer_name, appver))
run(r'%s --quiet --analytics no --device-recommendation no --update no' % installer)
def uninstall():
# Uninstall and clean leftovers
run(r'sudo /Library/Application\ Support/Logitech.localized/LogiOptionsPlus/logioptionsplus_agent.app/Contents/Frameworks/logioptionsplus_updater.app/Contents/MacOS/logioptionsplus_updater --full --uninstall --quiet')
uninstall_pkg(r'com.logi.installer.pluginservice.media.package')
uninstall_pkg(r'com.logi.installer.pluginservice.package')
if isdir(r'/Library/Application\ Support/Logi/'):
remove_tree(r'/Library/Application\ Support/Logi/')
def update_package():
appname = control.name
url_dl = control.sources
appver = control.version.split('-',1)[0]
installer_dl = r'%s.zip' % installer_name
plist_file_name = r'Info.plist'
# Download installer to check it's version
wget(url_dl, installer_dl)
# Check version from plist file
if isfile(plist_file_name):
remove_file(plist_file_name)
unzip_with_7zip(installer_dl, target=basedir, filenames=[r'%s.app/Contents/Info.plist' % installer_name], extract_with_full_paths=False, recursive=False)
plist_file = get_plist_obj(plist_file_name)
installer_dl_version = plist_file[r'CFBundleVersion']
print(r'Latest %s version : %s' % (appname, installer_dl_version))
remove_file(plist_file_name)
if Version(installer_dl_version) > Version(appver):
old_zip_name = r'%s-%s.zip' % (installer_name, appver)
if isfile(old_zip_name):
remove_file(old_zip_name)
os.rename(installer_dl, r'%s_%s.zip' % (installer_name, installer_dl_version))
# Changing version of the package
control.version = '%s-%s'%(installer_dl_version, control.version.split('-')[-1])
control.save_control_to_wapt()
print('Changing version to: %s in WAPT\\control' % control.version)
else:
print("Already up to date")
def get_plist_obj(plist_file):
""" Returns a plist obj when given the path to a plist file. """
with open(plist_file, 'rb') as fp :
plist_obj = plistlib.load(fp)
return plist_obj
Code : Tout sélectionner
package : xxx-logi_options_plus
version : 1.97.791262-8
architecture : all
section : base
priority : optional
name : Logi Options+
categories : Utilities
maintainer : XXXX
description : Enhance your Logitech devices with Logi Options Plus software. Customize settings, create shortcuts, and increase productivity.
depends :
conflicts :
maturity : PROD
locale : all
target_os : darwin
min_wapt_version :
sources : https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.zip
installed_size :
impacted_process : logioptionsplus,logioptionsplus_agent,logioptionsplus_appbroker,logioptionsplus_updater,LogiSyncStub
description_fr : Améliorez vos appareils Logitech grâce au logiciel Logi Options Plus. Personnalisez les paramètres, créez des raccourcis et augmentez votre productivité.
description_pl :
description_de :
description_es :
description_pt :
description_it :
description_nl :
description_ru :
audit_schedule :
editor : Logitech, Inc.
keywords :
licence : Proprietary
homepage : https://www.logitech.com/software/logi-options-plus
valid_from :
valid_until :
forced_install_on :
changelog : https://support.logi.com/hc/fr/articles/1500005516462-Logi-Options-Release-Notes
min_os_version : 13
max_os_version :
