Per consentire agli utenti che hanno dimenticato la combinazione "Windows + P" di ripristinare il mirroring dello schermo sul proiettore (1 o 2 ticket a settimana!), ho creato un pacchetto molto semplice basato sul modello "Applicazione Windows portatile". Il pacchetto copia un file eseguibile in Programmi e aggiunge un collegamento sul desktop. Questo file eseguibile è un file batch convertito in un eseguibile che esegue il comando "C:\Windows\System32\DisplaySwitch.exe /clone".
Il pacchetto si installa correttamente su 80 macchine, ma 4 di esse visualizzano ancora questo errore:
Codice: Seleziona tutto
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 argumentIl codice per setup.py:
Codice: Seleziona tutto
# -*- 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"
PS: Nel modello del pacchetto, ho sostituito %% con % nelle istruzioni Print, altrimenti si bloccava in fase di esecuzione.
