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')