Pacchetto Pronote 2023, non disinstalla la versione 2022

Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Il supporto della community in francese è disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata (1.8.2 / 2.0 / 2.1 / 2.2 / ecc.) e l'edizione Enterprise / Discovery.
* Specificare il sistema operativo del server (Linux / Windows) e la versione (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti (Windows 7 / 10)
. * Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se hai bisogno di supporto commerciale, puoi contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Risposta
chris2b
Messaggi: 19
Registrazione: 1 luglio 2021 - 10:09

30 agosto 2023 - 11:02

Buongiorno,
Ho scaricato il pacchetto di installazione di Pronote 2023 dal forum, ma non riesco a capire come modificarlo per disinstallare la versione precedente.

Codice: Seleziona tutto

# -*- 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')
Ecco il codice utilizzato
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

30 agosto 2023 - 16:44

Versione WAPT, edizione, sistema operativo, ecc. Vedi le regole del forum.
Cordiali saluti,
Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
eric3360
Messaggi: 1
Iscrizioni: 17 dicembre 2024 - ore 15:53

17 dicembre 2024 - 15:58

Ciao,

per assicurarti che il pacchetto di installazione di PRONOTE 2023 disinstalli automaticamente la versione 2022, puoi aggiungere una funzione di disinstallazione all'inizio del tuo script. Ecco come procedere:

1. **Identifica la chiave di disinstallazione di PRONOTE 2022**: usa lo strumento `wapt-get list-registry` o consulta l'inventario software della console WAPT per trovare la chiave di disinstallazione corrispondente a PRONOTE 2022.

2. **Aggiungi il comando di disinstallazione**: inserisci il seguente comando all'inizio della tua funzione `install()` nello script WAPT:

```python
def install():
# Disinstalla PRONOTE 2022 se presente
run_notfatal(r'MsiExec.exe /x {UNINSTALLATION_KEY} /passive /norestart')

# Continua l'installazione di PRONOTE 2023
# ...
```

Sostituisci `{UNINSTALLATION_KEY}` con la chiave esatta trovata nel passaggio precedente. La funzione `run_notfatal` consente di eseguire il comando di disinstallazione senza interrompere lo script in caso di errore, garantendo così che l'installazione della nuova versione prosegua.

3. **Verifica l'installazione**: Assicurati che il resto dello script gestisca correttamente l'installazione di PRONOTE 2023, tenendo conto di eventuali configurazioni specifiche.

Questo metodo garantisce che la versione precedente di PRONOTE venga disinstallata prima dell'installazione della nuova, evitando così conflitti tra le versioni. ;)
Risposta