Pagina 1 di 1

[RISOLTO] Pacchetto Screenpresso

Pubblicato: 6 luglio 2021 - 10:49
di elelay
Buongiorno,

Sto cercando di sviluppare un pacchetto per il software Screenpresso. Grazie alla versione 2.0, è molto più semplice! Eppure...

L'installazione è andata liscia, non ho mai avuto problemi.
Tuttavia, per quanto riguarda la disinstallazione, se ho capito bene, è wapt a essere responsabile della generazione della funzione uninstall() dalla chiave di disinstallazione.
Quello recuperato è quello corretto e testando il pacchetto localmente sulla console funziona.
Tuttavia, dopo l'esecuzione viene restituito un errore e pertanto il pacchetto fallisce.

Esecuzione in VSCode:

Codice: Seleziona tutto

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 ===
Installazione tramite console:

Codice: Seleziona tutto

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.

Non sarebbe possibile evitarlo? Codice di errore 11 Durante la disinstallazione? Dato che la disinstallazione in sé va a buon fine, è solo il pacchetto a non funzionare.

GRAZIE.

Pacchetto serigrafico

Pubblicato: 7 luglio 2021 - 09:14
di elelay
Errore mio, il comando di disinstallazione restituito non è silenzioso. Viene visualizzata una finestra di dialogo, da qui l'errore.
È necessario aggiungere `--quiet`.

Oggetto: [RISOLTO] Pacchetto Screenpresso

Pubblicato: 7 luglio 2021 - 10:25
di dcardon
Grazie per il feedback, elelay!

Oggetto: [RISOLTO] Pacchetto Screenpresso

Pubblicato: 8 luglio 2021 - 23:06
di elelay
Ciao di nuovo,

Per tua informazione, il registro restituisce effettivamente --quiet e l'errore menzionato in precedenza è ancora rilevante.
Per ovviare a questo problema, ho utilizzato un file MSI.

Per chi fosse interessato, ecco il codice finale con la funzione di aggiornamento (update_package).

Codice: Seleziona tutto

# -*- 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()
Non esitate a inviarmi il vostro feedback.

Sinceramente,

Étienne.