[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.
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)
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:
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):
La extensión se desinstala correctamente aquí.
No entiendo de dónde viene el problema. ¿Tienes alguna idea?
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")
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:\>
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:\>
No entiendo de dónde viene el problema. ¿Tienes alguna idea?