[RESUELTO] Paquete simple para duplicar la pantalla
Publicado: 15 de mayo de 2024 - 10:02 a. m.
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:
El código para setup.py:
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.
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 argumentEl 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"
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.