Seite 1 von 1

[GELÖST] Die Funktion Session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 14. April 2026 - 10:41 Uhr
von brice73
Guten Morgen,

Vor einiger Zeit versuchte ich, die Erweiterung „Fantastic Schoolbag“ für LibreOffice zu paketieren. Nach einigen Schwierigkeiten gelang es mir schließlich, und ich stelle das Paket hier zur Verfügung, falls es für jemanden nützlich sein könnte. (Dieses Paket benötigt ein Installationspaket für LibreOffice.)

Code: Alle auswählen

# -*- 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")
Mein Problem ist, dass die Funktion `session_cleanup()` die Erweiterung nach der Deinstallation des Wapt-Pakets nicht automatisch aus den Benutzerprofilen entfernt. Wenn ich die Funktion `session_cleanup()` jedoch in PyScripter teste, gibt `installed_softwares('LibreOffice')` korrekt eine Liste zurück, und `run_notfatal(r'"C:\Program Files\LibreOffice\program\unopkg.exe" remove vnd.cmfpmatik.cartablefantastique')` deinstalliert die Erweiterung korrekt aus dem Profil.

Wenn ich jedoch nach der Deinstallation des wapt-Pakets für einen Benutzer die Eingabeaufforderung öffne und die Funktion session_cleanup ausführe:

Code: Alle auswählen

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

U:\>
Es scheint korrekt zu funktionieren, aber die Erweiterung wird nicht deinstalliert.

Überraschenderweise funktioniert es, wenn ich den Befehl session_cleanup function in einer Eingabeaufforderung innerhalb der Benutzersitzung (mit Benutzerrechten, nicht mit Administratorrechten) ausführe:

Code: Alle auswählen

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

U:\>
Die Erweiterung lässt sich hier problemlos deinstallieren.

Ich verstehe nicht, woher das Problem kommt. Haben Sie eine Idee?

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 14. April 2026 - 12:04 Uhr
von brice73
Ich konnte das Problem lösen. Ich weiß nicht warum, aber indem ich die Funktion `run_notfatal()` in der Funktion `session_cleanup()` durch die Funktion `run()` ersetzt habe, wird die Erweiterung nun nach der Deinstallation des Wapt-Pakets korrekt und automatisch aus den Benutzerprofilen entfernt.

Vielleicht gibt es noch etwas zu untersuchen, warum die Funktion run_notfatal() nicht funktioniert, während die Funktion run() (in session_cleanup) funktioniert. :?:

Ich teile also erneut mein funktionierendes Paket (ein Paket mit einer weiteren Abhängigkeit, die LibreOffice installiert), in dem ich eine Überwachungsfunktion hinzugefügt habe:

Code: Alle auswählen

# -*- 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")
Sie können den Thread als gelöst markieren.

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 14. April 2026 - 13:12 Uhr
von dcardon
Hallo Brice,

normalerweise sollte das keine Auswirkungen haben. Bist du dir bei deinem Test sicher, dass die Paketnummer korrekt erhöht wurde und die lokale waptservice-Datenbank mit dem letzten Deinstallationsbefehl ordnungsgemäß aktualisiert wurde?

Da das Paket beim Start von session_cleanup nicht mehr vorhanden ist, wird sein Code in der lokalen Datenbank gespeichert, um in Benutzersitzungen ausgeführt zu werden. Er wird aktualisiert, wenn das Paket auf dem Rechner aktualisiert wird.

Könntest du bitte versuchen, wieder auf run_not_fatal() umzuschalten, die Paketversion korrekt zu erhöhen und anschließend eine Installation/Deinstallation erneut durchzuführen?

Viele Grüße,

Denis

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 14. April 2026 - 17:05 Uhr
von brice73
Hallo Denis,

ich hatte tatsächlich sichergestellt, dass das wapt-Paket inkrementiert, installiert (und die Erweiterung für verschiedene Benutzer überprüft) und anschließend deinstalliert wurde, bevor ich die korrekte Deinstallation für die Benutzer überprüfte.

Ich habe es erneut mit `run_notfatal` anstelle von `run` in `session_cleanup` versucht, und tatsächlich funktioniert es auch mit `run_notfatal`. Daher habe ich keine Ahnung, warum es anscheinend ein Problem gab! Vielleicht wurde die `session_cleanup`-Funktion des vorherigen Pakets ausgeführt (was falsch war) und nicht die des zuletzt installierten Pakets ...?!

Jedenfalls scheint es keinen Unterschied zwischen `run` und `run_notfatal` zu geben.

Viele Grüße,

Brice

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 16. April 2026 - 09:21 Uhr
von lfkl
Vielen Dank für die Bereitstellung dieses Pakets; es hat uns hier sehr gefehlt, und ich hatte selbst lange danach gesucht.

Wäre es möglich, es in den Wapt Store aufzunehmen, falls der Autor einverstanden ist?

Mit freundlichen Grüßen.

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 16. April 2026 - 14:19 Uhr
von brice73
Hallo lfkl,

es freut mich zu hören, dass Ihnen dieses Paket nützlich ist. :) Ich hatte damit ebenfalls viele Probleme, unter anderem mit scheinbar wirkungslosen Befehlen, einer anscheinend fehlerhaften Installation für alle Benutzer (Option `--shared`) (die Erweiterung wurde zwar erkannt und installiert, funktionierte aber nicht richtig) und einer unvollständigen Dokumentation! Die einzige Installation, die bei mir funktionierte, war die, die ich in jedem Benutzerprofil durchführte.

Ich wäre Ihnen sehr dankbar, wenn Tranquil IT dieses Paket nach Prüfung und gegebenenfalls Anpassungen/Änderungen in den Store aufnehmen würde. :?:

Mit freundlichen Grüßen

Betreff: Die Funktion session_cleanup funktioniert nicht für die LibreOffice Fantastic Cartable-Erweiterung

Veröffentlicht: 16. April 2026 – 15:29 Uhr
von dcardon
Hallo Brice,

ich leite diesen Beitrag an das Support-Team weiter, das den Shop betreut.

Danke für das Feedback. :-)

Ich markiere das Thema als gelöst.

Denis