Paquet PSIM Trial

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
gaelds
Messages : 229
Inscription : 22 nov. 2015 - 08:37

21 juin 2023 - 10:24

Bonjour,
J'essaye de créer un paquet pour la démo de PSIM 2021B. La clé dé désinstallation est bien dans le registre mais dans HKEY_CURRENT_USER :

Code : Tout sélectionner

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\6305213B-44F4-476B-85A0-EB506EDB8E01_is1
L'installation fonctionne en laissant vide "Key" dans le install_exe_if_needed, mais pour la désinstallation, je ne peux pas utiliser uninstall_cmd(), cela indique
"FATAL ERROR : 2 : The key Software\Microsoft\Windows\CurrentVersion\Uninstall\['6305213B-44F4-476B-85A0-EB506EDB8E01_is1'] can not be opened"
Est-ce qu'il y a un autre moyen d'utiliser cette clé pour désinstaller ? ou bien il faut forcément utiliser la commande run(r'%s /verysilent' % uninstall_string) ?

Voici le code de mon setup.py:

Code : Tout sélectionner

# -*- 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)
         

Et second souci, sans fonction "audit()", ou avec un simple return("OK"), j'ai toujours une erreur : "Audit aborted due to exception: list index out of range"
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1412
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

26 juin 2023 - 11:20

Bonjour Gaël,

la variable uninstall_key permet d'overrider ce que le logiciel va donner comme clef de désinstallation, mais ne va pas l'écrire dans la base de registre.

Donc il n'y a pas trop de manière de faire autrement que ce que vous indiquez pour la partie désinstallation.

Vu que le clef n'est pas inscrite au bon endroit dans la base de registre, je pense qu'il faudrait même mieux ne pas renseigner uninstall_key, sinon la fonction def audit() va essayer de la chercher dans la base de registre (c'est le fonctionnement par défaut si aucune fonction d'audit est définie dans le paquet. Ca doit générer le message d'erreur que vous avez, qui est pas joli et que l'on va corriger.

Si le logiciel essaye de créer la clef dans HKCU, c'est qu'il pense s'installer en environnement utilisateur. Il faudrait voir si il n'y a pas un flag pour forcer l'install système-wide. Et à défaut voir avec l'éditeur si il ne pourrait pas corriger le fonctionnement de son logiciel. Sinon vous pourrez mettre ce soft dans la catégorie "podoware" (logiciel développé avec les pieds :-) ) .

Cordialement,

Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
gaelds
Messages : 229
Inscription : 22 nov. 2015 - 08:37

26 juin 2023 - 19:24

Merci à Jimmy et Morgan qui m'ont débuggé ce paquet cet après-midi. Ce podoware s'installe et ne renvoie plus d'erreur sur la console, ça me suffit ;)

Code : Tout sélectionner

setup_binary_name = glob.glob("PSIM*.exe")[0]
a été remplacé par

Code : Tout sélectionner

setup_binary_name = 'PSIM_2021b_Demo_64bit_Setup.exe'
La version et le timeout ont été modifiés dans la commande install_exe_if_needed :

Code : Tout sélectionner

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

Code : Tout sélectionner

# -*- 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 de l’utilisateur
vcardon
Expert WAPT
Messages : 249
Inscription : 06 oct. 2017 - 22:55
Localisation : Nantes, FR

26 juin 2023 - 22:44

J'aime votre usage du mot "podoware", on l'a inventé :)
Vincent CARDON
Tranquil IT
Verrouillé