Pacchetto di prova PSIM

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
Gaeldi
Messaggi: 254
Registrazione: 22 nov 2015 - 08:37

21 giugno 2023 - 10:24

Buongiorno,
Sto cercando di creare un pacchetto per la demo PSIM 2021B. La chiave di disinstallazione è effettivamente nel registro, ma si trova in HKEY_CURRENT_USER:

Codice: Seleziona tutto

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\6305213B-44F4-476B-85A0-EB506EDB8E01_is1
L'installazione funziona lasciando "Chiave" vuota in install_exe_if_needed, ma per la disinstallazione non posso usare disinstalla_cmd()Questo indica
"ERRORE FATALE: 2: Impossibile aprire la chiave Software\Microsoft\Windows\CurrentVersion\Uninstall\['6305213B-44F4-476B-85A0-EB506EDB8E01_is1']"
Esiste un altro modo per usare questa chiave per disinstallare? Oppure è necessario usare il comando `run(r'%s /verysilent' % uninstall_string)`?

Ecco il codice per il mio setup.py:

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *
setup_binary_name = glob.glob("PSIM*.exe")[0]
app_name  = "_".join(setup_binary_name.split("_")[:2])
app_dir = makepath('C:\Powersim')
app_dir_binaries = makepath(app_dir,"_".join(setup_binary_name.split("_")[:3]))
binary_name = "PSIM.exe"
kill_list = [binary_name]
shortcutsdir = makepath(common_desktop(),'Logiciels','Elec - Automatisme')
uninstallkey_psim = ['6305213B-44F4-476B-85A0-EB506EDB8E01_is1']
uninstall_string = r'%s\unins000.exe' %app_dir_binaries

def install():
    print(r'Suppression des anciens PSIM')
    run_notfatal(r'C:\Powersim\PSIM11.1.1_Demo\unins000.exe /verysilent')
    run_notfatal(r'MsiExec.exe /qn /X{D46F2B61-FEE0-46AF-B57F-0EF74F0ECC98}')
    if isfile(makepath(shortcutsdir,'PSIM.lnk')):
        remove_file(makepath(shortcutsdir,'PSIM.lnk'))
        
    print(r'Installation de %s' % app_name)
    killalltasks(kill_list)
    install_exe_if_needed(setup_binary_name,
        silentflags='/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',
        key='',
        min_version='2021b'
    )

    print(r'Création du raccourci %s dans %s' %(app_name,shortcutsdir))
    if not isdir(shortcutsdir):
        mkdirs(shortcutsdir)
    create_shortcut(makepath(shortcutsdir,'%s.lnk' %app_name), target=makepath(app_dir_binaries,binary_name))
    remove_desktop_shortcut('PSIM License Monitor')
    remove_desktop_shortcut(app_name)

def uninstall():
    print(r"Desinstallation de %s" %app_name)
    killalltasks(kill_list)
    ##uninstall_cmd(uninstallkey_psim)
    run_notfatal(r'%s /verysilent' % uninstall_string)
    if  isfile(makepath(shortcutsdir,'%s.lnk' %app_name)):
        remove_file(makepath(shortcutsdir,'%s.lnk' %app_name))
    if isdir(app_dir):
        remove_tree(app_dir)

def audit():
    if isfile(makepath(app_dir_binaries,binary_name)):
        return("OK")
    else:
        return("Erreur : %s est introuvable !" %binary_name)
         

In secondo luogo, senza la funzione "audit()" o con un semplice return("OK"), ottengo sempre un errore: "Audit interrotto a causa di un'eccezione: indice dell'elenco fuori intervallo"
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

26 giugno 2023 - 11:20

Ciao Gaël,

la variabile `uninstall_key` ti permette di sovrascrivere la chiave di disinstallazione fornita dal software, ma non la scrive nel registro di sistema.

Quindi non ci sono molti altri modi per farlo oltre a quello che hai descritto per il processo di disinstallazione.

Dato che la chiave non è registrata nella posizione corretta nel registro di sistema, penso che sarebbe ancora meglio non specificare affatto `uninstall_key`. Altrimenti, la funzione `def audit()` tenterà di cercarla nel registro di sistema (questo è il comportamento predefinito se non è definita alcuna funzione di audit nel pacchetto). Questo deve generare il messaggio di errore che ricevi, che non è molto elegante e che correggeremo.

Se il software sta cercando di creare la chiave in HKCU, è perché pensa di installarsi nell'ambiente utente. Dovremmo verificare se esiste un flag per forzare un'installazione a livello di sistema. In caso contrario, contatta lo sviluppatore per vedere se può correggere il funzionamento del suo software. Altrimenti, puoi mettere questo software nella categoria "podoware" (software sviluppato con i piedi :-) ).

Cordiali saluti,

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Gaeldi
Messaggi: 254
Registrazione: 22 nov 2015 - 08:37

26 giugno 2023 - 19:24

Grazie a Jimmy e Morgan che hanno eseguito il debug di questo pacchetto per me questo pomeriggio. Questo podoware si installa e non restituisce più errori sulla console, per me è sufficiente ;)

Codice: Seleziona tutto

setup_binary_name = glob.glob("PSIM*.exe")[0]
è stato sostituito da

Codice: Seleziona tutto

setup_binary_name = 'PSIM_2021b_Demo_64bit_Setup.exe'
La versione e il timeout sono stati modificati nel comando install_exe_if_needed:

Codice: Seleziona tutto

install_exe_if_needed(setup_binary_name,
        silentflags='/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',
        key='',
        min_version='',
        timeout=900
    )

Codice: Seleziona tutto

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

setup_binary_name = 'PSIM_2021b_Demo_64bit_Setup.exe'
app_name  = "_".join(setup_binary_name.split("_")[:2])
app_dir = makepath('C:\Powersim')
app_dir_binaries = makepath(app_dir,"_".join(setup_binary_name.split("_")[:3]))
binary_name = "PSIM.exe"
kill_list = [binary_name]
uninstallkey_psim = ['F8C0340D-A8CE-4B15-96C0-D3F6A564A9DF_is1']
uninstall_string = r'%s\unins000.exe' %app_dir_binaries

def install():
    if isfile(makepath(shortcutsdir,'PSIM.lnk')):
        remove_file(makepath(shortcutsdir,'PSIM.lnk'))
    print(r'Installation de %s' % app_name)
    killalltasks(kill_list)

    install_exe_if_needed(setup_binary_name,
        silentflags='/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',
        key='',
        min_version='',
        timeout=900
    )

def uninstall():
    print(r"Desinstallation de %s" %app_name)
    killalltasks(kill_list)
    run_notfatal(r'%s /verysilent' % uninstall_string)
    if isdir(app_dir):
        remove_tree(app_dir)
Avatar utente
vcardon
Esperto WAPT
Messaggi: 272
Registrazione: 06/10/2017 - 22:55
Posizione: Nantes, Francia

26 giugno 2023 - 22:44

Mi piace il modo in cui hai usato la parola "podoware", l'abbiamo inventata noi :)
Vincent CARDON
Tranquillo IT
Bloccato