Página 1 de 1

[RESUELTO] La función Session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 14 de abril de 2026 - 10:41 a. m.
por brice73
Buen día,

Hace algún tiempo, intenté empaquetar la extensión "Fantastic Schoolbag" para LibreOffice. Tras algunas dificultades, logré empaquetarla y la comparto aquí por si le resulta útil a alguien. (Este paquete depende de otro paquete que instala LibreOffice)

Código: Seleccionar todo

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

r"""Pour information : installation avec unopkg.exe pour tous les utilisateurs (argument --shared) inopérante (avec LO 25.8.6)
    -> utiliser unopkg.exe pour chaque utilisateur via fonction session_setup() """


source_dir=makepath('C:','cachefileWAPT','LibreOffice_extensions','Lbo_CartableFantastique_college')

def install():

    #copie du dossier de l'extension en local
    if not isdir(source_dir):
        mkdirs(source_dir)
        print(f"Copie de l'extension Cartable Fantastique dans {source_dir}")
        filecopyto('Lbo_CartableFantastique_college.v5.oxt',source_dir)

    print("Installation terminée avec succès")


def session_setup():

    run(r'"C:\Program Files\LibreOffice\program\unopkg.exe" add --suppress-license "C:\cachefileWAPT\LibreOffice_extensions\Lbo_CartableFantastique_college\Lbo_CartableFantastique_college.v5.oxt"')

def session_cleanup():

    r"""Désinstallation de l'extension dans les profils utilisateurs
        Attention, pour obtenir l'id de désinstallation de l'extension utiliser unopkg.com list et non unopkg.exe list qui ne renvoie rien"""

    if installed_softwares('LibreOffice'):

        run_notfatal(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique')

def uninstall():

    print("Suppression du dossier de l'extension Cartable Fantastique")

    if isdir(source_dir):
        remove_tree(source_dir)
    if dir_is_empty(makepath('C:','cachefileWAPT','LibreOffice_extensions')):
        remove_tree(makepath('C:','cachefileWAPT','LibreOffice_extensions'))

    print("Désinstallation terminée avec succès")
Mi problema es que la función `session_cleanup()` no desinstala automáticamente la extensión de los perfiles de usuario después de que se haya desinstalado el paquete Wapt. Sin embargo, cuando pruebo la función `session_cleanup()` en PyScripter, `installed_softwares('LibreOffice')` devuelve correctamente una lista, y `run_notfatal(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique') desinstala correctamente la extensión del perfil.

Sin embargo, si después de desinstalar el paquete wapt, para un usuario abro un símbolo del sistema y ejecuto la función session_cleanup:

Código: Seleccionar todo

U:\>wapt-get session-cleanup col73-libreoffice-extension-cartable-fantastique-college
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
0

U:\>
Parece funcionar correctamente, pero la extensión no se ha desinstalado.

Sorprendentemente, si ejecuto el comando de la función session_cleanup en un símbolo del sistema dentro de la sesión del usuario (con derechos de usuario, no con privilegios de administrador):

Código: Seleccionar todo

U:\>"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique

U:\>
La extensión se desinstala correctamente aquí.

No entiendo de dónde viene el problema. ¿Tienes alguna idea?

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 14 de abril de 2026 - 12:04 p. m.
por brice73
Logré solucionar el problema. No sé por qué, pero al reemplazar la función run_notfatal() por la función run() en la función session_cleanup(), la extensión ahora se desinstala correctamente y automáticamente de los perfiles de usuario después de que se haya desinstalado el paquete wapt.

Quizás aún haya algo que investigar por qué la función run_notfatal() no funciona mientras que la función run() sí funciona (en session_cleanup). :?:

Así que vuelvo a compartir mi paquete de trabajo (un paquete que tiene otra dependencia que instala LibreOffice) en el que he añadido una función de auditoría:

Código: Seleccionar todo

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

r"""Pour information : installation avec unopkg.exe pour tous les utilisateurs (argument --shared) inopérante (avec LO 25.8.6)
    -> utiliser unopkg.exe pour chaque utilisateur via fonction session_setup() """


source_dir=makepath('C:','cachefileWAPT','LibreOffice_extensions','Lbo_CartableFantastique_college')

def install():

    #copie du dossier de l'extension en local
    if not isdir(source_dir):
        mkdirs(source_dir)

    print(f"Copie de l'extension Cartable Fantastique dans {source_dir}")
    filecopyto('Lbo_CartableFantastique_college.v5.oxt',source_dir)

    print("Installation terminée avec succès")

def audit():

    if not isfile(r'C:\cachefileWAPT\LibreOffice_extensions\Lbo_CartableFantastique_college\Lbo_CartableFantastique_college.v5.oxt'):
        print("Attention, l'extension Cartable Fantastique n'est pas présente sur le poste, elle ne pourra pas s'installer pour les prochains utilisateurs. Veuillez réinstaller le paquet")
        return("ERROR")
    else:
        return("OK")

def session_setup():

    run(r'"C:\Program Files\LibreOffice\program\unopkg.exe" add --suppress-license "C:\cachefileWAPT\LibreOffice_extensions\Lbo_CartableFantastique_college\Lbo_CartableFantastique_college.v5.oxt"')

def session_cleanup():

    r"""Désinstallation de l'extension dans les profils utilisateurs
        Attention, pour obtenir l'id de désinstallation de l'extension utiliser unopkg.com list et non unopkg.exe list qui ne renvoie rien"""

    if installed_softwares('LibreOffice'):

        run(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique')

def uninstall():

    print("Suppression du dossier de l'extension Cartable Fantastique")

    if isdir(source_dir):
        remove_tree(source_dir)
    if dir_is_empty(makepath('C:','cachefileWAPT','LibreOffice_extensions')):
        remove_tree(makepath('C:','cachefileWAPT','LibreOffice_extensions'))

    print("Désinstallation terminée avec succès")
Puedes marcar el hilo como resuelto.

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 14 de abril de 2026 - 13:12
por dcardon
Hola Brice,

normalmente esto no debería tener ningún impacto... Para tu prueba, ¿estás seguro de que el número de paquete se incrementó correctamente y que la base de datos local de waptservice se actualizó correctamente con el último comando de desinstalación?

Dado que el paquete ya no está presente cuando se ejecuta session_cleanup, su código se mantiene en la base de datos local para ejecutarse en las sesiones de usuario. Se actualiza cuando se actualiza el paquete en la máquina. ¿

Podrías intentar volver a run_not_fatal() e incrementar correctamente la versión del paquete, y luego ejecutar una instalación/desinstalación nuevamente?

Saludos,

Denis

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 14 de abril de 2026 - 17:05
por brice73
Hola Denis,

efectivamente me aseguré de que el paquete wapt se incrementara, se instalara (y se comprobara la extensión para diferentes usuarios) y luego se desinstalara, antes de verificar que la extensión se hubiera desinstalado correctamente para los usuarios.

Lo intenté de nuevo con `run_notfatal` en lugar de `run` en `session_cleanup` y, efectivamente, también funciona con `run_notfatal`, así que no tengo ni idea de por qué parecía haber un problema. Quizás la función `session_cleanup` que se ejecutó era en realidad la del paquete anterior (que era incorrecta) y no la del último instalado...

En cualquier caso, no parece haber ninguna diferencia entre `run` y `run_notfatal`.

Saludos cordiales,

Brice

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 16 de abril de 2026 - 09:21
por lfkl
Gracias por compartir este paquete; lo necesitábamos mucho y me costó bastante encontrarlo.

¿Sería posible integrarlo en la tienda de Wapt si el autor está de acuerdo?

Saludos cordiales.

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 16 de abril de 2026 - 14:19
por brice73
Hola lfkl,

me alegra saber que este paquete te resulta útil. :) A mí también me dio muchos problemas, con comandos aparentemente ineficaces, una instalación aparentemente defectuosa para todos los usuarios (--shared) (la extensión se detectaba e instalaba, pero fallaba) y documentación incompleta. La única instalación que funcionó fue la que se realizaba en cada perfil de usuario.

Agradecería mucho que Tranquil IT añadiera este paquete a la tienda, sin duda después de verificarlo y realizar las modificaciones/adaptaciones necesarias. :?:

Atentamente

Re: La función session_cleanup no funciona para la extensión LibreOffice Fantastic Cartable

Publicado: 16 de abril de 2026 - 15:29
por dcardon
Hola Brice,

estoy reenviando este mensaje al equipo de soporte que administra la tienda.

Gracias por tus comentarios. :-)

Marco el tema como resuelto.

Denis