[RESUELTO] Paquete Edt v2022 compilación 0.3.0 / Pronote v2022 compilación 0.3.0

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

26 de enero de 2017 - 14:36

Buen día,

:!: Recuerde reemplazar las variables SERVERNAME, SERVERPORT y NOMETAB con sus valores
El nuevo código maneja automáticamente la posible presencia de la versión anterior, así como la función def update_package() para simplificar la actualización.
Usando el mismo código, es posible instalar la última versión junto con la versión anterior sin problemas.
Para desinstalar la versión anterior, deberá utilizar la función de desinstalación del paquete de la versión anterior. :!:

EDT 2022 v0.3.0 x64:

Código: Seleccionar todo

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

uninstallkey = []

# Defining variables
bin_name_string = 'Install_EDTclient_FR_%s.%s_win64.exe'
app_uninstallkey = '{53EC7135-0E8C-419B-A1F3-5FAFB215686C}'
edition = 'v2022.0'
SERVERNAME = 'blabla.index-education.net' # Le nom DNS du serveur pronote
SERVERPORT = '49500' # Le port TCP du serveur pronote
NOMETAB = 'Mon ETAB' # 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)
    edition_old = str(int(edition[1:5]) - 1)

    # Installing the package
    print('Installing: %s' % bin_name)
    import tempfile
    import codecs
    pathinstallfile = makepath(tempfile.gettempdir(),'Setup.iss')
    if installed_softwares ('INDEX EDUCATION - Client EDT %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\EDT %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\EDT %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 EDT.exe')
    uninstallkey.remove(app_uninstallkey)
    # Deleting response file
    remove_file(pathinstallfile)
    # Creating desktop shortcut for all users
    create_desktop_shortcut(r'EDT%s - %s' % (edition[1:5],NOMETAB),target=u'C:\Program Files\Index Education\EDT %s\Réseau\Client\Client EDT.exe' % edition[1:5],arguments=r'-Adresse "%s" -PortTcp "%s"' % (SERVERNAME,SERVERPORT))

def audit():
    if not uninstall_key_exists ('{775E087D-A428-428C-A5FD-000010008000}'):
        print('Module de Mise à jour automatique manquant')
        return "ERROR"
    if not isfile(r'%s\InstallShield Installation Information\{53EC7135-0E8C-419B-A1F3-5FAFB215686C}\setup.exe' % programfiles32):
        print('Binaire de désinstallation manquant')
        return "WARNING"
    else:
        return "OK"

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 EDT %s - 0.' % edition[1:5]) in line :
            version = line.split('-')[+1].replace(" ","")
            break
    latest_bin = bin_name_string % (edition[1:5],version)
    url_dl = 'https://tele7.index-education.com/telechargement/edt/%s/exe/Install_EDTclient_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():
    # Uninstalling the package
    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('EDT%s - %s.lnk' % (edition[1:5],NOMETAB))
    # Uninstalling Auto Update Agent
    if uninstall_key_exists('{775E087D-A428-428C-A5FD-000010008000}'):
        run('"MsiExec.exe" /X{775E087D-A428-428C-A5FD-000010008000} /qn')
:!: Esta información debe ingresarse en el archivo de control EDT: :!:

Código: Seleccionar todo

architecture      : x64
sources           : https://www.index-education.com/fr/telecharger-edt.php
Pronote 2022 v0.3.0 x64:

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 = '{D1124ED8-514E-40BF-9021-D3B3CA941A53}'
edition = 'v2022.0'
SERVERNAME = 'blabla.index-education.net' # Le nom DNS du serveur pronote
SERVERPORT = '49500' # Le port TCP du serveur pronote
NOMETAB = 'Mon ETAB' # 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)
    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=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 audit():
    if not uninstall_key_exists ('{775E087D-A428-428C-A5FD-000010008000}'):
        print('Module de Mise à jour automatique manquant')
        return "ERROR"
    if not isfile(r'%s\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe' % programfiles32):
        print('Binaire de désinstallation manquant')
        return "WARNING"
    else:
        return "OK"

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 EDT %s - 0.' % edition[1:5]) in line :
            version = line.split('-')[+1].replace(" ","")
            break
    latest_bin = bin_name_string % (edition[1:5],version)
    url_dl = 'https://tele7.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
[%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-000010008000}'):
        run('"MsiExec.exe" /X{775E087D-A428-428C-A5FD-000010008000} /qn')
:!: Esta información debe ingresarse en el archivo de control de Pronote: :!:

Código: Seleccionar todo

architecture      : x64
sources           : https://www.index-education.com/fr/telecharger-edt.php
Registro de cambios del 12/05/2022:
- Se agregó una función de Auditoría para edt y pronote para verificar la presencia correcta del módulo de actualización automática y el binario utilizado para la función de desinstalación que tiende a desaparecer.

Registro de cambios del 12/01/2022:
- Se actualizó el enlace de descarga de edt en la función de actualización del paquete.

Registro de cambios del 22/08/2022:
- Corrección en la función update_package de edt.

Registro de cambios del 18/08/2022:
- Actualización de código para Pronote 2022 con una corrección para la actualización automática de los archivos de respuestas. Simplemente actualice las variables `edition` y `app_uninstallkey` para actualizar a la versión 2022 ;)
- Cambia la URL de origen en el archivo de control para que sea la misma que la de edt, ya que la URL de Pronote cambia cada verano entre la versión preliminar y la final, lo que no ocurre con edt. ¡Esto debería eliminar la necesidad de cambiar entre ambas!

Registro de cambios del 21/06/2022:
Código actualizado para la versión 2022 con una corrección para la actualización automática de los archivos de respuestas. Simplemente actualice las variables `edition` y `app_uninstallkey` para cambiar a la versión 2022 ;)

Registro de cambios del 06/09/2022:
- URL de origen actualizada en el archivo de control del paquete pronote.

Registro de cambios del 06/08/2022:
- Corrección de un error tipográfico no bloqueante en el control de versión mínima en la instalación y actualización de la clave de desinstalación del agente de actualización.

Registro de cambios del 06/02/2022:
- Se actualizó la función del paquete de actualización luego del lanzamiento de la versión 0.2.10 (la función ahora soportará correctamente todas las versiones independientemente de la longitud del número de versión)

Registro de cambios del 22/03/2022:
- Actualización de la variable url_dl (tele7 reemplazada por tele3) luego del cambio de URL de descarga.

Registro de cambios del 11/02/2022:
- Modificación de la función def update_package() después de un cambio en el código fuente de la página web.

Registro de cambios del 21/01/2022:
- Compatibilidad con Python 3
Última edición realizada por olaplanche el 5 de diciembre de 2022 a las 14:04, editado 31 veces.
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

26 de enero de 2017 - 15:21

Hola,

la variable basedir permite el uso de la ruta absoluta:

run(r'"toto.exe" %s\setup.iss' % basedir )
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

26 de enero de 2017 - 15:44

¡Muchísimas gracias por la respuesta! Pero, ¿dónde se ubican los archivos durante la instalación del paquete?
Veo que el paquete se copia a la carpeta c:\wapt\cache, pero debe extraerse en algún lugar, ¿verdad? Entonces, ¿cuál es el valor de la variable basedir al momento de la implementación? ¡

Gracias!
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

26 de enero de 2017 - 15:47

El paquete se descomprime en el directorio temporal del sistema.
Para ver el valor...

Código: Seleccionar todo

def install(): 
    print(basedir)
TI tranquila
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

27 de enero de 2017 - 09:36

¡Excelente! Pude completar mi paquete :)

Para su información, el comando exacto para la instalación silenciosa de edt:

Código: Seleccionar todo

run(r'"Install_EDTclient.exe" -s -f1%s\Setup.iss' % basedir)
Gracias
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

27 de enero de 2017 - 14:06

Versión final con creación del acceso directo personalizado para conectarse al servidor:

edición:

Código: Seleccionar todo

def install():
  print"installing EDT2016"
  run(r'"Install_EDTclient.exe" -s -f1%s\Setup.iss' % basedir)
  create_desktop_shortcut(r'EDT - Lycée',target=u'C:\Program Files (x86)\Index Education\EDT 2016\Réseau\Client EDT.exe',arguments=r'-Adresse "dns_du_serveur" -PortTcp "49300"')
pronota:

Código: Seleccionar todo

def install():
  print"installing Pronote2016"
  run(r'"Install_PRNclient.exe" -s -f1%s\Setup.iss' % basedir)
  create_desktop_shortcut(r'PRONOTE - Lycée',target=u'C:\Program Files (x86)\Index Education\Pronote 2016\Réseau\Client PRONOTE.exe',arguments=r'-Adresse "dns_du_serveur" -PortTcp "49300"')
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

9 de agosto de 2017 - 16:03

Buen día,

Me pondré en contacto con ustedes para informarles sobre el desarrollo de los nuevos paquetes (versiones EDT y Pronote 2017). Me gustaría ir más allá de los paquetes anteriores usando la función install_exe_if_needed en lugar de simplemente ejecutar.

La instalación se realiza sin problemas, pero no logro desinstalar los paquetes. Aquí está mi código:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-pronote2017')
    install_exe_if_needed("Install_PRNclient_FR_2017.0.1.2_win64.exe",silentflags='-s -f1%s\Setup.iss' % basedir,key='{82A4C6B8-0E8E-428E-8566-5045C833AA6B}',min_version='0.1.1.0',killbefore='Client PRONOTE.exe')
    uninstallkey.remove('{82A4C6B8-0E8E-428E-8566-5045C833AA6B}')
    filecopyto('Uninstall.iss','C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}')

def uninstall():
    print('uninstalling wapt-pronote2017')
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}\setup.exe" -runfromtemp -l0x040c  -uninst -removeonly -s -f1%s\Uninstall.iss' % basedir)
El comando "filecopyto" no funciona; el archivo "Uninstall.iss" del paquete debe estar accesible durante la desinstalación. Por lo tanto, estaba pensando en copiarlo a la carpeta del instalador para poder usarlo en el comando de desinstalación...

¡El comando de desinstalación ejecutado localmente con una ruta absoluta al archivo Uninstall.iss funciona correctamente!
Deduzco que solo falta colocar correctamente el archivo Uninstall.iss y llamarlo con la sintaxis correcta (tengo una duda sobre el uso de la variable basedir en este caso).

GRACIAS
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

10 de agosto de 2017 - 14:17

¡Atención!

No pasaste la r delante de la cadena

Código: Seleccionar todo

"'C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}"
Entonces Python ve la cadena de esta manera:

Código: Seleccionar todo

"'C:Program Files (x86)InstallShield Installation Information{82A4C6B8-0E8E-428E-8566-5045C833AA6B}"
;)

El mejor enfoque es generar el archivo sobre la marcha en el directorio temporal y también llamar a la variable programfiles

Código: Seleccionar todo

def uninstall():
    import tempfile
    pathuninstallfile = makepath(tempfile.gettempdir(),'Uninstall.iss')
    data = ur"""gretyreyh
yhrthrthrt
h
trhrthrthrt
htrhrthrthrt"""
    fichier = open(pathuninstallfile, "w")
    fichier.write(data)
    fichier.close()
    run(r'"%s\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}\setup.exe" -runfromtemp -l0x040c  -uninst -removeonly -s -f1%s' % (programfiles32,pathuninstallfile))
    remove_file(pathuninstallfile)
    
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

11 de agosto de 2017 - 08:36

¡Gracias!

Acabo de modificar mi paquete y todo parece funcionar correctamente (sin errores), pero el software no se desinstala.
El archivo se crea correctamente en la carpeta temporal del usuario, su contenido es correcto (lo comprobé manualmente) y el comando de desinstalación es correcto (sin problemas con las variables).

Como no recibo ningún mensaje de error, no sé dónde buscar la solución. ¿Alguna idea?
- Versión de WAPT instalada: 2.6.0.16795 Enterprise
- Sistema operativo del servidor: Linux / Debian Bookworm
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

11 de agosto de 2017 - 23:13

¿Cómo lo probaste?

¿Lo probaste ejecutando `uninstall()` en PyScripter?
Bloqueado