Página 1 de 1

[Resuelto] La dependencia de OpenBoard se reinstala cada vez

Publicado: 15 de noviembre de 2019 - 10:15 a. m.
por Jonattend
Buen día,
Utilizo un paquete "master" con, como dependencias, alrededor de 20 paquetes, incluido openboard.

Si modifico mi paquete maestro, las máquinas cliente lo actualizan, lo cual es normal. Sin embargo, he notado que el paquete Openboard se reinstala cada vez, incluso si ya está presente en las máquinas (a diferencia de los demás).

También tuve este problema con el paquete Anki, que resolví especificando la clave de desinstalación (clave='Anki') en el paquete Anki.

Respecto a OpenBoard, creo que la instalación es defectuosa, lo que provoca este fenómeno.

Si hago una wapt-get lista-registro En un cliente, tengo esto para OpenBoard:

{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1OpenBoard "C:\Archivos de programa (x86)\OpenBoard\unins000.exe"

Observamos que el comando no devuelve ningún número de versión y que la clave UninstallKey me parece extraña.

A través del siguiente código:

Código: Seleccionar todo

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

uninstallkey = ['{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1']

def install():
    print('installing prefix-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1')
WAPT devuelve el siguiente error durante la instalación en un cliente:

Código: Seleccionar todo

EWaptSetupException: Fatal error : OpenBoard_Installer_1.5.3.exe has been executed and UninstallKey {8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1 has been found in the registry, but version in registry does not match requirements of min_version=0.0.0.0
¿Qué puedo hacer? Creo que el problema es que OpenBoard no tiene número de versión..

Gracias por tus sugerencias.

Re: La dependencia de OpenBoard se reinstala cada vez

Publicado: 15 de noviembre de 2019 - 13:08
por htouvet
De hecho, el instalador no pone un número de versión en el registro.
Por lo tanto, es necesario recuperarlo de otro lugar... en el archivo ejecutable, por ejemplo, de ahí la función `get_installed_version`
Y especifique la versión mínima en install_exe_if_needed

Código: Seleccionar todo

def get_installed_version(e):
    ob_path = makepath(programfiles32,'OpenBoard','OpenBoard.exe')
    if isfile(ob_path):
        return get_file_properties(ob_path)['FileVersion']
    else:
        return None

def install():
    print('installing tis-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1',min_version='1.5.3.240',get_version=get_installed_version)

Re: La dependencia de OpenBoard se reinstala cada vez

Publicado: 15 de noviembre de 2019 - 14:38
por Jonattend
Hola,

gracias por la respuesta, ¡funciona!

Para asegurarme de haber entendido bien y no copiar y pegar sin más, ¿podrías confirmar que la función `get_version` recupera la versión del archivo .exe y devuelve el resultado?

De lo contrario, incluso después de modificar el paquete, ` wapt-get list-registry` sigue sin devolver nada sobre el número de versión. ¿Es esto normal?

Re: La dependencia de OpenBoard se reinstala cada vez

Publicado: 15 de noviembre de 2019 - 14:48
por htouvet
Sí, puedes proporcionar a la función `install_exe_if_needed` un parámetro `get_version`. Este parámetro debe apuntar a una función que recibe un parámetro (un diccionario con la información del registro) y devuelve la versión.

Por defecto, si no se proporciona este parámetro, la función utiliza la clave `version` del registro.

En el caso de OpenBoard, esto no funciona porque el instalador no almacena nada en esta clave `version`. Por lo tanto, proporcionamos una función alternativa, y en este caso, sugerí recuperar la versión de los metadatos del ejecutable de OpenBoard.

Es normal que `list-registry` no muestre nada adicional, ya que no hemos modificado el registro.

Re: La dependencia de OpenBoard se reinstala cada vez

Publicado: 15 de noviembre de 2019 - 16:14
por Jonattend
Lo entiendo todo, es perfecto, ;)

¡gracias!