Intercambio de guiones modular

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Respuesta
Benoit
Mensajes: 43
Inscripción: 26 de junio de 2023 - 11:52
Ubicación: Tarbes

28 de febrero de 2025 - 13:53

versión wapt 2.6.0.16937

Buen día,

Me gustaría compartir el script (para Windows) que uso para implementar software en mi red.

Código: Seleccionar todo

# -*- coding: utf-8 -*-


#---------------------------------------------------------------------
#Ce script sert à déployer des logiciels par l'intermédiaire de wapt.-
#Il prends en charge les applications portables, les exe et les msi.-- 
#Il ne prends en charge dans l'état que les installations standards --
#---------------------------------------------------------------------


'''
Importation des modules"
'''
from setuphelpers import *
import subprocess
import time


'''
Déclarations des variables
'''


#---------------------------------------------------------------
#Variables pour le choix de l'installation portable, exe ou msi-
#---------------------------------------------------------------


'''
En fonction de l'application à installer, il faut mettre "True" à la place de "False". 
exemple : Si je veux installer un exécultable je fait remplir les variables ci-dessous comme suit :
if_app_portable = False
if_app_exe = True
if_app_msi = False
'''
if_app_portable = False 
if_app_exe = False
if_app_msi = False


#------------------------------------
#variables pour toutes les fonctions-
#------------------------------------


name_app ="" #metre le "nom du logiciel" présent dans l'onglet "inventaire logiciel" de la console wapt
target = r"" #Si la création d'un raccourci est nécessaire mettre le chemin complet menant au lenceur en .exe
label = name_app 


#-------------------------------------------------------------------
#Variables pour les fonctions d'installation d'application portable-
#-------------------------------------------------------------------


folder_main_app_portable = "" #Mettre le chemin du dossier où l'application sera copier
folder_install_app_portable = os.path.join(folder_main_app_portable,name_app)
zipfn = "" #Mettre le nom de l'archive


#----------------------------------------------------------
#Variables pour les fonctions d'installation d'éxecutables-
#----------------------------------------------------------

exe = "" #Mettre le nom de l'installateur en .exe
min_version="" #Mettre le nom de la version du logiciel


#---------------------------------------------------
#Variables pour les fonctions d'installation de msi-
#---------------------------------------------------


msi = "" #Mettre le nom de l'installateur msi
cmd_install = f"msiexec /i {msi} /quiet"


'''
Déclarations des fonctions
'''


#------------------------------------------------------------
#Fonctions servant à l'installation d'applications portables-
#------------------------------------------------------------


#fonction servant à créer les dossiers d'installation
def create_folder_app_portable():
    try:
        try:
            if not os.path.exists(folder_main_app_portable):
                os.makedirs(folder_main_app_portable)
                print(f"Le dossier {folder_main_app_portable} a été crée avec succès")
        except Exception as e:
            print(f"L'erreur 1.1 s'est produite : {e}")
        try:
            if not os.path.exists(folder_install_app_portable):
                os.makedirs (folder_install_app_portable)
                print(f"Le dossier {folder_install_app_portable} a été crée avec succès")
        except Exception as e:
            print(f"L'erreur 1.2 s'est produite : {e}")
    except Exception as e:
            print(f"L'erreur 1.3 s'est produite : {e}")    


# fonction servant à installer une application portable
def install_app_portable():
    try:
        try:
            create_folder_app_portable()
        except Exception as e:
            print(f"L'erreur 2.1  s'est produite : {e}")
        try:
            unzip(zipfn,target=folder_install_app_portable)
            print(f"Le dossier {zipfn} a été décompressé avec succès")
        except Exception as e:
            print(f"L'erreur 2.2 s'est produite : {e}")
        try:
            create_desktop_shortcut(label,target)
            print(f"Le raccourci {name_app} a été crée avec succès")
        except Exception as e:
            print(f"L'erreur 2.3 s'est produite : {e}")
        print(f"L'application {name_app} a été installée avec susccès")
    except Exception as e:
            print(f"L'erreur 2.4 s'est produite : {e}")


#Fonction à désinstaller une application portable
def uninstall_app_portable():
    try:
        try:
            if os.path.exists(folder_install_app_portable):
                try:
                    remove_tree(folder_install_app_portable)
                    print(f"Le dossier {folder_install_app_portable} a été supprimé avec succès")
                except Exception as e:
                    print(f"L'erreur 3.1 s'est produite : {e}")
                try:
                    remove_desktop_shortcut(label)
                    print(f"Le raccourci {name_app} a été supprimé avec susccès")
                except Exception as e:
                    print(f"L'erreur 3.2 s'est produite : {e}")
        except Exception as e:
            print(f"L'erreur  s'est produite : {e}")
        print(f"L'application {name_app} a été désinstallée avec succès")
    except Exception as e:
            print(f"L'erreur 3.3 s'est produite : {e}")


#---------------------------------------------------
#Fonctions servant à l'installation d'un éxecutable-
#---------------------------------------------------


# fonction qui permet d'installer un éxecutable
def install_app_exe():
    try :
        print(f"L'installation de {name_app} est en cours ...")
        try:
            install_exe_if_needed(exe,silentflags=getsilentflags(exe),key='',min_version=min_version)
            print(f"L'application {name_app} a été installée avec succès")
        except Exception as e :
            print(f"L'erreur 4.1 s'est produite : {e}")
        try:
            # commenter la ligne 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 4.2 s'est produite : {e}")
    except Exception as e :
        print(f"L'erreur 4.3 s'est produite : {e}")


# fonction qui permet de désinstaller un éxecutable
def uninstall_app_exe():
    try:
        for soft in installed_softwares():
            if name_app in soft['name']:
                try:
                    print(f"L'application {name_app} est déjà installée. Elle va être désinstallée. Merci de patienter ...")
                    subprocess.run(uninstall_cmd(soft['key']))
                except Exception as e :
                    print(f"L'erreur 5.1 s'est produite : {e}")
                try:
                    time.sleep(10) # temps nécessaire pour laisser le temps de la désinstallion complete pour certaines applications
                    print(f"L'application {name_app} a été désinstallée avec succès")
                except Exception as e :
                    print(f"L'erreur 5.2 s'est produite : {e}")
                try:
                    # commenter la ligne 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")
                except Exception as e :
                    print(f"L'erreur 5.3 s'est produite : {e}")
                break
    except Exception as e :
        print(f"L'erreur 5.4 s'est produite : {e}")


#------------------------------------
#Fonction servant à installer un msi-
#------------------------------------


#fonction servant à désinstaller le programme msi
def uninstall_app_msi():
    try:
        for soft in installed_softwares(): # cherche dans l'inventaire logiciel
            if name_app in soft['name']: #compare si le name_app existe dans l'invetaire logiciel
                try:
                    uninstall_key = soft['key'] # récupére la clef de déinstallation
                    cmd_uninstall = f"msiexec /x{uninstall_key} /quiet" # commande de désinstallation (quiet est un argument pour désinstaller silencieusement)
                    print(f"La désinstallation de {name_app} commence...")
                    subprocess.run(cmd_uninstall,shell=True) #désinstaller le programme
                    print(f"L'application {name_app} a été désinstallée avec succès")
                except Exception as e :
                    print(f"L'erreur 6.1 s'est produite : {e}")
                try:
                    #si vous n'avez pas besoin  de supprimer le raccourci, commentez la ligne ci-dessous avec un #
                    remove_desktop_shortcut(label) #supprime le raccourci
                    print(f"Le raccourci {label} a été supprimer avec succès")
                except Exception as e :
                    print(f"L'erreur 6.2 s'est produite : {e}")
                break
    except Exception as e :
        print(f"L'erreur 6.3 s'est produite : {e}")


#fonction servant à installer le programme msi
def install_app_msi():
    try:
        try:
            print(f"L'installation de {name_app} commence ...")
            subprocess.run(cmd_install,shell=True) #installe le programme
            print(f"L'application {name_app} a été installée avec succès")
        except Exception as e :
            print(f"L'erreur 7.1 s'est produite : {e}")
        try:
            #si vous n'avez pas besoin  de créer un raccourci, commentez la ligne ci-dessous avec un #
            create_desktop_shortcut(label,target) # créer un raccourci
            print(f"Le raccourci {label} a été crée avec succès")
        except Exception as e :
            print(f"L'erreur 7.2 s'est produite : {e}")
    except Exception as e :
        print(f"L'erreur 7.3 s'est produite : {e}")


#-------------------------------------------------------
# fonction servant à définir le choix de l'installation-
#-------------------------------------------------------


def choix_installation():
    if if_app_portable :
        uninstall_app_portable()
        install_app_portable()        
    if if_app_exe :
        uninstall_app_exe()
        install_app_exe()
    if if_app_msi :
        uninstall_app_msi()
        install_app_msi()


#-----------------------------------
#Fonction de désinstalation globale-
#-----------------------------------


def uninstall():    
    if if_app_portable:
        uninstall_app_portable()
    if if_app_exe :
        uninstall_app_exe()
    if if_app_msi :
        uninstall_app_msi()


"""
Main code
"""


def install():
    choix_installation()

Respuesta