Pagina 1 di 1

[RISOLTO] Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 09:52
di Benoit
Salve,

una
versione Wapt Enterprise di Wapt 2.4.14.143,
server = Debian e
PC per la creazione dei pacchetti = Windows 10.

Vorrei sapere se è possibile rimuovere un pacchetto dalle sue dipendenze tramite uno script Python.

Ad esempio:
A = condizione,
B = nome del pacchetto,
C = hostname.
Se la condizione A è vera, allora
rimuovi B da C.

Ho cercato usando wapt-get, ma non ho trovato nulla.

Grazie in anticipo per l'aiuto.

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 12:41
di sfontenau
Ciao Benoit,

L'approccio migliore in questo tipo di situazione è creare un meta-pacchetto ed evitare dipendenze; ​​in tal caso, sei libero di fare ciò che vuoi

esempio :

Codice: Seleziona tutto

# -*- 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')

Simone

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 13:11
di Benoit
Grazie per la risposta, ma non è questo che sto cercando di fare:

Ecco la configurazione per cui sto posando:

Codice: Seleziona tutto

# -*- 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}")


Vorrei che se "pro" è vero, allora questo pacchetto dovrebbe essere rimosso dalle dipendenze del PC per il quale pro è vero.

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 13:34
di sfontenau
Ciao Benoit,

Impossibile, la dipendenza è a livello di pacchetto, quindi tornerà...

È necessario creare un meta-pacchetto per Adobe Reader:

tis-adboe-reader

e nel pacchetto qualcosa del genere:

Codice: Seleziona tutto

def install():
    if installed_software('adobe reader pro'):
        WAPT.install('tis-adboe-reader-pro')
    else
        WAPT.install('tis-adboe-reader-normal')
Simone

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 14:32
di Benoit
Grazie per la risposta.

Se ho capito bene, è impossibile rimuovere un pacchetto dalle dipendenze di un PC tramite riga di comando?

Cordiali saluti,

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 14:44
di sfontenau
Ciao Benoit,

no, il PC non può modificare i pacchetti (rimuovere una dipendenza) perché non ha la tua chiave privata.

Simon

Re: Rimozione di una dipendenza in Python

Pubblicato: 24 gennaio 2024 - 14:50
di Benoit
Grazie per le vostre risposte