|
|
|
Accueil > Sites des produits > Simple Comm Question 5 : Comment mettre à jour SimpleComm via Active Directory ?Sujet : Comment mettre à jour SimpleComm via Active Directory ? Explications et solution : Depuis la version 1.4 finale (car les versions précédentes posaient problème pour cette manipulation), il suffit simplement de faire une copie de l'exécutable (ngssc.exe) et du (ou des) fichiers langues utilisés (vous les trouverez dans le répertoire C:\Program Files\SimpleComm\trad\ par défaut). Voici un script d'ouverture de session que vous pouvez utiliser pour faire cette manipulation (enregistrez-le par exemple dans un fichier SC_maj.vbs) : '//Force la déclaration des variables Option Explicit '//Gestion des erreurs On Error Resume Next '//Déclarations des variables Dim strVersionMAJ, strVersionActuelle Dim strSource, strDestination, oFSO '################### CONFIGURATION DU SCRIPT ################### '//Chemin du répertoire UNC source (doit donc être disponible depuis le réseau) strSource = "\\serveur\MAJ\" '//Chemin d'installation de SimpleComm sur les machines à mettre à jour strDestination = "C:\Program Files\SimpleComm\" '############################################################### '//Vérification de la présence d'un \ à la fin des chemins (source & destination) If Right(strSource, 1) <> "\" Then strSource = strSource & "\" If Right(strDestination, 1) <> "\" Then strDestination = strDestination & "\" '//Création d'un objet FSO, ce qui nous permettra un accès au système de fichiers Set oFSO = CreateObject("Scripting.FileSystemObject") '//Récupération du numéro de version de la MAJ et de la version installée strVersionMAJ = oFSO.GetFileVersion(strSource & "ngssc.exe") strVersionActuelle = oFSO.GetFileVersion(strDestination & "ngssc.exe") '//Infos OK ? If strVersionActuelle = "" Then '//Aucune version installée ou impossible de récupèrer les infos '//On affiche alors un message d'erreur MsgBox "Impossible de mettre à jour SimpleComm !" & vbCrLf & _ "Merci d'intaller/réinstaller SimpleComm manuellement", vbCritical + vbSystemModal Else '//La dernière version est-elle installée ? If strVersionActuelle <> strVersionMAJ Then '//Non alors on copie l'exe Call oFSO.CopyFile(strSource & "ngssc.exe", strDestination & "ngssc.exe", True) '//Puis les traductions Call oFSO.CopyFile(strSource & "\trad\*.txt", strDestination & "\trad\", True) End If End If '//On détruit l'objet FSO Set oFSO = NothingVoici un autre script de session qui créé en plus un fichier log vous permettant de savoir qui a installé la mise à jour : Option Explicit On Error Resume Next Dim strVersionMAJ, strVersionActuelle, strFichierLOG Dim strSource, strDestination, oFSO, oNT '################### CONFIGURATION DU SCRIPT ################### '//Chemin du répertoire UNC source (doit donc être disponible depuis le réseau) strSource = "\\serveur\MAJ\" '//Chemin d'installation de SimpleComm sur les machines à mettre à jour strDestination = "C:\Program Files\SimpleComm\" '//Chemin UNC du fichier log (doit donc être disponible depuis le réseau) strFichierLOG = "\\serveur\MAJ\SC_maj_log.txt" '############################################################### '//Création d'un objet Network, qui nous permettra un accès à des fonctions réseaux Set oNT = CreateObject("WScript.Network") '//Création d'un objet FSO, qui nous permettra un accès au système de fichiers Set oFSO = CreateObject("Scripting.FileSystemObject") Call EcritLOG(oFSO, strFichierLOG, "######## Exécution du script sur la machine " & oNT.ComputerName & _ " (utilisateur : " & oNT.UserName & ") ########") If Right(strSource, 1) <> "\" Then strSource = strSource & "\" If Right(strDestination, 1) <> "\" Then strDestination = strDestination & "\" strVersionActuelle = oFSO.GetFileVersion(strDestination & "ngssc.exe") strVersionMAJ = oFSO.GetFileVersion(strSource & "ngssc.exe") If strVersionActuelle = "" Then Call EcritLOG(oFSO, strFichierLOG, "Erreur : Aucune version installée ou impossible de récupèrer les infos !") Else Call EcritLOG(oFSO, strFichierLOG, "Numéros de version récupérés : Actuelle=" & _ strVersionActuelle & ", MAJ=" & strVersionMAJ) If strVersionActuelle <> strVersionMAJ Then Call Err.Clear Call EcritLOG(oFSO, strFichierLOG, "Mise à jour en cours...") Call EcritLOG(oFSO, strFichierLOG, "Copie de l'exécutable...") Call oFSO.CopyFile(strSource & "ngssc.exe", strDestination & "ngssc.exe", True) If Err.Number <> 0 Then Call EcritLOG(oFSO, strFichierLOG, "Erreur n°" & Err.Number & " : " & Err.Description) Call Err.Clear Call EcritLOG(oFSO, strFichierLOG, "Copie des traductions...") Call oFSO.CopyFile(strSource & "\trad\*.txt", strDestination & "\trad\", True) If Err.Number <> 0 Then Call EcritLOG(oFSO, strFichierLOG, "Erreur n°" & Err.Number & " : " & Err.Description) Else Call EcritLOG(oFSO, strFichierLOG, "Aucune mise à jour nécessaire") End If End If Call EcritLOG(oFSO, strFichierLOG, "######## Fin du script sur la machine " & oNT.ComputerName & _ " (utilisateur : " & oNT.UserName & ") ########" & vbCrLf) Set oFSO = Nothing Set oNT = Nothing '//Procédure qui ajoute une ligne au fichier LOG Sub EcritLOG(oFSORef, strChemin, strTxt) Dim oFichier '//Création d'un textstream pour notre fichier Set oFichier = oFSORef.OpenTextFile(strChemin, 8, True) '//On ecrit la ligne à la fin avec la date et l'heure Call oFichier.WriteLine("[" & Now & "] " & strTxt) '//Détruit le textstream Set oFichier = Nothing End Sub << Retour |