[SOLVED] Packages for Logi Options+ (Windows / MacOS)

Questions about WAPT Packaging / Requests and help regarding Wapt packages.
Forum Rules
Community Forum Rules
* English support on www.reddit.com/r/wapt
* French community support is available on this forum
* Please prefix the topic title with [RESOLVED] if it is resolved.
* Please do not edit a topic that is tagged [RESOLVED]. Open a new topic referencing the old one.
* Specify the installed WAPT version, full version, and build number (2.2.1.11957 / 2.2.2.12337 / etc.) as well as the Enterprise/Discovery edition.
* Versions 1.8.2 and earlier are no longer supported. The only questions accepted regarding version 1.8.2 are related to upgrading to a supported version (2.1, 2.2, etc.).
* Specify the server OS (Linux/Windows) and version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specify the OS of the administration/package creation machine and the machine with the problematic agent, if applicable (Windows 7/10/11/Debian 11/etc.).
* Avoid asking multiple questions when opening a topic, otherwise it may be ignored. If there are multiple topics, open separate topics, preferably one after the other and not all at the same time (i.e., do not spam the forum).
* Include code snippets, screenshots, and other images directly in the post. Links to Pastebin, Bitly, and other third-party sites will be systematically removed.
* As with any community forum, support is provided voluntarily by members. If you require commercial support, you can contact Tranquil IT's sales department at 02.40.97.57.55
Locked
bastien30
Messages: 38
Registration: March 8, 2024 - 3:21 PM

November 20, 2025 - 12:26

Good morning,

I made a package for the Logi Options+ software under Windows and MacOS, with update_package() functional.

Windows

setup.py:

Code: Select all

# -*- 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: Select all

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: Select all

# -*- 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: Select all

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    : 
gadam
Messages: 23
Registration: Oct 30, 2025 - 2:46 p.m.

November 21, 2025 - 4:30 PM

Hello Bastien,

The Logi Options+ package has been created for Windows and will be available on the store in the coming days.
We are still working on the Mac version.

Regards,

Gwenaël
Locked