Página 7 de 8
Re: [RESUELTO] Creación del paquete Edt v2021 / Pronote v2021
Publicado: 24 de febrero de 2022 - 11:51 a. m.
por Jonattend
Buen día,
Por mi parte, acabo de hacer esto:
configuración.py:
Código: Seleccionar todo
# -*- 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)
instalar_pronote.cmd:
Código: Seleccionar todo
C:\install\Install_PRNclient_FR_2021.0.2.7_win64.exe -s -f1C:\install\ClientPRONOTE.iss -f2C:\Windows\debug\pronote_install.log
No me encargo de desinstalar, pero en mi caso no es gran cosa.
Ciertamente hay formas más limpias, pero ésta tiene el mérito de funcionar
A+
Re: [RESUELTO] Creación del paquete Edt v2021 / Pronote v2021
Publicado: 2 de junio de 2022 - 14:05
por Seb Aranel
Hola,
acabo de llegar a dos escuelas y actualmente hay un servidor WAPT con Debian 11, controlado mediante la consola WAPT en Windows 7.
No tengo mucha experiencia en la creación de paquetes y necesito implementar la última actualización de Pronote (0.2.9).
Agradecería ayuda para finalizar un paquete para esta versión de Pronote. Existe un paquete para la versión 0.2.8, pero desafortunadamente, al intentar instalarlo, recibo muchos mensajes de error de PyScript. ¿
Tendrían algún código que pueda usar para personalizarlo para cada escuela?
Gracias de antemano
Re: [RESUELTO] Creación del paquete Edt v2021 / Pronote v2021
Publicado: 3 de junio de 2022 - 10:51
por dcardon
Hola SebAranel,
¿podrías confirmar si tu versión de WAPT es la 2.2.1.11949 Enterprise? Normalmente, la versión 1.8.2 es compatible con la versión 2.2.1. ¿
Instalaste PyScripter versión 3 o PyScripter 4? Personalmente, recomiendo PyScripter versión 3; la versión 4 utiliza la implementación "Python Language Server" para el autocompletado y el análisis sintáctico en el editor, y tiene bastantes errores.
Atentamente,
Denis Cardon
Re: [RESUELTO] Creación del paquete Edt v2021 / Pronote v2021
Publicado: 8 de junio de 2022 - 08:17
por Seb Aranel
Hola Denis,
disculpa la respuesta un poco larga. Acabo de comprobarlo y, al parecer, estoy usando una versión de descubrimiento de wapt, la 2.2.1.11949, y para pyscripter tengo la versión 3.6. Adjunto una captura de pantalla.
No sé si influye, pero mi consola muestra "discovery".
Saludos,
SebAranel
Re: [RESUELTO] Creación del paquete Edt v2021 / Pronote v2021
Publicado: 8 de junio de 2022 - 11:14
por olaplanche
Hola,
para tu información, el código compatible con Python v3 para EDT y Pronote versión 0.2.10 se encuentra en la primera publicación.
También incluye instrucciones para personalizarlo según tus necesidades.
Además, acabo de corregir algunos errores tipográficos menores y revisé todas las funciones personalmente sin encontrar ningún error.
Normalmente, solo necesitas copiar y pegar y cambiar tres variables.
Re: [RESUELTO] Paquete Edt v2021 / Pronote v2021 build 0.2.10
Publicado: 8 de junio de 2022 - 12:09 p. m.
por Seb Aranel
Hola Olaplanche
Gracias por tu respuesta y por tu código, funcionó con pyscripter usando la instalación wapt en mi publicación, sin embargo, después de intentar instalarlo con el paquete creado, devuelve todos estos errores.
Código: Seleccionar todo
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']]
Lo he puesto en formato de código para que puedas ver de qué se trata.
Tampoco sé si sea posible, pero aún tengo muchas publicaciones de 32 bits. ¿Funcionaría el código que creaste en este tipo de publicación?.
Sé de antemano que los errores no provienen del código que me proporcionaste porque no hay errores en mi publicación.
Atentamente
Seb Aranel
Re: [RESUELTO] Paquete Edt v2021 / Pronote v2021 build 0.2.10
Publicado: 8 de junio de 2022 - 13:50
por olaplanche
¿Puedo ver el código en los archivos setup.py y control?
Para que el código funcione con la versión de 32 bits, es necesario realizar algunas modificaciones.
Re: [RESUELTO] Paquete Edt v2021 / Pronote v2021 build 0.2.10
Publicado: 9 de junio de 2022 - 9:30 a. m.
por Seb Aranel
Buen día
Aquí está el código de setup.py. Se incluyen las modificaciones realizadas en las tres líneas con la información de la universidad. Acabo de modificarlo para mostrarles el código.
Código: Seleccionar todo
# -*- 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')
Y esto es lo que está bajo control
Código: Seleccionar todo
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
Lo recuperé de PyScripter; espero no haberme equivocado y que esto sea lo que querías ver
Atentamente
Seb Aranel
Re: [RESUELTO] Paquete Edt v2021 / Pronote v2021 build 0.2.10
Publicado: 9 de junio de 2022 - 09:41
por olaplanche
Hola,
correcto, gracias. ¿Podrías añadir el código fuente a tu archivo de control como se indica en la primera publicación?
Luego, elimina el binario de la carpeta de desarrollo del paquete y ejecuta la función "update-package-sources" de PyScripter.
Si todo funciona correctamente, vuelve a descargar el binario y asígnale el nombre adecuado. A continuación, realiza otra prueba de instalación desde PyScripter y, si sigue siendo exitosa, compila el paquete y súbelo al servidor para realizar otra prueba de despliegue.
Re: [RESUELTO] Paquete Edt v2021 / Pronote v2021 build 0.2.10
Publicado: 9 de junio de 2022 - 10:04 a. m.
por Seb Aranel
¿Qué quieres decir con eliminar el binario de la carpeta de desarrollo del paquete?