Pagina 1 di 1

[Risolto] La dipendenza di OpenBoard si reinstalla ogni volta

Pubblicato: 15 novembre 2019 - 10:15
di Jonattend
Buongiorno,
Utilizzo un pacchetto "master" con, come dipendenze, circa 20 pacchetti, tra cui Openboard.

Se modifico il mio pacchetto master, i computer client lo aggiornano, il che è normale. Ho notato però che il pacchetto openboard viene reinstallato ogni volta, anche se è già presente sui computer (a differenza degli altri).

Ho avuto questo problema anche con il pacchetto Anki, che ho risolto specificando la chiave di disinstallazione (key='Anki') nel pacchetto Anki.

Per quanto riguarda OpenBoard, penso che l'installazione sia difettosa e che ciò causi questo fenomeno.

Se faccio un wapt-get list-registry Su un client, ho questo per OpenBoard:

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

Notiamo che il comando non restituisce alcun numero di versione e che la chiave UninstallKey mi sembra strana.

Tramite il seguente codice:

Codice: Seleziona tutto

# -*- 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 restituisce il seguente errore durante l'installazione su un client:

Codice: Seleziona tutto

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
Cosa posso fare? Credo che il problema sia che OpenBoard non ha un numero di versione...?

Grazie per i tuoi suggerimenti.

Re: La dipendenza di OpenBoard si reinstalla ogni volta

Pubblicato: 15 novembre 2019 - 13:08
di htouvet
Infatti, il programma di installazione non inserisce un numero di versione nel registro.
Pertanto, deve essere recuperato da qualche altra parte... ad esempio nel file eseguibile, da qui la funzione `get_installed_version`
E specificare la versione minima in install_exe_if_needed

Codice: Seleziona tutto

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 dipendenza di OpenBoard si reinstalla ogni volta

Pubblicato: 15 novembre 2019 - 14:38
di Jonattend
Ciao,

grazie per la risposta, funziona!

Per essere sicuro di aver capito bene e di non aver semplicemente copiato e incollato, puoi confermare che la funzione `get_version` recupera la versione del file .exe e restituisce il risultato?

Altrimenti, anche dopo aver modificato il pacchetto, ` wapt-get list-registry` continua a non restituire nulla riguardo al numero di versione. È normale?

Re: La dipendenza di OpenBoard si reinstalla ogni volta

Pubblicato: 15 novembre 2019 - 14:48
di htouvet
Sì, è possibile fornire alla funzione `install_exe_if_needed` un parametro `get_version`. Questo parametro deve puntare a una funzione che accetta un parametro (un dizionario contenente le informazioni attualmente presenti nel registro di sistema) e restituisce la versione.

Per impostazione predefinita, se questo parametro non viene fornito, la funzione utilizza la chiave `version` del registro di sistema.

Nel caso di OpenBoard, questo non funziona perché il programma di installazione non memorizza nulla in questa chiave `version`. Pertanto, forniamo una funzione alternativa e, in questo caso, ho suggerito di recuperare la versione dai metadati dell'eseguibile di OpenBoard.

È normale che `list-registry` non visualizzi nulla di aggiuntivo, perché non abbiamo modificato il registro di sistema.

Re: La dipendenza di OpenBoard si reinstalla ogni volta

Pubblicato: 15 novembre 2019 - 16:14
di Jonattend
Ho capito tutto, è perfetto, ;)

grazie!!