![]()
|
|
|
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 = Nothing
Voici 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 | ||||||||||||||||||||||||||||||||||||