IndexError: índice de tupla fuera de rango en una sola publicación

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
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

2 de julio de 2020 - 10:27

Buen día,


Recibo el error de instalación "IndexError: índice de tupla fuera de rango" en un paquete, pero solo en una máquina. Funciona correctamente en otras máquinas con Windows 10 y Windows 7 (x86 y x64).
En caso de duda, reinstalé el agente después de purgar todo.

Aquí está el script ejecutándose con wapt 1.7.4... tal vez el problema esté relacionado con session_setup():
Por cierto, si quieres agregar opciones para sellos/firmas a tu paquete tis-foxit, lo que agregué funciona bien.

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
import requests
import platform
try:
    import bs4 as BeautifulSoup
except:
    import BeautifulSoup

uninstallkey = []

# Declaring specific app values (TO CHANGE)
bin_name_string = 'FoxitReader_%s_Setup.exe'
silent_args_string = '/ForceInstall /VERYSILENT DESKTOP_SHORTCUT="0" MAKEDEFAULT="1" VIEWINBROWSER="0" LAUNCHCHECKDEFAULT="1" AUTO_UPDATE="0" /passive /norestart /LANG=%s'
app_uninstallkey = 'Foxit Reader_is1'


def install():
    # Specific app values
    package_version = control.version.split('-',1)[0]
    lang = get_language()

    # Installing the package
    install_exe_if_needed(bin_name_string % package_version
        ,silentflags=silent_args_string % lang
        ,key=app_uninstallkey
        ,min_version=package_version)

    registry_setstring(HKEY_LOCAL_MACHINE,r'SOFTWARE\Policies\Explorer\DisallowRun','foxit_updater','FoxitReaderUpdater.exe')

    remove_desktop_shortcut('Foxit Reader')

    # Purge des anciens modèles
    remove_tree(r'c:\ProgramData\Foxit Software\Signature')
    remove_tree(r'c:\ProgramData\Foxit Software\UserStamps')

    # Copie du modèle de signature Domitia
    copytree2('Signature',r'c:\ProgramData\Foxit Software\Signature')
    # Copie du modèle de tampon
    copytree2('UserStamps',r'c:\ProgramData\Foxit Software\UserStamps')


def session_setup():
    print('Disabling auto update check')

    # Specific app values
    package_version = control.version.split('-',1)[0]
    split_package_version = package_version.split('.')
    short_package_version = '%s.%s'% (split_package_version[0],split_package_version[1])

    registry_setstring(HKEY_CURRENT_USER,r'Software\Foxit Software\Foxit Reader %s\plugins\Updater' % short_package_version,'UpdateMode','0')

    updater_path = makepath(user_appdata,'Foxit Software','Addon','Foxit Reader','FoxitReaderUpdater.exe')
    if isfile(updater_path):
        remove_file(updater_path)

    #Ordinateur\HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader 10.0\Preferences\Registration
    #bShowRegisterDlg = 0

    # Désactivation enregistrement à la première utilisation
    registry_setstring(HKEY_CURRENT_USER, r"Software\Foxit Software\Foxit Reader 10.0\Preferences\Registration",'bShowRegisterDlg','0', type=REG_SZ)

    # Intégration de la signature Domitia
    mkdirs(makepath(user_appdata,'Foxit Software','Foxit Reader','Signature'))
    filecopyto(r'c:\ProgramData\Foxit Software\Signature\style.foxitdata',makepath(user_appdata,'Foxit Software','Foxit Reader','Signature'))

    # Intégration du modèle de tampon Domitia
    mkdirs(makepath(user_appdata,'Foxit Software','Foxit Reader','Stamps','UserStamps'))
    filecopyto(r'c:\ProgramData\Foxit Software\UserStamps\FXSvlmkiquvspwvgxy.pdf',makepath(user_appdata,'Foxit Software','Foxit Reader','Stamps','UserStamps'))

    # Suppression d'ancien modèle de tampon
    remove_file(makepath(user_appdata,'Foxit Software','Foxit Reader','Stamps','UserStamps','FXSusgzziovrftavgp.pdf'))


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

    # Getting proxy informations from WAPT settings
    proxy = {}
    if platform.system()=='Windows' and isfile(makepath(user_local_appdata(),'waptconsole','waptconsole.ini')):
        proxywapt = inifile_readstring(makepath(user_local_appdata(),'waptconsole','waptconsole.ini'),'global','http_proxy')
        if proxywapt :
            proxy = {'http':proxywapt,'https':proxywapt}

    # Specific app values
    app_name = control.name
    url = 'https://www.foxitsoftware.com/pdf-reader/version-history.php'

    # Getting latest version from official website
    page = requests.get(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'}).text
    bs = BeautifulSoup.BeautifulSoup(page)
    #bs = BeautifulSoup.BeautifulSoup(page,features="html.parser") # For bs4 only
    bs_raw_string = str(bs.find('h3').text)
    version = bs_raw_string.replace('Version ','')

    url_dl = 'https://www.foxitsoftware.com/downloads/latest.php?product=Foxit-Reader&platform=Windows&package_type=exe&language=French&version=%s' % version
    latest_bin = bin_name_string % version

    print('Latest ' + app_name + ' version is: ' + version)
    print('Download url is: ' + url_dl)

    # Downloading latest binaries
    if not isfile(latest_bin):
        print('Downloading: ' + latest_bin)
        wget(url_dl,latest_bin,proxies=proxy)

        # Get version from file
        version_from_file = get_file_properties(latest_bin)['ProductVersion']
        if version != version_from_file and version_from_file != '':
            version = version_from_file
            old_latest_bin = latest_bin
            latest_bin = bin_name_string % version
            if isfile(latest_bin):
                remove_file(latest_bin)
            os.rename(old_latest_bin,latest_bin)

		# Change version of the package
        pe = PackageEntry().load_control_from_wapt('.')
        pe.version = '%s-%s'%(version,int(pe.version.split('-',1)[1])+1)
        pe.save_control_to_wapt('.')
        print('Changing version to ' + pe.version + ' in WAPT\\control')
        print('Update package done. You can now build-upload your package')
    else:
        print('This package is already up-to-date')

    # Deleting outdated binaries
    for bin_in_dir in glob.glob('*.exe') or glob.glob('*.msi'):
        if bin_in_dir != latest_bin :
            print('Outdated binary: ' + bin_in_dir + ' Deleted')
            remove_file(bin_in_dir)
Además, aquí está el comando de depuración: `wapt-get install ophlm-foxit -ldebug`

2020-07-02 10:17:10,618 DEBUG Codificación predeterminada: ascii
2020-07-02 10:17:10,618 DEBUG Estableciendo la codificación para stdout y stderr a cp850
2020-07-02 10:17:10,624 DEBUG Ruta de Python ['C:\\Program Files (x86)\\wapt', 'C:\\Program Files (x86)\\wapt', 'C:\\Program
Files (x86)\\wapt\\python27.zip', 'C:\\Program Files (x86)\\wapt\\DLLs', 'C:\\Program Files (x86)\\wapt\\lib', 'C:\\Program
Files (x86)\\wapt\\lib\\plat-win', 'C:\\Program Files (x86)\\wapt\\lib\\lib-tk', 'C:\\Program Files (x86)\\wapt',
'C:\\Program Files (x86)\\wapt\\lib\\site-packages', 'C:\\Program Files (x86)\\wapt\\lib\\site-packages\\pywin32-223-py2
.7-win32.egg']
2020-07-02 10:17:10,625 INFO Usando la configuración local de waptservice C:\Program Files (x86)\wapt\wapt-get.ini
2020-07-02 10:17:10,625 DEBUG Archivo de configuración: C:\Program Files (x86)\wapt\wapt-get.ini
Usando el archivo de configuración: C:\Program Files (x86)\wapt\wapt-get.ini
2020-07-02 10:17:10,628 DEBUG El hilo 1480 se está conectando a la base de datos wapt
2020-07-02 10:17:10,694 DEBUG Usando el certificado de host C:\Program Files (x86)\wapt\private\4C4C4544-0048-5010-8039-B5C04F3
33332.pem para la autenticación global del repositorio
2020-07-02 10:17:10,723 DEBUG El hilo 1480 se está conectando a la base de datos wapt
2020-07-02 10:17:10,723 DEBUG Transacción de inicio de la base de datos
2020-07-02 10:17:10,723 DEBUG Confirmación de la base
de datos 2020-07-02 10:17:10,782 DEBUG Usando el certificado de host C:\Program Files (x86)\wapt\private\4C4C4544-0048-5010-8039-B5C04F3
33332.pem para la autenticación del repositorio wapt
2020-07-02 10:17:10,901 DEBUG Usando el certificado de host C:\Program Files (x86)\wapt\private\4C4C4544-0048-5010-8039-B5C04F3
33332.pem para la autenticación del repositorio wapt-host
2020-07-02 10:17:10,930 INFO Grupos de usuarios:[]
2020-07-02 10:17:10,930 DEBUG Directorio base de WAPT: C:\Program Files (x86)\wapt
2020-07-02 10:17:10,930 DEBUG Directorio de caché de paquetes: C:\Program Files (x86)\wapt\cache
2020-07-02 10:17:10,930 DEBUG Versión de la estructura de la base de datos de WAPT: 20190606
2020-07-02 10:17:10,930 DEBUG Comprobando si la instalación antigua está en curso
2020-07-02 10:17:10,940 DEBUG Restablecer el estado de instalación detenido en la base de datos
instalando los paquetes WAPT ophlm-foxit
2020-07-02 10:17:10,974 DEBUG Cargando contexto ssl con certificado C:\Program Files (x86)\wapt\private\4C4C4544-0048-5010-8039-
B5C04F333332.crt y clave C:\Program Files (x86)\wapt\private\4C4C4544-0048-5010-8039-B5C04F333332.pem
2020-07-02 10:17:11,178 INFO Usar archivo de paquete en caché de C:\Program Files (x86)\wapt\cache\ophlm-foxit_10.0.0.35798-1
1_PREPROD.wapt
2020-07-02 10:17:11,384 DEBUG Almacena la comprobación de la cadena de certificados en caché
2020-07-02 10:17:11,385 DEBUG Descargado: {'downloaded': [], 'skipped': [u'C:\\Program Files (x86)\\wapt\\cache\\ophlm-
foxit_10.0.0.35798-11_PREPROD.wapt'], 'errors': [], 'packages': [PackageEntry(u'ophlm-foxit',u'10.0.0.35798-11' mature
=u'PREPROD')]}
Instalando ophlm-foxit(=10.0.0.35798-11)
2020-07-02 10:17:11,387 INFO Registrar el inicio de la instalación C:\Program Files (x86)\wapt\cache\ophlm-foxit_10.0.0.35798-11_PRE
PROD.wapt como usuario latijoel a la base de datos local con parámetros {}
2020-07-02 10:17:11,387 INFO Usuario interactivo: latijoel, grupos de usuarios []
2020-07-02 10:17:11,588 INFO Estado: Instalando el paquete ophlm-foxit versión 10.0.0.35798-11 ...
2020-07-02 10:17:11,588 DEBUG DB Iniciar transacción
2020-07-02 10:17:11,588 DEBUG DB confirmar
2020-07-02 10:17:11,631 DEBUG DB Iniciar transacción
2020-07-02 10:17:11,634 DEBUG Confirmación de la base de datos
2020-07-02 10:17:11,674 INFO Datos de control para el paquete C:\Program Files (x86)\wapt\cache\ophlm-foxit_10.0.0.35798-11_PREP
ROD.wapt verificados por el certificado SSLCertificate cn=domitia
2020-07-02 10:17:11,674 INFO Instalando el paquete C:\Program Files (x86)\wapt\cache\ophlm-foxit_10.0.0.35798-11_PREPROD.wa
pt
2020-07-02 10:17:11,678 INFO Descomprimiendo el paquete C:\Program Files (x86)\wapt\cache\ophlm-foxit_10.0.0.35798-11_PREPROD.wap
t al directorio c:\users\latijoel\appdata\local\temp\waptxdg9ol
2020-07-02 10:17:11,993 INFO El paquete tiene un setup.py, se requiere un certificado de firma de código.
2020-07-02 10:17:11,996 DEBUG El certificado {'countryName': u'FR', 'commonName': u'domitia', 'emailAddress': u'serviceinfo
rmatique@domitia-habitat.fr', 'organizationName': u'Domitia Habitat', 'localityName': u'Narbonne'} es de confianza para la CA raíz
domitia
2020-07-02 10:17:11,997 DEBUG Comprobando la firma con SSLCertificate cn=domitia
2020-07-02 10:17:12,000 DEBUG OK con SSLCertificate cn=domitia
2020-07-02 10:17:12,000 INFO Paquete emitido por {'countryName': u'FR', 'commonName': u'domitia', 'emailAddress': u'servic
einformatique@domitia-habitat.fr', 'organizationName': u'Domitia Habitat', 'localityName': u'Narbonne'}
2020-07-02 10:17:12,325 INFO Archivos descomprimidos verificados por certificado SSLCertificate cn=domitia
2020-07-02 10:17:12,325 DEBUG Eliminando directorio persistente existente C:\Program Files (x86)\wapt\private\persistent\883da6a5-8
ae2-4477-b9e9-bd9b66350454
2020-07-02 10:17:12,328 INFO obteniendo archivo de instalación c:\users\latijoel\appdata\local\temp\waptxdg9ol\setup.py
2020-07-02 10:17:12,328 DEBUG Importar origen c:\users\latijoel\appdata\local\temp\waptxdg9ol\setup.py como __waptsetup_qkz8
8wxt4v__
2020-07-02 10:17:12,338 INFO Instalar parámetros: {}
2020-07-02 10:17:12,339 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,342 DEBUG DB confirmación
2020-07-02 10:17:12,489 INFO ejecutando script de instalación
2020-07-02 10:17:12,503 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,505 DEBUG DB commit
El archivo ejecutable de configuración FoxitReader_10.0.0.35798_Setup.exe ya está instalado. Saltando
2020-07-02 10:17:12,542 INFO El archivo C:\Users\Public\Desktop\Foxit Reader.lnk no existe, por lo que no se elimina
2020-07-02 10:17:12,543 DEBUG Limpiando el directorio temporal del paquete
2020-07-02 10:17:12,559 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,561 DEBUG DB confirmar
2020-07-02 10:17:12,607 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,608 DEBUG DB confirmar
2020-07-02 10:17:12,651 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,653 DEBUG Confirmación de la base de datos
2020-07-02 10:17:12,707 DEBUG Eliminando módulo: __waptsetup_qkz88wxt4v__, refcnt: 4
2020-07-02 10:17:12,776 DEBUG Comprobando la disponibilidad de los paquetes del host "[PackageEntry(u'4C4C4544-0048-5010-8039-B5C04F3333
32',u'4' )]"
2020-07-02 10:17:12,778 DEBUG Comprobando si 4C4C4544-0048-5010-8039-B5C04F333332(=4) está instalado/obsoleto
2020-07-02 10:17:12,836 DEBUG estado de la tienda en la base de datos
2020-07-02 10:17:12,838 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,838 DEBUG DB confirmación
2020-07-02 10:17:12,891 INFO Estado:
2020-07-02 10:17:12,894 DEBUG DB Iniciar transacción
2020-07-02 10:17:12,894 DEBUG DB confirmación
2020-07-02 10:17:12,937 CRITICAL El paquete ophlm-foxit [x64_fr_PROD,PREPROD] no se instaló debido a errores: IndexError: tupla
Índice fuera de rango
ERROR FATAL: IndexError: índice de tupla fuera de rango
Traceback (última llamada):
Archivo "
Archivo "
Archivo "C:\Program Files (x86)\wapt\common.py", línea 4855, en install
force=force
Archivo "C:\Program Files (x86)\wapt\common.py", línea 3934, en install_wapt
raise e
IndexError: índice de tupla fuera de rango
Excepción en 00441CD4: EPyIndexError:
excepciones.IndexError: índice de tupla fuera de tidy.
Administrador de Sistemas y Redes en Domitia Habitat
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

2 de julio de 2020 - 10:29

Esto demuestra que publicar registros y revisar cada paso de un script puede ayudar a encontrar la causa del problema

El problema ocurre con los siguientes comandos si las carpetas no existen

Código: Seleccionar todo

    # Purge des anciens modèles
    remove_tree(r'c:\ProgramData\Foxit Software\Signature')
    remove_tree(r'c:\ProgramData\Foxit Software\UserStamps')
¿Es obligatorio comprobar la existencia de los archivos a eliminar?
Última edición realizada por jlatieule el 2 de julio de 2020 a las 14:21, editado 1 vez.
Administrador de Sistemas y Redes en Domitia Habitat
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

2 de julio de 2020 - 14:21

A menos que ignoremos los errores... Si ese es el caso, un pequeño ejemplo utilizando funciones de uso común sería perfecto

Código: Seleccionar todo

    # Purge des anciens modèles
    remove_tree(r'c:\ProgramData\Foxit Software\Signature', ignore_errors=True)
    remove_tree(r'c:\ProgramData\Foxit Software\UserStamps', ignore_errors=True)
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

2 de julio de 2020 - 17:29

Digamos que `ignore_errors` también detectará un error de eliminación...

Es preferible comprobar la existencia de la carpeta.
jlatieule
Mensajes: 59
Inscripción: 3 de julio de 2019 - 9:18 AM

3 de julio de 2020 - 14:18

Pregunta tonta: ¿por qué no está incluida esta prueba en la función?
Administrador de Sistemas y Redes en Domitia Habitat
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

3 de julio de 2020 - 14:57

De hecho podríamos agregar una opción a la función; no hay ninguna razón particular para no hacerlo
Bloqueado