Page 1 sur 1

Partage de script modulaire

Posté : 28 févr. 2025 - 13:53
par Benoit
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()