Partage de script modulaire

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Répondre
Benoit
Messages : 34
Enregistré le : 26 juin 2023 - 11:52
Localisation : Tarbes

28 févr. 2025 - 13:53

wapt version 2.6.0.16937

Bonjour,

Je me permets de partager le script (pour windows) dont je me sers pour déployer les logiciels sur mon parc.

Code : Tout sélectionner

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

Répondre