Page 7 sur 8

Re: [RESOLU] Création de paquet Edt v2021 / Pronote v2021

Publié : 24 févr. 2022 - 11:51
par Jonattend
Bonjour,

Pour ma part, je viens de faire ceci :

setup.py :

Code : Tout sélectionner

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

uninstallkey = []

def install():
    #install_exe_if_needed("fake_install.exe",'/VERYSILENT',key='',min_version='0.0.0')
    mkdirs("C:\install")
    filecopyto("Install_PRNclient_FR_2021.0.2.7_win64.exe","C:\install")
    filecopyto("install_pronote.cmd","C:\install")
    filecopyto("ClientPRONOTE.iss","C:\install")
    run("C:\install\install_pronote.cmd", timeout=1200)
install_pronote.cmd :

Code : Tout sélectionner

C:\install\Install_PRNclient_FR_2021.0.2.7_win64.exe -s -f1C:\install\ClientPRONOTE.iss -f2C:\Windows\debug\pronote_install.log
Je ne gère pas le uninstall mais, pour mon cas, ce n'est pas grave.

Y'a sûrement plus propre mais ça a le mérite de fonctionner :)

A+

Re: [RESOLU] Création de paquet Edt v2021 / Pronote v2021

Publié : 02 juin 2022 - 14:05
par SebAranel
Bonjour,

Je viens d'arriver dans deux collèges et il y a actuellement un serveur wapt sous debian 11 avec un contrôle sous windows 7 au niveau de la console WAPT.

N'étant pas très avancé dans la création des paquets et devant déployer la dernière mise à jour de pronote (0.2.9).

J'aimerais un peu d'aide afin de finaliser un paquet pour la version de pronote, il existe bien un paquet pour la version 0.2.8 mais malheureusement en récupérant le pyscript beaucoup de message d'erreur apparaisse lors d'une éventuelle tentative d'installation.

Auriez vous un code à me fournir afin que je puisse le personnalisé part rapport au deux établissements.

Merci d'avance

Re: [RESOLU] Création de paquet Edt v2021 / Pronote v2021

Publié : 03 juin 2022 - 10:51
par dcardon
Bonjour SebAranel,

est ce que vous pouvez bien confirmer votre version WAPT 2.2.1.11949 Enterprise? Car normalement le code 1.8.2 est compatible avec la version 2.2.1.

Est ce que vous avez installé la version PyScripter 3 ou PyScripter 4? Perso je vous recommande la version PyScripter 3, la version 4 est passé sur l'implémentation "Python Language Server" pour l'autocomplétion et l'analyse syntaxique dans l'éditeur, et ça bugge quand même pas mal.

Cordialement,

Denis Cardon

Re: [RESOLU] Création de paquet Edt v2021 / Pronote v2021

Publié : 08 juin 2022 - 08:17
par SebAranel
Bonjour Denis

Excusez moi pour la réponse un peu longue. Je viens de vérifier et je suis apparemment sur une version discovery de wapt en 2.2.1.11949, et pour la version de pyscripter je suis en version 3.6 je vous mets un screenshot.

Image

Je ne sais pas si ça change quelque chose mais ma console m'indique discovery.

Cordialement

SebAranel

Re: [RESOLU] Création de paquet Edt v2021 / Pronote v2021

Publié : 08 juin 2022 - 11:14
par olaplanche
Bonjour,

Pour info, il y a le code compatible python v3 pour edt et pronote version 0.2.10 en premier post.
Il y a également les explications pour le personnaliser comme bon vous semble.
Je viens également de corriger quelques coquilles non bloquantes et de vérifier toutes les fonctions de mon côté sans erreur.

Normalement il ne vous reste qu'à faire un copier/coller et changer 3 variables.

Re: [RESOLU] Paquet Edt v2021 / Pronote v2021 build 0.2.10

Publié : 08 juin 2022 - 12:09
par SebAranel
Bonjour Olaplanche

Merci pour ta réponse et pour ton code il a fonctionner avec le pyscripter en utilisant le wapt instal sur mon post cependant après avoir tenter de l'installer avec le paquet créer il me retourne toute ces erreurs.

Code : Tout sélectionner

Installing gmwapt-client-pronote-2021-0210(=0.2.10-1)

Installing gmwapt-client-pronote-2021-0210(=0.2.10-1)

Installing: Install_PRNclient_FR_2021.0.2.10_win64.exe


Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptservice\service.py", line 1892, in run
    self.running_task.run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 653, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 1126, in _run
    self.result.get('errors',[])))
Exception: Erreur lors de l'installation de [u'gmwapt-client-pronote-2021-0210(=0.2.10-1)']: erreurs dans les paquets [[PackageRequest(package=u'gmwapt-client-pronote-2021-0210',version=(Version('0.2.10.0'), 1),architectures=[u'x64'],locales=['fr'],maturities=[u'PROD'],target_os=[u'windows'],min_os_version=Version('10.0.19044'),max_os_version=Version('10.0.19044')), PackageEntry(u'gmwapt-client-pronote-2021-0210',u'0.2.10-1' architecture=u'x64',maturity=u'PROD'), u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4952, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3962, in install_wapt\n    raise e\nUnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xc3 in position 623: ordinal not in range(128)\n']]

Exception: Erreur lors de l'installation de [u'gmwapt-client-pronote-2021-0210(=0.2.10-1)']: erreurs dans les paquets [[PackageRequest(package=u'gmwapt-client-pronote-2021-0210',version=(Version('0.2.10.0'), 1),architectures=[u'x64'],locales=['fr'],maturities=[u'PROD'],target_os=[u'windows'],min_os_version=Version('10.0.19044'),max_os_version=Version('10.0.19044')), PackageEntry(u'gmwapt-client-pronote-2021-0210',u'0.2.10-1' architecture=u'x64',maturity=u'PROD'), u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4952, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3962, in install_wapt\n    raise e\nUnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xc3 in position 623: ordinal not in range(128)\n']]
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\waptservice\service.py", line 1892, in run
    self.running_task.run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 653, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 1126, in _run
    self.result.get('errors',[])))
Exception: Erreur lors de l'installation de [u'gmwapt-client-pronote-2021-0210(=0.2.10-1)']: erreurs dans les paquets [[PackageRequest(package=u'gmwapt-client-pronote-2021-0210',version=(Version('0.2.10.0'), 1),architectures=[u'x64'],locales=['fr'],maturities=[u'PROD'],target_os=[u'windows'],min_os_version=Version('10.0.19044'),max_os_version=Version('10.0.19044')), PackageEntry(u'gmwapt-client-pronote-2021-0210',u'0.2.10-1' architecture=u'x64',maturity=u'PROD'), u'Traceback (most recent call last):\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 4952, in install\n    force=force\n  File "C:\\Program Files (x86)\\wapt\\common.py", line 3962, in install_wapt\n    raise e\nUnicodeDecodeError: \'ascii\' codec can\'t decode byte 0xc3 in position 623: ordinal not in range(128)\n']]
Je te l'ai mit sous forme de code afin que tu puisse voir ce qu'il en ai.

Je ne sais pas non plus si c possible mais j'ai encore beaucoup de post en 32bits, es ce que le code que tu as fait fonctionnerai sur ce type de post.

Je sais d'avance que les erreurs ne vienne pas du code que tu m'as fourni car aucune erreur sur mon post.

Cordialement

SebAranel

Re: [RESOLU] Paquet Edt v2021 / Pronote v2021 build 0.2.10

Publié : 08 juin 2022 - 13:50
par olaplanche
Est-ce que je peux voir le code du fichier setup.py et control ?

Pour le fonctionnement du code avec la version 32bits, il y a quelques modifications à faire.

Re: [RESOLU] Paquet Edt v2021 / Pronote v2021 build 0.2.10

Publié : 09 juin 2022 - 09:30
par SebAranel
Bonjour

Voici le code de setup.py il y a la modifications qui a était faites sur les trois lignes avec les informations du collège j'ai juste modifier pour vous montrer le code.

Code : Tout sélectionner

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

uninstallkey = []

# Defining variables
bin_name_string = 'Install_PRNclient_FR_%s.%s_win64.exe'
app_uninstallkey = '{E20E5011-C887-40D8-8C26-99460A24F860}'
edition = 'v2021.0'
SERVERNAME = 'Adresse du serveur du college' # Le nom DNS du serveur pronote
SERVERPORT = 'Port du serveur' # Le port TCP du serveur pronote
NOMETAB = 'Nom du Collège' # Utilisé pour personnaliser le nom du raccourci sur le bureau

def install():
    # Initializing variables
    package_version = control.version.split('-',1)[0]
    bin_name = bin_name_string % (edition[1:5],package_version)

    print('Installing: %s' % bin_name)
    import tempfile
    import codecs
    pathinstallfile = makepath(tempfile.gettempdir(),'Setup.iss')
    if installed_softwares ('INDEX EDUCATION - Client PRONOTE 2020 - 64bit'):
        data = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{E20E5011-C887-40D8-8C26-99460A24F860}-DlgOrder]
Dlg0={E20E5011-C887-40D8-8C26-99460A24F860}-SdLicense2Rtf-0
Count=6
Dlg1={E20E5011-C887-40D8-8C26-99460A24F860}-SdAskDestPath-0
Dlg2={E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-0
Dlg3={E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-1
Dlg4={E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-2
Dlg5={E20E5011-C887-40D8-8C26-99460A24F860}-SdFinish-0
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdLicense2Rtf-0]
Result=1
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdAskDestPath-0]
szDir=C:\Program Files\Index Education\Pronote 2021\Réseau\Client
Result=1
[{E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-0]
Result=1
Sel-0=0
[{E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-1]
Result=1
Sel-0=1
Sel-1=0
Sel-2=0
Sel-3=0
[{E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-2]
Result=1
Sel-0=0
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
"""
    else:
        data = r"""[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{E20E5011-C887-40D8-8C26-99460A24F860}-DlgOrder]
Dlg0={E20E5011-C887-40D8-8C26-99460A24F860}-SdLicense2Rtf-0
Count=5
Dlg1={E20E5011-C887-40D8-8C26-99460A24F860}-SdAskDestPath-0
Dlg2={E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-0
Dlg3={E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-1
Dlg4={E20E5011-C887-40D8-8C26-99460A24F860}-SdFinish-0
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdLicense2Rtf-0]
Result=1
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdAskDestPath-0]
szDir=C:\Program Files\Index Education\Pronote 2021\Réseau\Client
Result=1
[{E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-0]
Result=1
Sel-0=1
Sel-1=0
Sel-2=0
Sel-3=0
[{E20E5011-C887-40D8-8C26-99460A24F860}-AskOptions-1]
Result=1
Sel-0=0
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
"""
    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=u'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 update_package():
    print('Downloading/Updating package content from upstream binary sources')

    # Initializing variables
    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 PRONOTE 2021' in line :
            version = line.split('- ')[-1].split(' <')[0]
            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 get_proxies():
    if platform.python_version_tuple()[0] == '3':
        from urllib.request import getproxies
    else:
        from urllib import getproxies
    return getproxies()


def get_version_from_binary(filename):
    if filename.endswith('.msi'):
        return get_msi_properties(filename)['ProductVersion']
    else:
        return get_file_properties(filename)['ProductVersion']


def remove_outdated_binaries(version, list_extensions=['exe','msi','deb','rpm','dmg','pkg'], list_filename_contain=None):
    if type(list_extensions) != list:
        list_extensions = [list_extensions]
    if list_filename_contain:
        if type(list_filename_contain) != list:
            list_filename_contain = [list_filename_contain]
    list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
    for file_ext in list_extensions:
        for bin_in_dir in glob.glob('*%s' % file_ext):
            if not version in bin_in_dir:
                remove_file(bin_in_dir)
            if list_filename_contain:
                for filename_contain in list_filename_contain:
                    if not filename_contain in bin_in_dir:
                        remove_file(bin_in_dir)

def get_proxies_from_wapt_console():
    proxies = {}
    if platform.system() == 'Windows':
        waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
    else:
        waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
    if isfile(waptconsole_ini_path):
        proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
        if proxy_wapt:
            proxies = {'http': proxy_wapt, 'https': proxy_wapt}
    return proxies

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
[{E20E5011-C887-40D8-8C26-99460A24F860}-DlgOrder]
Dlg0={E20E5011-C887-40D8-8C26-99460A24F860}-MessageBox-0
Count=2
Dlg1={E20E5011-C887-40D8-8C26-99460A24F860}-SdFinishReboot-0
[{E20E5011-C887-40D8-8C26-99460A24F860}-MessageBox-0]
Result=6
[{E20E5011-C887-40D8-8C26-99460A24F860}-SdFinishReboot-0]
Result=1
BootOption=0
"""
    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
    run('"MsiExec.exe" /X{775E087D-A428-428C-A5FD-000010008000} /qn')

Et voici ce qu'il y a dans control

Code : Tout sélectionner

package           : gmwapt-client-pronote-2021-0210
version           : 0.2.10-1
architecture      : x64
section           : base
priority          : optional
name              : client-pronote-2021---64bit
categories        : 
maintainer        : winadmin
description       : Client PRONOTE 2021 - 64bit (Index Education)
depends           : 
conflicts         : 
maturity          : PROD
locale            : 
target_os         : windows
min_wapt_version  : 
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : 
description_pl    :
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : 
keywords          : 
licence           : 
homepage          : 
package_uuid      : 692f5a90-88e4-4b2d-8cc0-3a5a7b35ed86
valid_from        :
valid_until       :
forced_install_on :
changelog         :
min_os_version    :
max_os_version    :
icon_sha256sum    :
signer            : wapt
signer_fingerprint: 3d98c6bd75c8444596edecb80c04dda1ac217d841674700541eb14fde7ddaad6
signature         : PB0R1D+WGx8L5CFEP4qp0P/Y9ypNZh5HVcV+HtFW1/f6a3Xu+K5X6Fwr62d33S2o2HdtsdOIuZT4n9w5lzz+6PgEA8rIF+aCpMIFoU/yRWQ2n71ecf7R9cehBRIBhCWBKpFgYNug0saL/Zk3Cag2b7ffuQibdHp4nKdmX6wilUpfbHXXtnskMTsvXAhaXZxCFe3yHjmPFML3URTEJX5/7LWKlAQ1u0W1PYx9vd8PH2nw6RaMjcQYgEgu4hZPscqm5RQqIq53jg+EutVPqNyBExKAJM2hOG0TJfNt6TFjxA/b/LnwJjBvHa1/GR0Vdm+fOTXKvhmmEsAwIrEYitbVNg==
signature_date    : 2022-06-08T11:54:39.301511
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
J'ai récupérer dans pyscripter, j'espere ne pas mèttre tromper et que c'etait ca que vous vouliez voir

Cordialement

SebAranel

Re: [RESOLU] Paquet Edt v2021 / Pronote v2021 build 0.2.10

Publié : 09 juin 2022 - 09:41
par olaplanche
Bonjour,

C'est bien ça merci, pouvez-vous ajouter la source dans votre fichier contrôle comme indiqué dans le premier post.
Ensuite supprimer le binaire du dossier de développement du paquet et lancer la fonction "update-package-sources" depuis pyscripter.
Si tout est ok, le binaire est re-télécharger et nommé comme il se doit, ensuite refaire un test d'installation depuis pyscripter et si toujours ok, build le paquet et l'importer sur le serveur pour faire un nouveau test de déploiement.

Re: [RESOLU] Paquet Edt v2021 / Pronote v2021 build 0.2.10

Publié : 09 juin 2022 - 10:04
par SebAranel
Que voulez vous dire par supprimer le binaire du dossier développement du paquet??