[RESUELTO] Paquete Screenpresso

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Bloqueado
elelay
Mensajes: 27
Inscripción: 20 de octubre de 2020 - 12:39

6 de julio de 2021 - 10:49

Buen día,

Estoy intentando desarrollar un paquete para el software Screenpresso. ¡Gracias a la versión 2.0, es mucho más sencillo! Y aun así...

La instalación se realizó sin problemas y nunca tuve ningún problema.
Sin embargo, para la desinstalación, si entiendo correctamente, es wapt el que se encarga de generar la función uninstall() a partir de la clave de desinstalación.
El recuperado es el correcto y probar el paquete localmente en la consola lo hace funcionar.
Sin embargo, se devuelve un error después de la ejecución y, por lo tanto, el paquete falla.

Ejecución en VSCode:

Código: Seleccionar todo

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 ===
Instalación mediante la consola:

Código: Seleccionar todo

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.

¿No sería posible evitar esto? Código de error 11 ¿Durante la desinstalación? Como la desinstalación en sí va muy bien, solo falla el paquete.

GRACIAS.
Última edición realizada por elelay el 07 de julio de 2021 a las 09:16, editado 1 vez.
Versión del servidor WAPT: 2.0 Enterprise
Console instalada en un
servidor Windows Server 2019 Debian 10 Buster.
elelay
Mensajes: 27
Inscripción: 20 de octubre de 2020 - 12:39

7 de julio de 2021 - 09:14

Me equivoqué, el comando de desinstalación no es silencioso. Aparece una ventana emergente, de ahí el error.
Debes añadir `--quiet`.
Versión del servidor WAPT: 2.0 Enterprise
Console instalada en un
servidor Windows Server 2019 Debian 10 Buster.
Avatar de usuario
dcardón
Experto en WAPT
Mensajes: 1908
Inscripción: 18 de junio de 2014 - 09:58
Ubicación: Saint Sébastien sur Loire
Contacto :

7 de julio de 2021 - 10:25

¡Gracias por tus comentarios, elelay!
Denis Cardon - Tranquil IT
¡Comparte tus experiencias en WAPT! Envíanos las URL de tus blogs y artículos en la "Tu opinión del foro y los publicaremos en el de WAPT
elelay
Mensajes: 27
Inscripción: 20 de octubre de 2020 - 12:39

8 de julio de 2021 - 23:06

Hola de nuevo,

Para su información, el registro efectivamente devuelve --quiet y el error mencionado anteriormente sigue siendo relevante.
Para contrarrestar este problema, utilicé un archivo MSI.

Para aquellos que estén interesados, aquí está el código final con la función de actualización (update_package).

Código: Seleccionar todo

# -*- 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()
No dudes en enviarme tus comentarios.

Atentamente,

Esteban.
Versión del servidor WAPT: 2.0 Enterprise
Console instalada en un
servidor Windows Server 2019 Debian 10 Buster.
Bloqueado