Pagina 1 di 1

[RISOLTO] La funzione Session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 14 aprile 2026 - 10:41
di brice73
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.)

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")
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:

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:\>
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):

Codice: Seleziona tutto

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

U:\>
L'estensione si disinstalla correttamente in questo caso.

Non capisco da dove provenga il problema. Hai qualche idea?

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 14 aprile 2026 - 12:04
di brice73
Sono riuscito a risolvere il problema. Non so perché, ma sostituendo la funzione run_notfatal() con la funzione run() all'interno della funzione session_cleanup(), l'estensione ora si disinstalla correttamente e automaticamente dai profili utente dopo la disinstallazione del pacchetto wapt.

Forse c'è ancora qualcosa da indagare sul perché la funzione run_notfatal() non funzioni mentre la funzione run() funziona (in session_cleanup). :?:

Quindi, condivido di nuovo il mio pacchetto funzionante (un pacchetto che ha un'altra dipendenza che installa LibreOffice) in cui ho aggiunto una funzione di controllo:

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 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")
È possibile contrassegnare la discussione come risolta.

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 14 aprile 2026 - 13:12
di dcardon
Ciao Brice,

normalmente questo non dovrebbe avere alcun impatto... Per il tuo test, sei sicuro che il numero del pacchetto sia stato incrementato correttamente e che il database locale di waptservice sia stato aggiornato correttamente con l'ultimo comando di disinstallazione?

Poiché il pacchetto non è più presente quando viene avviato session_cleanup, il suo codice viene mantenuto nel database locale per essere eseguito nelle sessioni utente. Viene aggiornato quando il pacchetto viene aggiornato sulla macchina.

Potresti provare a tornare a run_not_fatal() e incrementare correttamente la versione del pacchetto, quindi eseguire nuovamente un'installazione/disinstallazione?

Cordiali saluti,

Denis

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 14 aprile 2026 - 17:05
di brice73
Ciao Denis,

mi ero effettivamente assicurato che il pacchetto wapt fosse stato incrementato, installato (e che l'estensione fosse stata verificata per i diversi utenti) e poi disinstallato, prima di verificare che l'estensione fosse stata disinstallata correttamente per gli utenti.

Ho riprovato con `run_notfatal` invece di `run` in `session_cleanup` e in effetti funziona anche con `run_notfatal`, quindi non ho davvero idea del perché sembrasse esserci un problema! Forse la funzione `session_cleanup` che è stata eseguita era in realtà quella del pacchetto precedente (che era errata) e non quella dell'ultimo installato...?!

In ogni caso, non sembra esserci alcuna differenza tra `run` e `run_notfatal`.

Cordiali saluti,

Brice

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 16 aprile 2026 - 09:21
di lfkl
Grazie per aver condiviso questo pacchetto; ne avevamo davvero bisogno qui, e ho faticato a trovarne uno anch'io...

Sarebbe possibile integrarlo nel Wapt Store se l'autore fosse d'accordo?

Cordiali saluti.

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 16 aprile 2026 - 14:19
di brice73
Ciao lfkl,

sono contento di sapere che questo pacchetto ti sia utile. :) Anche a me ha dato parecchi problemi, con comandi apparentemente inefficaci, un'installazione apparentemente malfunzionante per tutti gli utenti (--shared) (l'estensione è stata rilevata e installata ma non ha funzionato correttamente) e documentazione incompleta! L'unica installazione che ho trovato funzionante è stata quella eseguita all'interno di ciascun profilo utente.

Sarei molto grato se Tranquil IT volesse aggiungere questo pacchetto allo store, ovviamente dopo verifica ed eventuali modifiche/adattamenti. :?:

Cordiali saluti

Oggetto: La funzione session_cleanup non funziona per l'estensione LibreOffice Fantastic Cartable

Pubblicato: 16 aprile 2026 - 15:29
di dcardon
Ciao Brice,

inoltro questo messaggio al team di supporto che gestisce il negozio.

Grazie per il feedback. :-)

Contrassegno la discussione come risolta.

Denis