Página 1 de 1

[RESUELTO] Paquete simple para duplicar la pantalla

Publicado: 15 de mayo de 2024 - 10:02 a. m.
por gaelds
Buen día,
Para que los usuarios que han olvidado la combinación "Windows + P" puedan restaurar la duplicación de pantalla en el proyector (¡una o dos veces por semana!), creé un paquete muy sencillo basado en la plantilla "Aplicación portátil de Windows". El paquete copia un ejecutable en Archivos de programa y añade un acceso directo al escritorio. Este ejecutable es un archivo por lotes convertido a un ejecutable que ejecuta el comando "C:\Windows\System32\DisplaySwitch.exe /clone".
El paquete se instala correctamente en 80 máquinas, pero 4 de ellas todavía muestran este error:

Código: Seleccionar todo

Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 4096, in install_wapt
    packagetempdir = entry.unzip_package(cabundle=self.cabundle, target_dir = tempfile.mkdtemp(prefix='wapt',dir=self.wapt_temp_dir))
  File "C:\Program Files (x86)\wapt\waptpackage.py", line 2658, in unzip_package
    raise e
  File "C:\Program Files (x86)\wapt\waptpackage.py", line 2650, in unzip_package
    verified_by = self.check_package_signature(cabundle,ignore_missing_files=ignore_missing_files)
  File "C:\Program Files (x86)\wapt\waptpackage.py", line 2601, in check_package_signature
    errors = self.list_corrupted_files(ignore_missing_files=ignore_missing_files)
  File "C:\Program Files (x86)\wapt\waptpackage.py", line 2482, in list_corrupted_files
    elif hexdigest != _hash_file(fullpath, hash_func=hashlib.sha256):
  File "C:\Program Files (x86)\wapt\waptutils.py", line 758, in _hash_file
    buff_open = open(fname, 'rb')
OSError: [Errno 22] Invalid argument: 'C:\\Windows\\TEMP\\waptpkctalnb\\ClonerEcran\\ClonerEcran.exe'

22 : Invalid argument

El código para setup.py:

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
dir_name = 'ClonerEcran'
app_name = 'ClonerEcran'
app_exe = 'ClonerEcran.exe'
app_dir = makepath(programfiles32, dir_name)
app_path = makepath(app_dir, app_exe)
shortcut_name = "Cloner l'écran"

def install():
    # Installing software
    print("Installing: dst-cloner_ecran")
    killalltasks(control.get_impacted_process_list())
    mkdirs(app_dir)
    if isdir(app_dir):
        remove_tree(app_dir)
    mkdirs(app_dir)
    print("Copying directory: %s to: %s" % (dir_name, app_dir))
    copytree2(dir_name, app_dir)

    # Creating shortcuts
    create_desktop_shortcut(shortcut_name, app_path)
    create_programs_menu_shortcut(shortcut_name, app_path)

def uninstall():
    # Uninstalling software
    killalltasks(control.get_impacted_process_list())
    if isdir(app_dir):
        remove_tree(app_dir)

    # Removing shortcuts
    remove_desktop_shortcut(shortcut_name)
    remove_programs_menu_shortcut(shortcut_name)

def audit():
    # Getting installed software version
    if isfile(app_path):
        return "OK"
    else :
        return "ERROR"
He vuelto a cargar el paquete varias veces sin éxito.

PD: En la plantilla del paquete, reemplacé %% con % en las declaraciones de impresión, de lo contrario, se bloqueaba en el tiempo de ejecución.

[Resuelto] Paquete simple para duplicar la pantalla

Publicado: 15 de mayo de 2024 - 10:14
por gaelds
Lo siento, acabo de encontrar la respuesta a mi pregunta ejecutando `wapt-upgrade` en una de las cuatro máquinas. Al parecer, el agente antivirus Apex One ya no funciona correctamente en estas máquinas, y era Windows Defender el que bloqueaba la instalación del paquete...