[RESOLU] Paquets pour Logi Options+ (Windows / MacOS)

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
bastien30
Messages : 31
Inscription : 08 mars 2024 - 15:21

20 nov. 2025 - 12:26

Bonjour,

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")
control :

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    : 
MacOS

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
control :

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    : 
Répondre