Paquet pronote 2023, ne désinstalle pas la version 2022

Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée ( 1.8.2 / 2.0 / 2.1 / 2.2 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Préciser OS du serveur (Linux / Windows) et version (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets (Windows 7 / 10)
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Répondre
chris2b
Messages : 19
Enregistré le : 01 juil. 2021 - 10:09

30 août 2023 - 11:02

Bonjour,
J'ai repris le paquet d'installation de pronote 2023 sur le forum, cependant je n'arrive pas à comprendre comment le modifier pour qu'il désinstalle la version précédente.

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
import platform

uninstallkey = []

# Defining variables
bin_contains = "Install_PRNclient_FR_"
app_uninstallkey = "{02871376-45F6-4642-9D84-C7681ABE361F}"
edition = "v2023.0"
SERVERNAME = "RNE.index-education.net"  # Le nom DNS du serveur pronote
SERVERPORT = "49300"  # Le port TCP du serveur pronote
NOMETAB = "MonETAB"  # Utilisé pour personnaliser le nom du raccourci sur le bureau


def install():
    # Initializing variables
    package_version = control.version.split("-", 1)[0]
    bin_name = glob.glob("*%s*.exe" % bin_contains)[0]
    edition_old = str(int(edition[1:5]) - 1)

    print("Installing: %s" % bin_name)
    import tempfile
    import codecs

    pathinstallfile = makepath(tempfile.gettempdir(), "Setup.iss")
    if installed_softwares("INDEX EDUCATION - Client PRONOTE %s - 64bit" % edition_old):
        data = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[%s-DlgOrder]
Dlg0=%s-SdLicense2Rtf-0
Count=6
Dlg1=%s-SdAskDestPath-0
Dlg2=%s-AskOptions-0
Dlg3=%s-AskOptions-1
Dlg4=%s-AskOptions-2
Dlg5=%s-SdFinish-0
[%s-SdLicense2Rtf-0]
Result=1
[%s-SdAskDestPath-0]
szDir=C:\Program Files\Index Education\Pronote %s\Réseau\Client
Result=1
[%s-AskOptions-0]
Result=1
Sel-0=0
[%s-AskOptions-1]
Result=1
Sel-0=1
Sel-1=0
Sel-2=0
Sel-3=0
[%s-AskOptions-2]
Result=1
Sel-0=0
[%s-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
""" % (
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            edition[1:5],
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
        )
    else:
        data = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[%s-DlgOrder]
Dlg0=%s-SdLicense2Rtf-0
Count=5
Dlg1=%s-SdAskDestPath-0
Dlg2=%s-AskOptions-0
Dlg3=%s-AskOptions-1
Dlg4=%s-SdFinish-0
[%s-SdLicense2Rtf-0]
Result=1
[%s-SdAskDestPath-0]
szDir=C:\Program Files\Index Education\Pronote %s\Réseau\Client
Result=1
[%s-AskOptions-0]
Result=1
Sel-0=1
Sel-1=0
Sel-2=0
Sel-3=0
[%s-AskOptions-1]
Result=1
Sel-0=0
[%s-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
""" % (
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
            edition[1:5],
            app_uninstallkey,
            app_uninstallkey,
            app_uninstallkey,
        )
    fichier = codecs.open(pathinstallfile, "w", encoding="mbcs")
    fichier.write(data)
    fichier.close()
    install_exe_if_needed(
        bin_name, silentflags="-s -f1%s" % pathinstallfile, key=app_uninstallkey, min_version=package_version, killbefore="Client PRONOTE.exe"
    )
    uninstallkey.remove(app_uninstallkey)
    # Deleting response file
    remove_file(pathinstallfile)
    # Creating desktop shortcut for all users
    create_desktop_shortcut(
        r"Pronote%s - %s" % (edition[1:5], NOMETAB),
        target="C:\Program Files\Index Education\Pronote %s\Réseau\Client\Client PRONOTE.exe" % edition[1:5],
        arguments=r'-Adresse "%s" -PortTcp "%s"' % (SERVERNAME, SERVERPORT),
    )


def audit():
    if not installed_softwares("Mise à jour automatique"):
        print("Module de Mise à jour automatique manquant")
        return "ERROR"
    if not isfile(r"%s\InstallShield Installation Information\%s\setup.exe" % (programfiles32, app_uninstallkey)):
        print("Binaire de désinstallation manquant")
        return "WARNING"
    else:
        for soft in installed_softwares("Mise à jour automatique"):
            print(soft["name"] + " : " + soft["version"])
        return "OK"


def update_package():
    print("Downloading/Updating package content from upstream binary sources")

    # Initializing variables
    bin_name_string = "Install_PRNclient_FR_%s.%s_win64.exe"
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    app_name = control.name
    url = control.sources
    app_arch = control.architecture
    if app_arch == "x64":
        dl_arch = "win64"
    else:
        dl_arch = "win32"

    # Getting latest version from official website
    page = wgets(control.sources, proxies=proxies)
    for line in page.splitlines():
        if ("CLIENT EDT %s - 0." % edition[1:5]) in line:
            version = line.split('-')[-1].split('<')[0].replace(" ","")
            break
    latest_bin = bin_name_string % (edition[1:5], version)
    url_dl = "https://tele3.index-education.com/telechargement/pn/%s/exe/Install_PRNclient_FR_%s.%s_%s.exe" % (
        edition,
        edition[1:5],
        version,
        dl_arch,
    )

    print("Latest %s version is: %s" % (app_name, version))
    print("Download url is: %s" % url_dl)

    # Downloading latest binaries
    if not isfile(latest_bin):
        print("Downloading: %s" % latest_bin)
        wget(url_dl, latest_bin, proxies=proxies)

        # Checking version from file
        version_from_file = get_version_from_binary(latest_bin)
        if version != version_from_file:
            os.rename(latest_bin, bin_name_string % (edition[1:5], version_from_file))
            version = version_from_file

        # Changing version of the package
        control.version = "%s-%s" % (version, int(control.version.split("-")[-1]) + 1)
        control.save_control_to_wapt()
        print("Changing version to: %s in WAPT\\control" % control.version)

    # Deleting outdated binaries
    remove_outdated_binaries(version)


def uninstall():
    print("uninstalling: %s" % control.package)
    import tempfile

    pathuninstallfile = makepath(tempfile.gettempdir(), "Uninstall.iss")
    data = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[%s-DlgOrder]
Dlg0=%s-MessageBox-0
Count=2
Dlg1=%s-SdFinishReboot-0
[%s-MessageBox-0]
Result=6
[%s-SdFinishReboot-0]
Result=1
BootOption=0
""" % (
        app_uninstallkey,
        app_uninstallkey,
        app_uninstallkey,
        app_uninstallkey,
        app_uninstallkey,
    )
    fichier = open(pathuninstallfile, "w")
    fichier.write(data)
    fichier.close()
    run(r'"%s\InstallShield Installation Information\%s\setup.exe" -s -uninst -f1%s' % (programfiles32, app_uninstallkey, pathuninstallfile))
    # Deleting response file
    remove_file(pathuninstallfile)
    # Removing desktop shortcut for all users
    remove_desktop_shortcut("Pronote%s - %s.lnk" % (edition[1:5], NOMETAB))
    # Uninstalling Auto Update Agent
    if uninstall_key_exists("{775E087D-A428-428C-A5FD-000010010000}"):
        run('"MsiExec.exe" /X{775E087D-A428-428C-A5FD-000010010000} /qn')
Voici le code utilisé
Avatar du membre
dcardon
Expert WAPT
Messages : 1717
Enregistré le : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

30 août 2023 - 16:44

version WAPT, edition, os , etc. cf forum rules
Cordialement,
Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
eric3360
Messages : 1
Enregistré le : 17 déc. 2024 - 15:53

17 déc. 2024 - 15:58

Bonjour,

Pour que votre paquet d'installation de PRONOTE 2023 désinstalle automatiquement la version 2022, vous pouvez ajouter une fonction de désinstallation au début de votre script. Voici comment procéder :

1. **Identifier la clé de désinstallation de PRONOTE 2022** : Utilisez l'outil `wapt-get list-registry` ou consultez l'inventaire logiciel de la console WAPT pour trouver la clé de désinstallation correspondant à PRONOTE 2022.

2. **Ajouter la commande de désinstallation** : Insérez la commande suivante au début de votre fonction `install()` dans le script WAPT :

```python
def install():
# Désinstaller PRONOTE 2022 si présent
run_notfatal(r'MsiExec.exe /x {CLÉ_DÉSINSTALLATION} /passive /norestart')

# Suite de l'installation de PRONOTE 2023
# ...
```

Remplacez `{CLÉ_DÉSINSTALLATION}` par la clé exacte trouvée à l'étape précédente. La fonction `run_notfatal` permet d'exécuter la commande de désinstallation sans interrompre le script en cas d'échec, assurant ainsi que l'installation de la nouvelle version se poursuive.

3. **Vérifier l'installation** : Assurez-vous que le reste de votre script gère correctement l'installation de PRONOTE 2023, en tenant compte des éventuelles configurations spécifiques.

Cette méthode garantit que la version précédente de PRONOTE est désinstallée avant l'installation de la nouvelle, évitant ainsi les conflits entre les versions ;)
Répondre