Seite 1 von 1

[GELÖST] Screenpresso-Paket

Veröffentlicht: 6. Juli 2021 - 10:49 Uhr
von elelay
Guten Morgen,

Ich versuche, ein Softwarepaket für Screenpresso zu entwickeln. Dank Version 2.0 ist es viel einfacher! Und trotzdem ….

Die Installation verlief reibungslos, ich hatte keinerlei Probleme.
Bei der Deinstallation ist, wenn ich es richtig verstehe, wapt dafür zuständig, die uninstall()-Funktion aus dem Deinstallationsschlüssel zu generieren.
Die abgerufene Version ist die richtige, und ein lokaler Test des Pakets in der Konsole zeigt, dass es funktioniert.
Nach der Ausführung wird jedoch ein Fehler zurückgegeben, weshalb das Paket nicht ausgeführt werden kann.

Ausführung in VSCode:

Code: Alle auswählen

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 über die Konsole:

Code: Alle auswählen

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.

Wäre es nicht möglich, dies zu vermeiden? Fehlercode 11 Während der Deinstallation? Da die Deinstallation selbst einwandfrei verläuft, ist es nur das Paket, das Probleme bereitet.

DANKE.

Screenpresso-Paket

Veröffentlicht: 7. Juli 2021 - 9:14 Uhr
von elelay
Mein Fehler, der Deinstallationsbefehl wird nicht im Hintergrund ausgeführt. Es erscheint ein Popup, daher der Fehler.
Sie müssen `--quiet` hinzufügen.

Betreff: [GELÖST] Screenpresso-Paket

Veröffentlicht: 7. Juli 2021 - 10:25 Uhr
von dcardon
Danke für das Feedback, elelay!

Betreff: [GELÖST] Screenpresso-Paket

Veröffentlicht: 8. Juli 2021 - 23:06 Uhr
von elelay
Hallo nochmal,

Zur Information: Der Parameter --quiet wird tatsächlich vom Register zurückgegeben, und der zuvor erwähnte Fehler ist weiterhin relevant.
Um diesem Problem entgegenzuwirken, habe ich eine MSI-Datei verwendet.

Für alle Interessierten hier der endgültige Code mit der Update-Funktion (update_package).

Code: Alle auswählen

# -*- 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()
Senden Sie mir gerne Ihr Feedback.

Aufrichtig,

Étienne.