Pronote-Paket erstellen

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

3. Juli 2022 – 16:55 Uhr

Guten Morgen
Ich möchte ein Paket erstellen, um den Pronote-Client (Index Education) zu installieren
Ich habe daher eine .exe-Datei und eine .iss-Datei für die Installation sowie eine weitere für die Deinstallation. Der Batch-Befehl zum Starten der unbeaufsichtigten Installation auf allen Rechnern lautet wie folgt:

Code: Alle auswählen

\\serveur\pronote\Install_PRNclient_FR_win64.exe -s -f1\\serveur\pronote\ClientPRONOTE.iss
Zur Deinstallation lauten die folgenden Befehle

Code: Alle auswählen

"%ProgramFiles(x86)%\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe -s -uninst -f1\\serveur\pronote\uninstPRONOTE.iss
Wie kann ich diese Befehle in PyScripter in die Python-Sprache umwandeln, um ein Paket zu erstellen, das die Installation und Deinstallation ermöglicht?
DANKE
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

3. Juli 2022 – 18:28 Uhr

Nach mehreren Versuchen habe ich endlich die gewünschten Befehle gefunden, und es funktioniert mit pyscripter.
  • Zur Installation installiert Befehl 1 die ausführbare Datei mithilfe der zuvor erstellten .iss-Antwortdatei (siehe die Indexeducation-Website). Befehl 2 kopiert die Proxy-Einstellungen. Befehl 3 kopiert die Client-Einstellungen, einschließlich des TCP-Ports, der Indexeducation-Serveradresse und des Client-Namens.
  • Zur Deinstallation dient Befehl 1 zur Deinstallation mithilfe der Deinstallationsantwortdatei .iss. Befehl 2 löscht den Ordner indexeducation, der anscheinend bestehen bleibt und bei einer Neuinstallation Probleme verursachen kann.

Code: Alle auswählen

def install():
    run(r'"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1A:\waptdev\pkg-pronoteclient-wapt\ClientPRONOTE.iss')
    run(r'xcopy "A:\waptdev\pkg-pronoteclient-wapt\ConfigClientsHttp.xcfg" "C:\ProgramData\IndexEducation\Commun\" /y')
    run(r'xcopy "A:\waptdev\pkg-pronoteclient-wapt\Client PRONOTE.xcfg" "C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2021-0\FR\Installations\{90AAC525-F174-C243-EA1F-DCD1FD499401}\" /y')

def uninstall():
    run(r'"%ProgramFiles(x86)%\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe" -s -uninst -f1A:\waptdev\pkg-pronoteclient-wapt\uninstPRONOTE.iss')
    run(r'rd "C:\ProgramData\IndexEducation" /s /q')
Das Problem ist, dass Wapt beim Deployment der App auf einem PC folgenden Fehler ausgibt:

Code: Alle auswählen

CalledProcessErrorOutput: Command '"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1"ClientPRONOTE.iss"' returned non-zero exit status -2147213312.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

4. Juli 2022 – 13:29 Uhr

Hallo,


haben Sie sich schon den bestehenden Pronote-Thread in diesem Forum mit dem funktionierenden Code angesehen?

viewtopic.php?p=10396#p10396
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

9. Juli 2022 – 15:36 Uhr

Dieses Thema ist in der Tat sehr nützlich. Die globale Version funktioniert jedoch nicht; die aus dem ersten Beitrag mit der Download-URL und der Erstellung der .iss-Dateien...

Daher ist die einzig praktikable Option, die .iss-Dateien zusammen mit den .xcfg-Konfigurationsdateien für den Proxy und den Index Education Server in den Paketordner zu legen

In meinem Fall konnte ich die Installation mit folgendem Befehl zum Laufen bringen:

Code: Alle auswählen

def install():
    run(r'"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2021-0\FR\Installations\{90AAC525-F174-C243-EA1F-DCD1FD499401}\Client PRONOTE.xcfg')
Sie müssen das Programm beim ersten Mal starten (und es gegebenenfalls wieder stoppen), um die Konfigurationsdateien zu kopieren, andernfalls sind die Verzeichnisse nicht verfügbar.

Das einzige Problem ist die Deinstallation; ich bekomme es nicht hin. Ich habe folgenden Befehl verwendet:

Code: Alle auswählen

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe" -s -uninst -f1%s\uninstPRONOTE.iss' % basedir)
Ich verstehe den Unterschied zwischen `remove` und `uninstall` in PyScripter nicht. `remove` funktioniert einwandfrei bei Paketen, in die ein Deinstallationsschlüssel injiziert wird. Bei Pronote ist das jedoch anders, und man muss eine `.iss`-Antwortdatei verwenden. Wie kann ich den Deinstallationsbefehl in `def uninstall` zum Laufen bringen? Denn wenn ich in WAPT versuche, das Paket auf einem Rechner zu deinstallieren, lässt sich Pronote nicht deinstallieren.
DANKE
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

26. August 2022 – 15:05 Uhr

Guten Morgen
Ich habe das neue Paket mit der Version 2022 erstellt und dabei darauf geachtet, die Werte des Deinstallationsschlüssels in den .xcfg-Dateien und den umbenannten Verzeichnissen anzupassen
Das Problem besteht weiterhin: Der Deinstallationsbefehl funktioniert nicht. Ich weiß nicht, ob bei der Installation der neuen Version ein neues Verzeichnis erstellt oder das alte überschrieben wird.

Und noch ein weiteres, wiederkehrendes Problem, das ich nicht verstehe. Wenn ich die Installation testweise über PyScripter ausführe, funktioniert sie einwandfrei auf dem PC, auf dem die Wapt-Konsole läuft. Wenn ich sie jedoch auf anderen PCs bereitstelle, erhalte ich folgende Fehlermeldung:

Datei "C:\Program Files (x86)\wapt\waptutils.py", Zeile 2126, in run
raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output))
waptutils.CalledProcessErrorOutput: Der Befehl '"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1C:\\WINDOWS\\TEMP\\wapt4g0p39cy\\installPRONOTE.iss' hat den Exit-Status 1 zurückgegeben.
Ausgabe: '"Install_PRNclient_FR_2022.0.2.1_win64.exe"' wird nicht als interner Befehl erkannt
oder extern, ein ausführbares Programm oder eine Batchdatei.


Warum verweist es auf den falschen Ordner: -f1C:\\WINDOWS\\TEMP\\wapt4g0p39cy\\installPRONOTE.iss? Die Datei installPRONOTE.iss sollte idealerweise aus dem Paketordner in waptdev abgerufen werden, da ich sie dort abgelegt habe. Wie kann ich diesen Ordner angeben? Was bedeutet die Variable %s? Und was bedeutet %basedir?

Hier ist das Paket:

Code: Alle auswählen

uninstallkey = ['{D1124ED8-514E-40BF-9021-D3B3CA941A53}']

def install():
    run(r'"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
    import time
    time.sleep(3)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1%s\uninstPRONOTE.iss' % basedir)
    shutil.rmtree('C:\ProgramData\IndexEducation','ignore_errors=True')
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

29. August 2022 - 10:28 Uhr

`basedir` sollte bei der Deinstallation nicht verwendet werden.

Tatsächlich ist das Paket nach der Ausführung von `remove/uninstall` nicht mehr auf dem Rechner vorhanden. (Es wurde während der Installation entfernt, daher sind die darin enthaltenen Dateien nicht mehr verfügbar.)

Daher müssen Sie Ihre `uninstPRONOTE.iss`-Datei während der Installation an einen anderen Ort auf dem Rechner kopieren, um sie bei der Deinstallation verwenden zu können, oder die Datei bei der Ausführung von `def uninstall` erstellen.

Das Paket `msoffice` macht dies. Ein Beispiel finden Sie im Paket selbst; es erstellt die Datei nur bei der Deinstallation.

https://store.wapt.fr/store/details-tis ... 99489.wapt
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

29. August 2022 - 11:56 Uhr

Okay, danke. Tatsächlich wird auf der Pronote-Website auch empfohlen, die Dateien auf die lokale Festplatte zu kopieren
Die Installation funktioniert nun einwandfrei, indem die .iss-Datei nach C:: kopiert wird

Code: Alle auswählen

def install():
    shutil.copyfile('installPRONOTE.iss','C:\installPRONOTE.iss')
    run(r'Install_PRNclient_FR_2022.0.2.1_win64.exe -s -f1C:\installPRONOTE.iss')
    import time
    time.sleep(3)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')
Zur Deinstallation müssen Sie vermutlich lediglich das Verzeichnis %basedir löschen und die Datei .iss auf die lokale Festplatte kopieren. Das sähe dann etwa so aus:

Code: Alle auswählen

def uninstall():
    shutil.copyfile('uninstPRONOTE.iss','C:\uninstPRONOTE.iss')
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1C:\uninstPRONOTE.iss')
    shutil.rmtree('C:\ProgramData\IndexEducation','ignore_errors=True')
    
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

29. August 2022 – 14:49 Uhr

baseir kann während der Installation problemlos verwendet werden

Die Verwendung von `basedir` beim Deinstallieren allein gewährt keinen Zugriff auf die im Paket enthaltene Datei

Code: Alle auswählen

import time
uninstallkey = []

def install():
   run(r'"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
   time.sleep(3)
   killalltasks('Client PRONOTE.exe')
    
   filecopyto('ConfigClientsHttp.xcfg',r'C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
   filecopyto('Client PRONOTE.xcfg',r'C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')
   filecopyto("uninstPRONOTE.iss",r"c:\uninstPRONOTE.iss")

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1rc:\uninstPRONOTE.iss' )
    remove_tree(r'C:\ProgramData\IndexEducation')
adgm11
Nachrichten: 45
Anmeldung: 12. April 2022 - 07:00 Uhr

29. August 2022 – 16:17 Uhr

Okay, mit diesem Paket funktioniert alles einwandfrei, danke.
Nur ein kleiner Tippfehler im Deinstallationsbefehl:
-f1c:\uninstPRONOTE.iss.

Erfüllen filecopyto und shutil.copyfile dieselbe Funktion? Nur dass man für die zweite Funktion shutil importieren muss.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

30. August 2022 - 09:41 Uhr

`filecopyto` stammt direkt aus den Setup-Helfern von Wapt (klicken Sie in Ihrer IDE mit STRG auf die Funktion, um den zugrunde liegenden Code direkt anzuzeigen);

es handelt sich um eine verbesserte Version von `shutil.copyfile`.
Gesperrt