Seite 1 von 1

PSIM-Testpaket

Veröffentlicht: 21. Juni 2023 - 10:24 Uhr
von den Gälen
Guten Morgen,
Ich versuche, ein Paket für die PSIM 2021B-Demo zu erstellen. Der Deinstallationsschlüssel befindet sich zwar in der Registrierung, aber unter HKEY_CURRENT_USER:

Code: Alle auswählen

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\6305213B-44F4-476B-85A0-EB506EDB8E01_is1
Die Installation funktioniert, indem das Feld „Key“ in install_exe_if_need leer gelassen wird, aber für die Deinstallation kann ich es nicht verwenden uninstall_cmd()Dies deutet darauf hin
"SCHWERWIEGENDER FEHLER: 2: Der Schlüssel Software\Microsoft\Windows\CurrentVersion\Uninstall\['6305213B-44F4-476B-85A0-EB506EDB8E01_is1'] kann nicht geöffnet werden."
Gibt es eine andere Möglichkeit, diesen Schlüssel zur Deinstallation zu verwenden? Oder ist es notwendig, den Befehl `run(r'%s /verysilent' % uninstall_string)` zu verwenden?

Hier ist der Code für meine setup.py-Datei:

Code: Alle auswählen

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

Und zweitens erhalte ich ohne die Funktion "audit()" oder mit einem einfachen return("OK") immer einen Fehler: "Audit aufgrund einer Ausnahme abgebrochen: Listenindex außerhalb des gültigen Bereichs"

Betreff: PSIM-Testpaket

Veröffentlicht: 26. Juni 2023 - 11:20 Uhr
von dcardon
Hallo Gaël,

die Variable `uninstall_key` ermöglicht es dir, den vom Programm bereitgestellten Deinstallationsschlüssel zu überschreiben, schreibt ihn aber nicht in die Registry.

Daher gibt es außer der von dir beschriebenen Vorgehensweise für den Deinstallationsprozess nicht viele andere Möglichkeiten.

Da der Schlüssel nicht an der korrekten Stelle in der Registry registriert ist, wäre es meiner Meinung nach sogar besser, `uninstall_key` gar nicht anzugeben. Andernfalls versucht die Funktion `def audit()`, ihn in der Registry zu suchen (dies ist das Standardverhalten, wenn keine Audit-Funktion im Paket definiert ist). Dies dürfte die Fehlermeldung verursachen, die du erhältst – was nicht schön ist und die wir beheben werden.

Wenn die Software versucht, den Schlüssel in HKCU zu erstellen, liegt das daran, dass sie annimmt, im Benutzerverzeichnis installiert zu werden. Wir sollten prüfen, ob es eine Option gibt, eine systemweite Installation zu erzwingen. Falls nicht, kontaktiere den Entwickler, um zu klären, ob er die Funktionsweise seiner Software korrigieren kann. Andernfalls kannst du diese Software in die Kategorie „Podoware“ einordnen (Software, die mit den Füßen entwickelt wurde :-) ).

Mit freundlichen Grüßen,

Denis

Betreff: PSIM-Testpaket

Veröffentlicht: 26. Juni 2023 – 19:24 Uhr
von den Gälen
Vielen Dank an Jimmy und Morgan, die das Paket heute Nachmittag für mich debuggt haben. Die Podoware lässt sich installieren und gibt keine Fehler mehr in der Konsole aus – das reicht mir ;)

Code: Alle auswählen

setup_binary_name = glob.glob("PSIM*.exe")[0]
wurde ersetzt durch

Code: Alle auswählen

setup_binary_name = 'PSIM_2021b_Demo_64bit_Setup.exe'
Die Version und das Timeout wurden im Befehl install_exe_if_needed geändert:

Code: Alle auswählen

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

Code: Alle auswählen

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

Betreff: PSIM-Testpaket

Veröffentlicht: 26. Juni 2023 – 22:44 Uhr
von vcardon
Mir gefällt Ihre Verwendung des Wortes „Podoware“, wir haben es erfunden :)