Seite 1 von 1
[GELÖST] Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 - 09:52 Uhr
von Benoit
Hallo,
Wapt Enterprise (
Version 2.4.14.143) auf
einem Debian-Server und
Windows 10 auf meinem Rechner zur Paketerstellung.
Ich möchte wissen, ob es möglich ist, ein Paket innerhalb eines Python-Skripts aus seinen Abhängigkeiten zu entfernen.
Beispiel:
A = Bedingung,
B = Paketname,
C = Hostname.
Wenn Bedingung A zutrifft, soll
B aus C entfernt werden.
Ich habe bereits mit `wapt-get` gesucht, aber nichts gefunden.
Vielen Dank im Voraus für Ihre Hilfe.
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 - 12:41 Uhr
von Sfonteneau
Hallo Benoit,
Die beste Vorgehensweise in einer solchen Situation ist die Erstellung eines Metapakets, um Abhängigkeiten zu vermeiden. In diesem Fall sind Sie völlig frei und können tun, was Sie wollen
Beispiel :
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
def install():
hostname = get_computername().lower()
# Si les 4 dernier caractères du poste sont "prof" alors j'installe Firefox ESR
if hostname.endswith('prof') :
WAPT.install('tis-firefox-esr')
if 'eleves' in hostname :
if WAPT.is_installed('tis-gestionnote') :
WAPT.remove('tis-gestionnote')
if installed_softwares('Mozilla Firefox') :
WAPT.install('tis-firefox-esr')
# Si la manufacture du poste est 'innotek GmbH', installer le paquet drivers smp-drivers-for-innotek
if wmi_info_basic()["System_Information"]["Manufacturer"] == 'innotek GmbH' :
WAPT.install('tis-drivers-for-innotek')
unitorga = registry_readstring(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine', 'Distinguished-Name')
if 'OU=Ordinateur_compta,OU=Ordinateur_administratif,DC=tranquilit,DC=local' in unitorga :
WAPT.install('tis-libreoffice-stable')
if 'mongroup' in get_computer_groups():
WAPT.install('tis-group')
Simon
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 – 13:11 Uhr
von Benoit
Vielen Dank für Ihre Antwort, aber das ist nicht das, was ich versuche:
Hier ist das Setup, für das ich hier posiere:
Code: Alle auswählen
# -*- coding: utf-8 -*-
"""
Script type pour installation d'un exécutable
"""
"""
import module
"""
from setuphelpers import *
import subprocess
"""
déclarations variables
"""
# Indiquez le nom d'affichage du programme
name_app ="Adobe Acrobat"
# Indiquez le nom de l'executable servant à installer le programme
exe = "AcroRdrDCx642300820470_MUI.exe"
# Indiquez le Version du programme
min_version="2023.008.20470"
#varibles pour la mise en place du raccourci si besoin
label= ""
target = r""
silentflags =f'/sAll /rs /msi EULA_ACCEPT=YES '
#uninstall_cmd ="MsiExec.exe /x {AC76BA86-1033-FF00-7760-BC15014EA700} /quiet"
"""
déclaration fonctions
"""
# fonction qui permet d'installer l'application
def install_app():
try :
print(f"L'installation de {name_app} est en cours ...")
install_exe_if_needed(exe,silentflags=silentflags,key='',min_version=min_version)
print(f"L'application {name_app} a été installée avec succès")
# commenté les deux lignes ci-dessous avec un '#' si vous n'avez pas besoin de créer un raccourci
#create_desktop_shortcut(label,target)
#print(f"Le raccourci {label} a été créer avec succès")
except Exception as e :
print(f"L'erreur 1 suivante s'est produite : {e}")
# fonction qui permet de désinstaller l'application
def uninstall():
try:
for soft in installed_softwares():
if name_app in soft['name']:
if soft['name'] != "Adobe Acrobat 2017" and soft['name'] != "Adobe Acrobat 2020":
key= soft['key']
uninstall_cmd = f"msiexec /x {key} /quiet"
print(f"L'application {name_app} est déjà installée. Elle va être désinstallée.\nMerci de patienter ...")
subprocess.run(uninstall_cmd)
print(f"L'application {name_app} a été désinstallée avec succès")
# commenté les deux lignes ci-dessous avec un '#' si vous n'avez pas besoin de supprimer un raccourci
#remove_desktop_shortcut(label)
#print(f"Le raccourci {label} a été supprimé avec succès")
break
except Exception as e :
print(f"L'erreur 2 suivante s'est produite : {e}")
"""
main code
"""
def install():
try:
pro = False
for soft in installed_softwares():
if soft['name'] == "Adobe Acrobat 2017" or soft['name'] == "Adobe Acrobat 2020" or soft['name'] == "Adobe Creative Cloud":
print(f"Une version pro de l'application {name_app} est déjà installée.\nCette version ne sera donc pas déployé sur ce poste")
pro =True
break
if not pro:
uninstall()
install_app()
except Exception as e :
print(f"L'erreur 3 suivante s'est produite : {e}")
Ich möchte, dass, wenn "pro" wahr ist, dieses Paket aus den Abhängigkeiten des PCs entfernt wird, für den "pro" wahr ist.
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 – 13:34 Uhr
von Sfonteneau
Hallo Benoit,
Unmöglich, die Abhängigkeit liegt auf Paketebene, daher wird sie zurückkommen...
Sie müssen ein Metapaket für Adobe Reader erstellen:
tis-adboe-reader
und im Paket etwa so:
Code: Alle auswählen
def install():
if installed_software('adobe reader pro'):
WAPT.install('tis-adboe-reader-pro')
else
WAPT.install('tis-adboe-reader-normal')
Simon
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 – 14:32 Uhr
von Benoit
Vielen Dank für Ihre Antwort.
Wenn ich es richtig verstehe, ist es also nicht möglich, ein Paket über die Kommandozeile aus den Systemabhängigkeiten eines PCs zu entfernen?
Mit freundlichen Grüßen,
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 – 14:44 Uhr
von Sfonteneau
Hallo Benoit,
nein, der PC kann die Pakete nicht bearbeiten (eine Abhängigkeit nicht entfernen), da er deinen privaten Schlüssel nicht besitzt.
Simon
Betreff: Entfernen einer Abhängigkeit in Python
Veröffentlicht: 24. Januar 2024 – 14:50 Uhr
von Benoit
Vielen Dank für Ihre Antworten