[RESUELTO] Creación de paquetes de software Gesper

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.
Bloqueado
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

25 de agosto de 2017 - 08:45

Buen día,

Estoy creando un nuevo paquete para poder implementar el software Gesper.
La instalación y desinstalación funcionan correctamente en mi paquete, pero me gustaría implementar el archivo de configuración del software en el directorio %appdata% del usuario. Obviamente, estoy teniendo algunas dificultades. Este es mi código:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-gesper')
    install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
    uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
    create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
    import tempfile
    pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
    pathuser = user_appdata()
    data = ur"""[SETUP]
data_server=monserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
    fichier = open(pathparamsfile, "w")
    fichier.write(data)
    fichier.close()
    mkdirs(makepath('%s',Gesper) % pathuser)
    filecopyto('%s/params.ini' % pathparamsfile,'%s/Gesper' % pathuser)
    remove_file(pathparamsfile)

def uninstall():
    print('uninstalling wapt-geper')
    run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
    run('"MsiExec.exe" /I{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
    remove_desktop_shortcut('Gesper.lnk')
Gracias por su ayuda
Última edición realizada por olaplanche el 06 de septiembre de 2017 a las 14:42, editado 1 vez.
- 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 :

25 de agosto de 2017 - 08:49

Hola,

te recomiendo que consultes session_setup:

https://www.wapt.fr/fr/doc/CreationPaqu ... index.html
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

6 de septiembre de 2017 - 8:53 a. m.

Buen día,

Tras modificar mi código de esta manera:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-gesper')
    install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
    uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
    create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')
    
def session_setup():
    import tempfile
    pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
    pathuser = user_appdata()
    data = ur"""[SETUP]
data_server=monserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
    fichier = open(pathparamsfile, "w")
    fichier.write(data)
    fichier.close()
    mkdirs(makepath('%s',Gesper) % pathuser)
    filecopyto('%s/params.ini' % pathparamsfile,'%s/Gesper' % pathuser)
    remove_file(pathparamsfile)

def uninstall():
    print('uninstalling wapt-geper')
    run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
    run('"MsiExec.exe" /I{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
    remove_desktop_shortcut('Gesper.lnk')
Al ejecutar session-setup, recibo el siguiente mensaje de error:

638 CRÍTICO NameError: el nombre global 'Gesper' no está definido

¿Alguna idea?

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 :

6 de septiembre de 2017 - 13:33

Código: Seleccionar todo

mkdirs(makepath('%s',Gesper) % pathuser)
Faltan los ' ' de Gesper
olaplancha
Mensajes: 178
Inscripción: 26 de enero de 2017 - 11:11

6 de septiembre de 2017 - 14:42

Acabo de solucionar mi problema modificando dos líneas de código de la siguiente manera:

Código: Seleccionar todo

    mkdirs('%s\\Gesper' %pathuser)
    filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
¡Mi paquete ya funciona perfectamente!
Gracias por su ayuda
- 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

6 de septiembre de 2017 - 16:01

Había un pequeño error tipográfico en la línea de código para desinstalar SAP Crystal Reports; este es el código final:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    print('installing wapt-gesper')
    install_exe_if_needed("Gesper_Install_7.7.2.exe",'/verysilent /TASKS="MSDENonInstall"',key='{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1',min_version='7.7.0.0',killbefore='gesper.exe')
    uninstallkey.remove('{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1')
    create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')

def session_setup():
    import tempfile
    pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
    pathuser = user_appdata()
    data = ur"""[SETUP]
data_server=dnsdemonserveur
data_access=
archives_path=C:\GESPER_BACKUP
"""
    fichier = open(pathparamsfile, "w")
    fichier.write(data)
    fichier.close()
    mkdirs('%s\\Gesper' %pathuser)
    filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
    remove_file(pathparamsfile)

def uninstall():
    print('uninstalling wapt-geper')
    run('"C:\Program Files (x86)\CAP-RH\Gesper\unins000.exe" /verysilent')
    run('"MsiExec.exe" /X{900D6ADF-DF79-46FB-A58E-E89A73B2A132} /qn')
    remove_desktop_shortcut('Gesper.lnk')
- 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

17 de septiembre de 2021 - 14:28

Buen día,

Versión del código actualizada a partir de septiembre de 2021:

Código: Seleccionar todo

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

uninstallkey = []

# Defining variables
bin_name_string = 'Logiciel Gesper - installation-%s.exe'
bin_temp = 'Logiciel Gesper - installation.exe'
url_dl = 'https://www.aplon.org/Ressources/Documents/T%C3%A9l%C3%A9chargements/Gesper%20(RH)/Logiciel%20Gesper%20-%20installation.exe'
app_uninstallkey = '{A2A6875A-1AAA-467F-948F-76851D7013AA}_is1'
SERVERNAME = 'MONSERVERGESPER' # Le nom NETBIOS du serveur gesper

def install():
    # Initializing variables
    package_version = control.version.split('-',1)[0]
    bin_name = bin_name_string % package_version
    session_setup()
    print('Installing: %s' % bin_name)
    try:
        install_exe_if_needed(bin_name,'/verysilent /TASKS="MSDENonInstall"',key=app_uninstallkey,min_version=package_version,killbefore='gesper.exe',timeout=600)
        uninstallkey.remove(app_uninstallkey)
    except TimeoutExpired:
        pass
        killalltasks('AdminConsole.exe')
        create_desktop_shortcut(r'Gesper',target=u'C:\Program Files (x86)\CAP-RH\Gesper\Gesper.exe')

def session_setup():
    import tempfile
    pathparamsfile = makepath(tempfile.gettempdir(),'params.ini')
    pathuser = user_appdata()
    data = r"""[SETUP]
data_server=%s
data_access=
archives_path=C:\GESPER_BACKUP
""" % SERVERNAME
    fichier = open(pathparamsfile, "w")
    fichier.write(data)
    fichier.close()
    mkdirs('%s\\Gesper' % pathuser)
    filecopyto(pathparamsfile,'%s/Gesper' % pathuser)
    remove_file(pathparamsfile)

def update_package():
    print('Download/Update package content from upstream binary sources')

    # Initializing variables
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt()
    latest_bin = bin_temp
    version = '1.0' # Fake version

    print('Download url is: ' + url_dl)

    # Downloading latest binaries
    if isfile(bin_temp):
        remove_file(bin_temp)
    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 % 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)
    # put here what to do to update package content with newer installers.
    # launched with command wapt-get update-package-sources <path-to-wapt-directory>
    # implicit context variables are WAPT, basedir, control, user, params, run
    # if attributes in control are changed, they should be explicitly saved to package file with control.save_control_to_wapt()

def get_proxies():
    import platform
    if platform.python_version_tuple()[0] == '3':
        from urllib.request import getproxies
    else:
        from urllib import getproxies
    return getproxies()


def get_proxies_from_wapt():
    import platform
    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 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_version_from_binary(filename, parameter='ProductVersion'):
    if filename.endswith('.msi'):
        return get_msi_properties(filename)[parameter]
    else:
        return get_file_properties(filename)[parameter]

def uninstall():
    print('Uninstalling: %s' % control.package)
    run(r'"%s\CAP-RH\Gesper\unins000.exe" /verysilent' % programfiles32)
    run(r'"MsiExec.exe" /X{81BDC5D8-E319-435E-91F5-0896E599717A} /qn')
    remove_desktop_shortcut('Gesper.lnk')
- 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
Bloqueado