[RISOLTO] La funzione Session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable
Pubblicato: 14 aprile 2026 - 10:41
Buongiorno,
Qualche tempo fa, stavo cercando di creare un pacchetto dell'estensione "Fantastic Schoolbag" per LibreOffice. Dopo qualche difficoltà, ci sono riuscito e lo condivido qui nel caso possa essere utile a qualcuno. (Questo pacchetto dipende da un pacchetto che installa LibreOffice.)
Il mio problema è che la funzione `session_cleanup()` non disinstalla automaticamente l'estensione dai profili utente dopo la disinstallazione del pacchetto Wapt. Tuttavia, quando testo la funzione `session_cleanup()` in PyScripter, `installed_softwares('LibreOffice')` restituisce correttamente un elenco e `run_notfatal(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique') disinstalla correttamente l'estensione dal profilo.
Tuttavia, se dopo la disinstallazione del pacchetto wapt, per un utente apro un prompt dei comandi ed eseguo la funzione session_cleanup:
Sembra funzionare correttamente, ma l'estensione non viene disinstallata.
Sorprendentemente, se eseguo il comando della funzione session_cleanup in un prompt dei comandi all'interno della sessione dell'utente (con diritti utente, non privilegi di amministratore):
L'estensione si disinstalla correttamente in questo caso.
Non capisco da dove provenga il problema. Hai qualche idea?
Qualche tempo fa, stavo cercando di creare un pacchetto dell'estensione "Fantastic Schoolbag" per LibreOffice. Dopo qualche difficoltà, ci sono riuscito e lo condivido qui nel caso possa essere utile a qualcuno. (Questo pacchetto dipende da un pacchetto che installa LibreOffice.)
Codice: Seleziona tutto
# -*- 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")
Tuttavia, se dopo la disinstallazione del pacchetto wapt, per un utente apro un prompt dei comandi ed eseguo la funzione session_cleanup:
Codice: Seleziona tutto
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, se eseguo il comando della funzione session_cleanup in un prompt dei comandi all'interno della sessione dell'utente (con diritti utente, non privilegi di amministratore):
Codice: Seleziona tutto
U:\>"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique
U:\>
Non capisco da dove provenga il problema. Hai qualche idea?