Propuesta de actualización de paquete para 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.
Respuesta
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

7 de octubre de 2024 - 13:13

Hola, equipo,


Hace tres o cuatro años creé un paquete para Screenpresso con la adición de la función update_package.
Como la versión del archivo MSI no estaba indicada correctamente en el archivo, utilicé una solución alternativa descargando la versión EXE, extrayéndola y luego eliminando el archivo EXE

¿Puedes agregarlo al paquete?
El código podría mejorarse, pero tal como está funciona perfectamente.
En casa guardé los comentarios de la época en que usaba la aplicación móvil.
Probablemente sea un KO, pero lo guardé como recuerdo como ejemplo interno

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    version = control['version'].split('-',1)[0]

##    print('Desinstallation version EXE avant déploiement version portable')
##    if isdir(makepath(programfiles,'Learnpulse','Screenpresso')):
##        print('The directory exists')
##        print('Desinstallation de Screenpresso')
##        run('"C:\Program Files\Learnpulse\Screenpresso\Screenpresso.exe" -uninstall pf -silent')

##    print('Suppression de la version portable')
##    remove_tree( makepath('C:','ProgramData','Screenpresso'), ignore_errors=True )

##    print(u'Ajout de démarrage automatique')
##    registry_set(HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows\CurrentVersion\Run",'Screenpresso','"C:\Program Files\Learnpulse\Screenpresso\Screenpresso.exe" run --hideworkspace')

    # Suppression du démarrage auto de l'ancienne version à créer
    print('Installation de Screenpresso format MSI')
    install_msi_if_needed("Screenpresso.msi",killbefore="screenpresso")

##    print('Installation de Screenpresso format EXE')
##    install_exe_if_needed("Screenpresso.exe",'/install pf /silent',key='Screenpresso',min_version=version,killbefore=['Screenpresso.exe'],accept_returncodes=[4])

##    print('Copie pour utilisation application portable')
##    mkdirs(makepath ('C:','ProgramData','Screenpresso'))
##    filecopyto('Screenpresso.exe',makepath ('C:','ProgramData','Screenpresso'))
##    create_shortcut(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Screenpresso.lnk" , r"C:\Program Files\Learnpulse\Screenpresso\Screenpresso.exe")


def uninstall():
    print('Desinstallation de Screenpresso')
    for soft in installed_softwares('Screenpresso'):
        run(WAPT.uninstall_cmd(soft['key']))

##    run('"C:\Program Files\Learnpulse\Screenpresso\Screenpresso.exe" -uninstall pf -silent')



def session_setup():
##    print('Ajout au démarrage de session pour version portable')
##    registry_setstring(HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Run",'Screenpresso','"C:\ProgramData\Screenpresso\Screenpresso.exe" --portablemode --hideworkspace', type=REG_SZ)

##    # A FINALISER
##    print('Suppression au démarrage de session')
##    registry_deletekey(HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Run",'Screenpresso')
##    registry_deletekey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run",'Screenpresso')

    remove_user_programs_menu_shortcut('Screenpresso')



def update_package():
    # Version MSI correcte depuis 12.2023, code à faire évoluer
    #print(get_product_props('Screenpresso.msi')['version'])


    try:
        import BeautifulSoup
    except:
        import bs4 as BeautifulSoup
    import re

    proxies = {}
    if isfile(makepath(user_local_appdata(),'waptconsole','waptconsole.ini')):
        proxywapt = inifile_readstring(makepath(user_local_appdata(),'waptconsole','waptconsole.ini'),'global','http_proxy')
        if proxywapt :
            proxies = {'http':proxywapt,'https':proxywapt}

    # Recherche et téléchargement de la dernière version de ScreenPresso
    os.chdir(os.path.dirname(__file__))
    page = wgets('https://www.screenpresso.com/fr/telechargement-msi',user_agent='Mozilla/5.0 (Windows NT 6.1; Win64; x64)',proxies=proxies)
    # Téléchargement du MSI
    bs = BeautifulSoup.BeautifulSoup(page, features="html.parser")
    url32 = bs.find(title = u"Cliquez ici pour télécharger")["href"]

    print(u'Telechargement de Screenpresso MSI')
    print (url32)
    wget(url32,'Screenpresso.msi',proxies=proxies)


    print(u'Recherche numéro de version (celui du MSI est incorrect)')
    bs = BeautifulSoup.BeautifulSoup(page, features="html.parser")
    url32 = bs.find(role = "button")["href"]
    #print ("Chemin vers la version : %s" % url32)

    version = (
        url32.split('screenpresso-')[1]
        .split('/')[0]
        .replace('-', '.')
    )

    # Changement de version du paquet
    if Version(version) > Version(control.get_software_version()):
        print("Mise à jour de la version logicielle (de: %s à: %s)" % (control.get_software_version(), Version(version)))
        package_updated = True
    else:
        print("Version du logiciel est déjà à jour (%s)" % Version(version))
    control.set_software_version(version)
    control.save_control_to_wapt()

##    # Validating or not update-package-sources
##    return package_updated

##if __name__ == '__main__':
##    update_package()
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
blemoigne
Mensajes: 176
Inscripción: 17 de julio de 2020 - 11:29

11 de octubre de 2024 - 10:38

Hola @jlatieule,
¿Has probado este? https://wapt.tranquil.it/store/fr/tis-screenpresso

Bertrand
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

11 de octubre de 2024 - 17:12

Sí, y simplemente instala un archivo ejecutable básico
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
blemoigne
Mensajes: 176
Inscripción: 17 de julio de 2020 - 11:29

11 de octubre de 2024 - 18:05

Hola Joël,

no sé si conoces esta interfaz: https://luti.tranquil.it/
Puedes hacer un seguimiento de las compilaciones de paquetes en cuanto un desarrollador actualiza una aplicación.
Screenpresso es uno de estos paquetes rastreados y, por lo tanto, ya tiene una función update_package(). La función update_package() ahora está definida en un archivo aparte (update_package.py en lugar de setup.py).

Que tengas un buen fin de semana,
Bertrand
Respuesta