[RISOLTO] Pacchetto WAPT dell-command-update-uwp
Pubblicato: 25 agosto 2023 - 17:09
Buongiorno,
Ho aggiornato questo pacchetto perché è disponibile una nuova versione, è la versione 5.0.0
Ho adattato il codice per tenere conto delle modifiche apportate sul sito web Dell e ho apportato anche alcune modifiche alle altre funzioni (forse non necessarie?)
Ecco il codice del file update_package.py:
Ecco il codice del file setup.py :
(Forse la modifica della funzione disinstallare E revisione contabile non è rilevante)
Flavio.
Informazioni generali:
Server WAPT: Debian 11, versione 2.4.0.14143, Enterprise Edition
Macchina di amministrazione: Windows 11, versione WAPT 2.4.0.14143
Ho aggiornato questo pacchetto perché è disponibile una nuova versione, è la versione 5.0.0
Ho adattato il codice per tenere conto delle modifiche apportate sul sito web Dell e ho apportato anche alcune modifiche alle altre funzioni (forse non necessarie?)
Ecco il codice del file update_package.py:
Codice: Seleziona tutto
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import re
def update_package():
# Declaring local variables
result = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
url = "https://www.dell.com/support/kbdoc/en-us/000177325/dell-command-update"
# Getting latest download link from official sources
print("URL used is: %s" % url)
for bs_search in bs_find_all(url, "a", "target", "_blank", proxies=proxies, timeout=10): # , headers={"Accept-Language": "en,en-US"} not working
url_title = (bs_search.string).replace(u'\xa0', u' ')
if re.search("(?:Windows Universal|Universal Windows) (?:Application|Platform)", url_title):
download_url = bs_search["href"]
break
# Getting latest version from official sources
print("URL used is: %s" % download_url)
for bs_search in bs_find_all(
download_url, "a", "class", "dellmetrics-driverdownloads", proxies=proxies, timeout=10
): # , headers={"Accept-Language": "en,en-US;"} not working
if "Télécharger" in bs_search.string:
version = bs_search["href"].split("_")[-2]
latest_bin = bs_search["href"].split("/")[-1]
download_url = bs_search["href"]
break
print("Latest %s version is: %s" % (app_name, version))
print("Download URL is: %s" % download_url)
# Downloading latest binaries
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
else:
print("Binary is present: %s" % latest_bin)
# Checking version from file
version_from_file = get_version_from_binary(latest_bin)
# if not version_from_file.startswith(version) and version_from_file != '':
if Version(version_from_file) != Version(version) and version_from_file != "":
print("Changing version to the version number of the binary (from: %s to: %s)" % (version, version_from_file))
os.rename(latest_bin, bin_contains + version_from_file + ".EXE")
version = version_from_file
else:
print("Binary file version corresponds to online 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
else:
print("Software version up-to-date (%s)" % Version(version))
control.version = "%s-%s" % (Version(version), control.version.split("-", 1)[-1])
# control.set_software_version(version)
control.save_control_to_wapt()
# Deleting outdated binaries
remove_outdated_binaries(version)
# Validating or not update-package-sources
return result
(Forse la modifica della funzione disinstallare E revisione contabile non è rilevante)
Codice: Seleziona tutto
# -*- coding: utf-8 -*-
from setuphelpers import *
"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()
"""
def install():
# Declaring local variables
bin_name = glob.glob("*Dell-Command-Update-Windows-Universal-Application*.EXE")[0]
# Installing the software
print("Installing: %s" % bin_name)
install_exe_if_needed(
bin_name,
silentflags="/s /factoryinstall",
name="Dell Command | Update for Windows Universal",
min_version=control.get_software_version(),
timeout=900,
)
# Disabling telemetry
registry_set(HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\Settings\General", "UserConsentDefault", 0)
registry_set(HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\CFG", "ShowSetupPopup", 0)
# Download updates (notify when ready)
registry_set(
HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\Settings\Schedule", "AutomationMode", "ScanDownloadNotify"
)
registry_set(
HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\Settings\Schedule", "ScheduleMode",
"Auto"
)
# Manual updates only
# registry_set(
# HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\Settings\Schedule", "ScheduleMode",
# "ManualUpdates"
# )
# Disable notification
# registry_set(
# HKEY_LOCAL_MACHINE, r"SOFTWARE\DELL\UpdateService\Clients\CommandUpdate\Preferences\Settings\Schedule", "DisableNotification", 1
# )
def uninstall():
# Uninstalling the software
print("Uninstalling: %s" % control.package)
softs = installed_softwares('Dell Command | Update')
for soft in softs:
msiexec_command = ' '.join(uninstall_cmd(soft['key']))
break
run(msiexec_command)
remove_appx("DellInc.DellCommandUpdate")
def audit():
service_name = "DellClientManagementService"
service_start_mode = get_service_start_mode(service_name)
service_status = service_is_running(service_name)
if service_start_mode in ["Disabled", "Manual"] and service_status:
print("The Dell service is stopped and prevents the application from working properly.")
return "ERROR"
else:
print("The Dell service is working properly.")
return "OK"
Informazioni generali:
Server WAPT: Debian 11, versione 2.4.0.14143, Enterprise Edition
Macchina di amministrazione: Windows 11, versione WAPT 2.4.0.14143