Pagina 7 di 8

Re: [RISOLTO] Creazione del pacchetto Edt v2021 / Pronote v2021

Pubblicato: 24 febbraio 2022 - 11:51
di Jonattend
Buongiorno,

Da parte mia, ho fatto semplicemente questo:

setup.py:

Codice: Seleziona tutto

# -*- 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:

Codice: Seleziona tutto

C:\install\Install_PRNclient_FR_2021.0.2.7_win64.exe -s -f1C:\install\ClientPRONOTE.iss -f2C:\Windows\debug\pronote_install.log
Non mi occupo della disinstallazione, ma nel mio caso non è un grosso problema.

Esistono sicuramente metodi più puliti, ma questo ha il merito di funzionare :)

A+

Re: [RISOLTO] Creazione del pacchetto Edt v2021 / Pronote v2021

Pubblicato: 2 giugno 2022 - 14:05
di SebAranel
Salve,

sono appena arrivato in due scuole e al momento è presente un server WAPT con Debian 11, controllato tramite la console WAPT su Windows 7.

Non ho molta esperienza nella creazione di pacchetti e devo installare l'ultimo aggiornamento di Pronote (0.2.9).

Apprezzerei un aiuto per finalizzare un pacchetto per questa versione di Pronote. Esiste un pacchetto per la versione 0.2.8, ma purtroppo, quando provo a installarlo, ricevo molti messaggi di errore da PyScript.

Avreste per caso un codice che potrei utilizzare per personalizzarlo per ciascuna scuola?

Grazie in anticipo

Re: [RISOLTO] Creazione del pacchetto Edt v2021 / Pronote v2021

Pubblicato: 3 giugno 2022 - 10:51
di dcardon
Ciao SebAranel,

potresti confermare che la tua versione di WAPT è la 2.2.1.11949 Enterprise? Normalmente, la versione 1.8.2 è compatibile con la versione 2.2.1.

Hai installato PyScripter versione 3 o PyScripter 4? Personalmente, consiglio PyScripter versione 3; la versione 4 utilizza l'implementazione "Python Language Server" per il completamento automatico e l'analisi della sintassi nell'editor, ed è piuttosto instabile.

Cordiali saluti,

Denis Cardon

Re: [RISOLTO] Creazione del pacchetto Edt v2021 / Pronote v2021

Pubblicato: 8 giugno 2022 - 08:17
di SebAranel
Ciao Denis,

scusa la risposta un po' lunga. Ho appena controllato e a quanto pare ho una versione di rilevamento di wapt, la 2.2.1.11949, e per pyscripter sono alla versione 3.6. Ho allegato uno screenshot.

Immagine

Non so se faccia differenza, ma la mia console mostra "rilevamento".

Cordiali saluti,

SebAranel

Re: [RISOLTO] Creazione del pacchetto Edt v2021 / Pronote v2021

Pubblicato: 8 giugno 2022 - 11:14
di olaplanche
Ciao,

per tua informazione, il codice Python v3 compatibile con EDT e Pronote versione 0.2.10 si trova nel primo post.
Include anche le istruzioni per personalizzarlo a tuo piacimento.
Ho anche appena corretto alcuni piccoli errori di battitura e ho verificato personalmente tutte le funzioni senza riscontrare errori.

Normalmente, tutto ciò che devi fare è copiare/incollare e modificare tre variabili.

Re: [RISOLTO] Pacchetto Edt v2021 / Pronote v2021 build 0.2.10

Pubblicato: 8 giugno 2022 - 12:09
di SebAranel
Ciao Olaplanche

Grazie per la risposta e per il codice, ha funzionato con pyscripter utilizzando wapt install nel mio post, tuttavia dopo aver provato a installarlo con il pacchetto creato, restituisce tutti questi errori.

Codice: Seleziona tutto

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']]
L'ho messo in forma di codice così puoi vedere di cosa si tratta.

Non so se sia possibile, ma ho ancora molti post a 32 bit. Il codice che hai creato funzionerebbe su questo tipo di post?.

So in anticipo che gli errori non provengono dal codice che mi hai fornito perché nel mio post non ci sono errori.

Sinceramente

SebAranel

Re: [RISOLTO] Pacchetto Edt v2021 / Pronote v2021 build 0.2.10

Pubblicato: 8 giugno 2022 - 13:50
di olaplanche
Posso vedere il codice nei file setup.py e control?

Affinché il codice funzioni con la versione a 32 bit, sono necessarie alcune modifiche.

Re: [RISOLTO] Pacchetto Edt v2021 / Pronote v2021 build 0.2.10

Pubblicato: 9 giugno 2022 - 09:30
di SebAranel
Buongiorno

Ecco il codice per setup.py. Ci sono le modifiche apportate alle tre righe con le informazioni sul college. L'ho appena modificato per mostrarvi il codice.

Codice: Seleziona tutto

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

Ed ecco cosa è sotto controllo

Codice: Seleziona tutto

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
L'ho recuperato da PyScripter; spero di non aver commesso errori e che questo sia ciò che volevi vedere

Sinceramente

SebAranel

Re: [RISOLTO] Pacchetto Edt v2021 / Pronote v2021 build 0.2.10

Pubblicato: 9 giugno 2022 - 09:41
di olaplanche
Ciao,

esatto, grazie. Potresti aggiungere il codice sorgente al tuo file di controllo come indicato nel primo messaggio?
Dopodiché, elimina il file binario dalla cartella di sviluppo del pacchetto ed esegui la funzione "update-package-sources" da PyScripter.
Se tutto è a posto, scarica nuovamente il file binario e rinominalo correttamente. Quindi, esegui un altro test di installazione da PyScripter e, se ha ancora successo, compila il pacchetto e caricalo sul server per eseguire un altro test di distribuzione.

Re: [RISOLTO] Pacchetto Edt v2021 / Pronote v2021 build 0.2.10

Pubblicato: 9 giugno 2022 - 10:04
di SebAranel
Cosa intendi con eliminare il binario dalla cartella di sviluppo del pacchetto?