[Risolto] La dipendenza di OpenBoard si reinstalla ogni volta

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
Avatar utente
Jonattend
Messaggi: 43
Registrazione: 26 marzo 2018 - 14:45

15 novembre 2019 - 10:15

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.
Ultima modifica di Jonattend il 15 novembre 2019 alle 16:15, modificato 1 volta.
Versione del server WAPT: 1.8.1 su Debian 10
Versione dell'agente WAPT: 1.8.1.6756
Versione di installazione WAPT: 1.8.1.6756 su Windows10 v1909
Versione di distribuzione WAPT: 1.8.1.6756
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

15 novembre 2019 - 13:08

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)
Tranquillo IT
Avatar utente
Jonattend
Messaggi: 43
Registrazione: 26 marzo 2018 - 14:45

15 novembre 2019 - 14:38

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?
Versione del server WAPT: 1.8.1 su Debian 10
Versione dell'agente WAPT: 1.8.1.6756
Versione di installazione WAPT: 1.8.1.6756 su Windows10 v1909
Versione di distribuzione WAPT: 1.8.1.6756
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

15 novembre 2019 - 14:48

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.
Tranquillo IT
Avatar utente
Jonattend
Messaggi: 43
Registrazione: 26 marzo 2018 - 14:45

15 novembre 2019 - 16:14

Ho capito tutto, è perfetto, ;)

grazie!!
Versione del server WAPT: 1.8.1 su Debian 10
Versione dell'agente WAPT: 1.8.1.6756
Versione di installazione WAPT: 1.8.1.6756 su Windows10 v1909
Versione di distribuzione WAPT: 1.8.1.6756
Bloccato