[RESOLU] fonction session_cleanup inopérante pour l'extension cartable fantastique de LibreOffice
Publié : 14 avr. 2026 - 10:41
Bonjour,
Il y a quelque temps, je cherchais à packager l'extension cartable fantastique pour LibreOffice. Non sans quelques difficultés, j'ai réussi à la packager et partage ici le paquet au cas où ça puisse servir à quelqu'un. (ce paquet a comme dépendance un paquet installant LibreOffice)
Mon problème est que la fonction session_cleanup() ne désinstalle pas automatiquement l'extension dans les profils utilisateurs après que le paquet wapt ait été désinstallé. Pourtant, lorsque sous pyscripter, je teste la fonction session_cleanup : installed_softwares('LibreOffice') renvoie bien une liste, et run_notfatal(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique') désinstalle bien l'extension dans le profil.
Par contre si après que le paquet wapt ait été désinstallé, pour un utilisateur j'ouvre une invite de commande et exécute la fonction session_cleanup :
Elle semble bien s'exécuter, mais l'extension n'est pas désinstallée.
Etonnament, si j'exécute la commande de la fonction session_cleanup dans une invite de commande dans la session de l'utilisateur (avec les droits de l'utilisateur, non administrateur):
Là l'extension se désinstalle bien.
Je ne comprends pas d'où vient le problème. Auriez-vous une idée ?
Il y a quelque temps, je cherchais à packager l'extension cartable fantastique pour LibreOffice. Non sans quelques difficultés, j'ai réussi à la packager et partage ici le paquet au cas où ça puisse servir à quelqu'un. (ce paquet a comme dépendance un paquet installant LibreOffice)
Code : Tout sélectionner
# -*- 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")
Par contre si après que le paquet wapt ait été désinstallé, pour un utilisateur j'ouvre une invite de commande et exécute la fonction session_cleanup :
Code : Tout sélectionner
U:\>wapt-get session-cleanup col73-libreoffice-extension-cartable-fantastique-college
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
0
U:\>
Etonnament, si j'exécute la commande de la fonction session_cleanup dans une invite de commande dans la session de l'utilisateur (avec les droits de l'utilisateur, non administrateur):
Code : Tout sélectionner
U:\>"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique
U:\>
Je ne comprends pas d'où vient le problème. Auriez-vous une idée ?