Paquete Insmonia

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.
Respuesta
jorico
Mensajes: 27
Inscripción: 11 de agosto de 2022 - 16:42
Ubicación: NIORT

27 de septiembre de 2023 - 14:18

Buen día

Intenté crear un paquete para instalar el programa Insomnia (https://insomnia.rest/descargarEsto se puede instalar a través de una aplicación portátil o con una aplicación que se instala en AppData (no pude completar la instalación con este método)

Intenté basar mi trabajo en el paquete tis-bitwarden-portable

A continuación se muestra el archivo setup.py

Código: Seleccionar todo

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

app_bin = "Insomnia.Core-2023.5.8-portable.exe"
app_dir = makepath(programfiles32, "Insomnia")
app_bin_path = makepath(app_dir, app_bin)
processes_to_kill = ["Insomnia"]


def install():
    # Initializing variables
    package_version = control.version.split("-", 1)[0]
    bin_name = bin_name = glob.glob("Insomnia.Core-*.exe")[0]

    # Installing the package
    print("Installing: %s" % bin_name)
    if get_version_from_binary(app_bin_path) != package_version:
        killalltasks(processes_to_kill)
        if isdir(app_dir):
            remove_tree(app_dir)
        mkdirs(app_dir)
        print("Copying %s to %s " % (bin_name, app_bin_path))
        filecopyto(bin_name, app_bin_path)
        # remove_programs_menu_shortcut("Insomnia")

        # Adding this package to the "list-registry"
        register_windows_uninstall(control)  # control is a PackageEntry object corresponding to this package
    else:
        print("%s portable version is already installed in the correct version" % "Insomnia")


def session_setup():
    # Initializing variables
    user_app_dir = makepath(application_data, "Insomnia")
    user_app_bin_path = makepath(user_app_dir, app_bin)

    # Installing the package in user env
    print("Installing: %s in user env" % "Insomnia")
    if get_version_from_binary(user_app_bin_path) != installed_softwares("Insomnia")[0]["version"]:
        killalltasks(processes_to_kill)
        if isdir(user_app_dir):
            remove_tree(user_app_dir)
        mkdirs(user_app_dir)
        print("Copying %s to %s " % (app_bin_path, user_app_bin_path))
        filecopyto(app_bin_path, user_app_bin_path)
        create_user_programs_menu_shortcut("Insomnia", user_app_bin_path)
    else:
        print("%s portable version in user env is already installed in the correct version" % "Insomnia")

def uninstall():
    # Uninstalling the package
    killalltasks(processes_to_kill)
    if isdir(app_dir):
        remove_tree(app_dir)
        unregister_uninstall("Insomnia")
Sin embargo, durante la desinstalación, la aplicación almacenada en AppData no se elimina...
Y tengo la impresión de que la configuración de la sesión no se inicia después de instalar la aplicación; tengo que forzar la configuración de la sesión con `wapt-get session-setup -f ALL`

¿Puedes ayudarme a mejorar mi paquete?

Gracias a todos :D
WAPT Enterprise 2.5.5.15697
Servidor = Debian 11 Bullseye
Consola = Windows Server 2019
--------------------------------------------------------------------------

Johan
Benoit
Mensajes: 43
Inscripción: 26 de junio de 2023 - 11:52
Ubicación: Tarbes

12 de octubre de 2023 - 09:57

Buen día,

A menos que me equivoque, parece que su función "session_setup()" no se está llamando en ningún lugar.
Lo siguiente debe hacerse en la función install() para que se llame al final de la instalación.
Además, la función session_setup() debe ubicarse antes de la función install() para que se lea primero.

Código: Seleccionar todo

def install():
    # Initializing variables
    package_version = control.version.split("-", 1)[0]
    bin_name = bin_name = glob.glob("Insomnia.Core-*.exe")[0]

    # Installing the package
    print("Installing: %s" % bin_name)
    if get_version_from_binary(app_bin_path) != package_version:
        killalltasks(processes_to_kill)
        if isdir(app_dir):
            remove_tree(app_dir)
        mkdirs(app_dir)
        print("Copying %s to %s " % (bin_name, app_bin_path))
        filecopyto(bin_name, app_bin_path)
        # remove_programs_menu_shortcut("Insomnia")

        # Adding this package to the "list-registry"
        register_windows_uninstall(control)  # control is a PackageEntry object corresponding to this package
    else:
        print("%s portable version is already installed in the correct version" % "Insomnia")
    session_setup()
Editar: Acabo de darme cuenta de que mi respuesta era irrelevante. Disculpas.
Saludos,
Última edición realizada por Benoit el 12 de octubre de 2023 a las 16:11, editado 1 vez.
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

12 de octubre de 2023 - 14:11

jorico escribió: 27 de septiembre de 2023 - 14:18 Y tengo la impresión de que la configuración de la sesión no se inicia después de que se instala la aplicación; tengo que forzar la configuración de la sesión con `wapt-get session-setup -f ALL`
En realidad es sutil...

Después de la instalación de un paquete por el servicio wapt, el SERVICIO Wapt iniciará una configuración de sesión en todas las sesiones abiertas.
Sin embargo, si ejecuta wapt-get install tis-insmonia, la línea de comando no inicia la configuración de la sesión.

Entonces, cuando esté en modo DEV, la configuración de la sesión no se ejecutará.

Supongo que esa es tu preocupación

Además, tenga cuidado durante las pruebas; debe incrementar la versión del archivo de control y luego ejecutar una instalación; de lo contrario, la configuración de la sesión no funcionará. Este es un error común en el entrenamiento de WAPT ;)
jorico
Mensajes: 27
Inscripción: 11 de agosto de 2022 - 16:42
Ubicación: NIORT

12 de octubre de 2023 - 14:34

Hola Simón,

Gracias por tu respuesta. De hecho, hay algunas sutilezas. A continuación se muestra el paquete tal como me funciona

Configuración.py

Código: Seleccionar todo

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

app_bin = glob.glob("Insomnia.Core-*.exe")[0]
app_dir = makepath(programfiles32, "Insomnia")
app_bin_path = makepath(app_dir, app_bin)
processes_to_kill = ["Insomnia"]


def session_setup():
    # Initializing variables
    user_app_dir = makepath(application_data, "Insomnia")
    user_app_bin_path = makepath(user_app_dir, app_bin)

    # Installing the package in user env
    print("Installing: %s in user env" % "Insomnia")
    if get_version_from_binary(user_app_bin_path) != installed_softwares("Insomnia")[0]["version"]:
        killalltasks(processes_to_kill)
        if isdir(user_app_dir):
            remove_tree(user_app_dir)
        mkdirs(user_app_dir)
        print("Copying %s to %s " % (app_bin_path, user_app_bin_path))
        filecopyto(app_bin_path, user_app_bin_path)
        create_user_programs_menu_shortcut("Insomnia", user_app_bin_path)
    else:
        print("%s portable version in user env is already installed in the correct version" % "Insomnia")

def install():
    # Initializing variables
    package_version = control.version.split("-", 1)[0]
    bin_name = bin_name = glob.glob("Insomnia.Core-*.exe")[0]

    # Installing the package
    print("Installing: %s" % bin_name)
    if get_version_from_binary(app_bin_path) != package_version:
        killalltasks(processes_to_kill)
        if isdir(app_dir):
            remove_tree(app_dir)
        mkdirs(app_dir)
        print("Copying %s to %s " % (bin_name, app_bin_path))
        filecopyto(bin_name, app_bin_path)
        # remove_programs_menu_shortcut("Insomnia")

        # Adding this package to the "list-registry"
        register_windows_uninstall(control)  # control is a PackageEntry object corresponding to this package
    else:
        print("%s portable version is already installed in the correct version" % "Insomnia")
    session_setup()

def uninstall():
    # Uninstalling the package
    killalltasks(processes_to_kill)
    if isdir(app_dir):
        remove_tree(app_dir)
        unregister_uninstall("Insomnia")
Control

Código: Seleccionar todo

package           : cam-insomnia
version           : 8.2.0-9
architecture      : all
section           : base
priority          : optional
name              : Insomnia
categories        :
maintainer        : Johan RICOLLEAU
description       : Build better APIs faster and collaboratively with a dev-friendly interface, built-in automation, and an extensible plugin ecosystem.
depends           : 
conflicts         : 
maturity          : DEV
locale            : 
target_os         : windows
min_wapt_version  : 
sources           : 
installed_size    :
impacted_process  : 
description_fr    : 
description_pl    : 
description_de    :
description_es    : 
description_pt    : 
description_it    : 
description_nl    :
description_ru    : 
audit_schedule    : 
editor            : Kong
keywords          : 
licence           :
homepage          : 
package_uuid      : 3682ac4f-05de-420d-b1ff-6e6f399c31d3
valid_from        : 
valid_until       :
forced_install_on : 
changelog         :
min_os_version    : 
max_os_version    : 
icon_sha256sum    :
signer            : ca-cert
signer_fingerprint: 42456f1e5e301d26521eeabdeb31734cf4c4c041fc7457e72108eae6a7868ac2
signature         : CXTKrvJIypc3UhJmEmSaMnEjbEe5wGavLw4rlfgK0uyVVvYkeesD7j6anRcdFNnkQCTPSeFoFqcd+6Ed36zsY8nIxcAt+BptModpMkc8NNSnTTPolmVawAO6PN2VeNz6pUs3QKC7h/plMalytb0f7eJMot8QfCzs2bs1AQwme5ColNPne2jMYADXYfbpkhGSTx0dYg7vTXr7rZnWkXU5O7c/DfF4b4/cns9NcH6dyazVTfndl1Oha/VChuJf06fNVaRuIzu7GqRBpj8z3p4ncf3B5AT+RGu4H2ixCAqj399VW12lM4tGB44ZjjUU6gM8kAgkUMbw2cofvIkfPSqEcQ==
signature_date    : 2023-10-12T14:23:08.439762
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
Incluso probé un update_package

Código: Seleccionar todo

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

def update_package():
    # Declaring local variables
    bin_contains = "Insomnia"
    result = False
    proxies = get_proxies()
    bin_search = ".exe"
    bin_name_sub = "Insomnia.Core.%s.exe"
    if not proxies:
        proxies = get_proxies_from_wapt_console()

    app_name = control.name
    git_repo = "Kong/insomnia"
    url_api = "https://api.github.com/repos/%s/releases/latest" % git_repo

    # Getting latest version information from official sources
    print("API used is: %s" % url_api)
    json_load = json.loads(wgets(url_api, proxies=proxies))
    for download in json_load["assets"]:
        if bin_search in download["name"]:
            url_dl = download["browser_download_url"]
            version = json_load["tag_name"].replace("core@", "")
            latest_bin = download["name"]
            break

    print("Latest %s version is: %s" % (app_name, version))
    print("Download URL is: %s" % url_dl)

    # Downloading latest binaries
    if not isfile(latest_bin):
        print("Downloading: %s" % latest_bin)
        wget(url_dl, latest_bin, proxies=proxies)

        # Checking version from file
        version_from_file = get_version_from_binary(latest_bin, "FileVersion")
        if not version_from_file.startswith(version):
            # remove additional .0 at the end of the version from file
            ".".join(get_version_from_binary(latest_bin, "FileVersion").split(".")[:3])
            print("Changing version to the version number of the binary")
            version = version_from_file
            os.rename(latest_bin, bin_name_sub % version)
    # Changing version of the package
    if Version(version) > Version(control.get_software_version()):
        print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
        result = True
    control.version = "%s-%s" % (Version(version), control.version.split("-", 1)[-1])
    # control.set_software_version(Version(version))
    control.save_control_to_wapt()

    # Deleting outdated binaries
    remove_outdated_binaries(version)

    # Validating update-package-sources
    return result

WAPT Enterprise 2.5.5.15697
Servidor = Debian 11 Bullseye
Consola = Windows Server 2019
--------------------------------------------------------------------------

Johan
jorico
Mensajes: 27
Inscripción: 11 de agosto de 2022 - 16:42
Ubicación: NIORT

12 de octubre de 2023 - 14:55

Sin embargo, tengo un error de auditoría; no sé qué es ni cómo solucionarlo
captura.png
captura.png (2,84 KB) Visto 5322 veces
WAPT Enterprise 2.5.5.15697
Servidor = Debian 11 Bullseye
Consola = Windows Server 2019
--------------------------------------------------------------------------

Johan
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

12 de octubre de 2023 - 15:01

Código: Seleccionar todo

app_bin = glob.glob("Insomnia.Core-*.exe")[0]
app_bin debería estar en instalación en el momento de la auditoría y la configuración de la sesión; el archivo ya no existe
lo que explica el error
jorico
Mensajes: 27
Inscripción: 11 de agosto de 2022 - 16:42
Ubicación: NIORT

12 de octubre de 2023 - 16:23

Gracias Simón

Lo corregí así

Código: Seleccionar todo

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

app_bin = "Insomnia.Core.8.2.0.exe"
app_dir = makepath(programfiles32, "Insomnia")
app_bin_path = makepath(app_dir, app_bin)
processes_to_kill = ["Insomnia"]


def session_setup():
    # Initializing variables
    user_app_dir = makepath(application_data, "Insomnia")
    user_app_bin_path = makepath(user_app_dir, app_bin)

    # Installing the package in user env
    print("Installing: %s in user env" % "Insomnia")
    if get_version_from_binary(user_app_bin_path) != installed_softwares("Insomnia")[0]["version"]:
        killalltasks(processes_to_kill)
        if isdir(user_app_dir):
            remove_tree(user_app_dir)
        mkdirs(user_app_dir)
        print("Copying %s to %s " % (app_bin_path, user_app_bin_path))
        filecopyto(app_bin_path, user_app_bin_path)
        create_user_programs_menu_shortcut("Insomnia", user_app_bin_path)
    else:
        print("%s portable version in user env is already installed in the correct version" % "Insomnia")

def install():
    # Initializing variables
    package_version = control.version.split("-", 1)[0]
    bin_name = bin_name = glob.glob("Insomnia.Core-*.exe")[0]

    # Installing the package
    print("Installing: %s" % bin_name)
    if get_version_from_binary(app_bin_path) != package_version:
        killalltasks(processes_to_kill)
        if isdir(app_dir):
            remove_tree(app_dir)
        mkdirs(app_dir)
        print("Copying %s to %s " % (bin_name, app_bin_path))
        filecopyto(bin_name, app_bin_path)
        # remove_programs_menu_shortcut("Insomnia")

        # Adding this package to the "list-registry"
        register_windows_uninstall(control)  # control is a PackageEntry object corresponding to this package
    else:
        print("%s portable version is already installed in the correct version" % "Insomnia")
    session_setup()

def uninstall():
    # Uninstalling the package
    killalltasks(processes_to_kill)
    if isdir(app_dir):
        remove_tree(app_dir)
        unregister_uninstall("Insomnia")
Ya no tengo errores de auditoría, pero me veo obligado a codificar el nombre binario... esto ya no funcionará para la actualización del paquete
Última edición realizada por jorico el 17 de octubre de 2023 a las 10:07, editado 1 vez.
WAPT Enterprise 2.5.5.15697
Servidor = Debian 11 Bullseye
Consola = Windows Server 2019
--------------------------------------------------------------------------

Johan
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 :

12 de octubre de 2023 - 17:46

Hola Johan,

El nombre binario está disponible en el paquete al momento de la instalación y en el directorio c:\Archivos de programa (x86)\Insomnia una vez instalada la aplicación. Puede mover la variable app_bin entre diferentes funciones llamando a

Código: Seleccionar todo

glob.glob('insomnia*.exe')
en el momento de la instalación, y una

Código: Seleccionar todo

glob.glob(makepath(programfiles32,'insomnia','insomnia*.exe'))
en el momento de la configuración y desinstalación de la sesión

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
Respuesta