Paquete de prueba de PSIM

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Bloqueado
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

21 de junio de 2023 - 10:24

Buen día,
Estoy intentando crear un paquete para la demo de PSIM 2021B. La clave de desinstalación está en el registro, pero se encuentra en HKEY_CURRENT_USER:

Código: Seleccionar todo

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\6305213B-44F4-476B-85A0-EB506EDB8E01_is1
La instalación funciona dejando "Clave" en blanco en install_exe_if_needed, pero para la desinstalación no puedo usar desinstalar_cmd()Esto indica
"ERROR FATAL: 2: No se puede abrir la clave Software\Microsoft\Windows\CurrentVersion\Uninstall\['6305213B-44F4-476B-85A0-EB506EDB8E01_is1']"
¿Hay otra forma de usar esta clave para desinstalar? ¿O es necesario usar el comando `run(r'%s /verysilent' % uninstall_string)`?

Aquí está el código para mi setup.py:

Código: Seleccionar todo

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

Y en segundo lugar, sin la función "audit()", o con un simple return("OK"), siempre obtengo un error: "Auditoría cancelada debido a una excepción: índice de lista fuera de rango"
Avatar de usuario
dcardón
Experto en WAPT
Mensajes: 1908
Inscripción: 18 de junio de 2014 - 09:58
Ubicación: Saint Sébastien sur Loire
Contacto :

26 de junio de 2023 - 11:20

Hola Gaël,

la variable `uninstall_key` te permite sobrescribir la clave de desinstalación que proporciona el software, pero no la escribe en el registro.

Así que no hay muchas otras formas de hacerlo aparte de lo que has descrito para el proceso de desinstalación.

Dado que la clave no está registrada en la ubicación correcta en el registro, creo que sería incluso mejor no especificar `uninstall_key` en absoluto. De lo contrario, la función `def audit()` intentará buscarla en el registro (este es el comportamiento predeterminado si no se define ninguna función de auditoría en el paquete). Esto debe estar generando el mensaje de error que estás recibiendo, que no es muy bueno y que vamos a solucionar.

Si el software está intentando crear la clave en HKCU, es porque cree que se está instalando en el entorno del usuario. Deberíamos comprobar si hay una bandera para forzar una instalación en todo el sistema. Y si no, contacta con el desarrollador para ver si puede solucionar el funcionamiento de su software. De lo contrario, puedes poner este software en la categoría de "podoware" (software desarrollado con los pies :-) ).

Atentamente,

Denis
Denis Cardon - Tranquil IT
¡Comparte tus experiencias en WAPT! Envíanos las URL de tus blogs y artículos en la "Tu opinión del foro y los publicaremos en el de WAPT
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

26 de junio de 2023 - 19:24

Gracias a Jimmy y Morgan, quienes depuraron este paquete esta tarde. Este podoware se instala y ya no muestra errores en la consola; eso me basta ;)

Código: Seleccionar todo

setup_binary_name = glob.glob("PSIM*.exe")[0]
ha sido reemplazado por

Código: Seleccionar todo

setup_binary_name = 'PSIM_2021b_Demo_64bit_Setup.exe'
La versión y el tiempo de espera se han modificado en el comando install_exe_if_needed:

Código: Seleccionar todo

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

Código: Seleccionar todo

# -*- 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 usuario
vcardón
Experto en WAPT
Mensajes: 272
Inscripciones: 06 Oct 2017 - 22:55 horas.
Ubicación: Nantes, Francia

26 de junio de 2023 - 22:44

Me gusta tu uso de la palabra "podoware", la inventamos nosotros :)
Vincent CARDON
Tranquilo IT
Bloqueado