[RESOLU] Paquet Screenpresso

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
elelay
Messages : 27
Inscription : 20 oct. 2020 - 12:39

06 juil. 2021 - 10:49

Bonjour,

J'essaie de développer un paquet pour le logiciel Screenpresso. Grâce à la version 2.0 c'est bien plus simple ! Et pourtant...

L'installation se passe bien, je n'ai jamais eu de problème.
Par contre pour la désinstallation, si j'ai bien compris c'est wapt qui se charge de générer la fonction uninstall() à partir de la clé de désinstallation.
Celle récupérée est la bonne et en testant le paquet en local sur la console ça fonctionne.
Sauf qu'une erreur est renvoyée après exécution et donc le paquet se met en échec.

Exécution dans VSCode :

Code : Tout sélectionner

Removing D:\waptdev\sdis85-screenpresso-wapt ...

L'opération a réussi.
2021-07-06 10:29:05,991 CRITICAL Critical error during uninstall: CalledProcessErrorOutput: Command '"C:\\Program Files\\Learnpulse\\Screenpresso\\Screenpresso.exe" deploy --programfiles --quiet --uninstall' returned non-zero exit status 11.
Output:
No package removed !
=== Error removing packages ===
Installation avec la console :

Code : Tout sélectionner

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptservice\service.py", line 1961, in run
    self.running_task.run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 649, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 1214, in _run
    self.result = self.wapt.remove(self.packagenames,
  File "C:\Program Files (x86)\wapt\common.py", line 5324, in remove
    print((self.run(uninstall_cmd)))
  File "C:\Program Files (x86)\wapt\common.py", line 3705, in run
    return ensure_unicode(setuphelpers.run(*arg, **args))
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 4029, in run
    raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output))
waptutils.CalledProcessErrorOutput: Command '"C:\\Program Files\\Learnpulse\\Screenpresso\\Screenpresso.exe" deploy --programfiles --quiet --uninstall' returned non-zero exit status 4294967295.

Ne serait-il pas possible d'esquiver ce code d'erreur 11 pendant la désinstallation ? Puisque celle-ci se passe très bien en réalité, simplement le paquet qui se met en échec.

Merci.
Dernière modification par elelay le 07 juil. 2021 - 09:16, modifié 1 fois.
Version de WAPT Server : 2.0 Entreprise
Console installée sur un Windows Server 2019
Serveur Debian 10 Buster
elelay
Messages : 27
Inscription : 20 oct. 2020 - 12:39

07 juil. 2021 - 09:14

Au temps pour moi, la commande de désinstallation renvoyée n'est pas silencieuse. Un pop-up apparaît, d'où l'erreur.
Il faut rajouter --quiet.
Version de WAPT Server : 2.0 Entreprise
Console installée sur un Windows Server 2019
Serveur Debian 10 Buster
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1401
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

07 juil. 2021 - 10:25

merci pour le retour elelay!
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
elelay
Messages : 27
Inscription : 20 oct. 2020 - 12:39

08 juil. 2021 - 23:06

Re-bonjour,

Pour information, le --quiet est bien renvoyé par le registre et l'erreur précédemment évoquée est toujours d'actualité.
Pour contrer ce problème je suis passé par un fichier msi.

Pour ceux que cela intéresse, voici le code final avec la fonction de mise à jour (update_package).

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
from pkg_resources import parse_version
from bs4 import BeautifulSoup

# declaring global variables - warnings: 1) wapt context is only available in package functions; 2) global variables are not persistent between calls
uninstallkey = '{517a11fb-eba6-4afe-b7a1-96a0c8b51e01}'


def install():
    # declaring local variables

    ScreenpressoPath = f'{programfiles64}\\Learnpulse\\Screenpresso'
    package_version = control.get_software_version()

    # installing the package
    print("Installing Screenpresso...")
    install_msi_if_needed('ScreenpressoSetup.msi', min_version=package_version)
    create_desktop_shortcut(r'Screenpresso', f'{ScreenpressoPath}\\Screenpresso.exe')
    print("Added a desktop icon")

def uninstall():
    print("Uninstalling Screenpresso...")
    
    # Get the uninstall key from registry (returned as an array)
    uninstall_exec = ' '.join([values for values in uninstall_cmd(uninstallkey)])
    run(uninstall_exec)
    remove_desktop_shortcut(r'Screenpresso')
    print("Removed desktop shortcut")


def update_package():
    package_version = control.get_software_version()
    filenamex64 = "ScreenpressoSetup.msi"
    proxies = {}
    if isfile(makepath(application_data(), 'waptconsole', 'waptconsole.ini')):
        proxywapt = inifile_readstring(makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini'), 'global', 'http_proxy')
        if proxywapt:
            proxies = {'http': proxywapt, 'https': proxywapt}

    # Url to scrape to get the different versions
    url = "https://www.screenpresso.com/fr/versions/"
    url64 = "https://www.screenpresso.com/binaries/releases/stable/dotnet47/ScreenpressoSetup.msi"

    html_code = wgets(url)
    soup = BeautifulSoup(html_code, features='html.parser')
    versions = []
    
    # Gathering all Screenpresso versions
    for a in soup.find_all('a', {'class': 'header'}):
        versions.append(a.get_text().split(' ')[1].strip())

    # During the request,' Screenpresso' is returned two times so the latest version is the 3rd element of the array: ['Screenpresso', 'Screenpresso', '1.10.1', '...']
    latest_version = versions[2]

    if parse_version(package_version) < parse_version(latest_version):
        print(f'Found a more recent versions {latest_version} > {package_version}')

        # Delete old binary
        print('Delete ' + filenamex64)
        remove_file(filenamex64)
    
    else:
    	print('You have the latest version :)')
    
    # Download new binary
    if not isfile(filenamex64):
        print('Download ' + url64)
        wget(url64, filenamex64, proxies=proxies)

    # Modifying version in control file
    from waptpackage import PackageEntry
    pe = PackageEntry()
    pe.load_control_from_wapt(os.getcwd())
    pe.version = latest_version + '-0'
    pe.save_control_to_wapt(os.getcwd())


if __name__ == '__main__':
    update_package()
N'hésitez pas à me faire parvenir vos retours.

Cordialement,

Étienne.
Version de WAPT Server : 2.0 Entreprise
Console installée sur un Windows Server 2019
Serveur Debian 10 Buster
Verrouillé