Les scripts d'ouverture de session

avec Kixtart V3.63

 

Cette page explique comment utiliser Kixtart pour les scripts d'ouverture de session.

 

Pour la version 4.10 de Kixtart, cliquez ici.

 

I) - PRESENTATION

Les scripts d'ouverture de session ont pour but d'exécuter des tâches sur les ordinateurs ouvrant une session sur un domaine. L'intérêt pour l'administrateur est d'automatiser certaines actions, comme par exemple nettoyer le répertoire temporaire des clients Windows 9x, ou encore déployer de manière automatique certaines applications.

 

II) - PRINCIPE

Un script stocké sur les contrôleurs de domaine est exécuté localement sur chaque machine ouvrant une session sur ce domaine.

 

III) - MISE EN OEUVRE

Divers logiciels du marché tels que SMS permettent d'effectuer ce type de tâches, mais ils sont payants et parfois trop chers pour de petites structures.
Un Freeware indiqué par Microsoft est KixTart. Il permet, sous forme d'un langage type BASIC, d'effectuer de nombreuses instructions (boucles, test conditionnels, affichage via fenêtres, lecture/écriture de la base de registre, ...)
J'ai eu l'occasion de mettre en oeuvre ce CareWare (Freeware avec donations à des oeuvre humanitaires) et donc d'écrire un petit bout de script.

 

IV) - IMPERATIFS

Les scripts doivent impérativement être présents dans la ressource NETLOGON de chaque contrôleur de domaine. Ce point est primordial car l'authentification peut être effectuée aléatoirement par n'importe lequel des contrôleurs du domaine.

 

V) - EXEMPLE

Le fichier présenté est enregistré sous le nom de "MainScript.bat".

L'exemple présenté est celui que j'ai utilisé chez ESKER. Il permet :

 

VI) - MISE EN OEUVRE

Dans le cas précis de ma méthode de travail, j'ai créé 2 fichiers strictements identiques. Le premier nommé "MainScript.bat" et le second "MainScriptd.bat" ; celui-ci me servant pour le débuggage.

Concernant le paramètrage pour les utilisateurs, le script exécuté est nommé "LogCOMMON.bat" pointant sur un second, ce qui me permet de définir un groupe d'utilisateurs "test" pour débugger et valider mon code ; ceux-ci ayant alors pour script "LogCOMMONd.bat".

Pour l'architecture "réseau", les applications se trouvent sur un serveur appelé "ntprincipal" dans une ressource "SoftsESKER". Une arborescence appropriée permet d'y classer les applications utilisées.

Noter toutefois, pour les utilisateurs de McAfee, que le dossier contenant le "SuperDatFile" (fichier de type Sdat4103.exe) ne doit contenir qu'un seul et unique "SuperDatFile" à la fois, sinon la détection de la version ne peut s'effectuer et le déploiement de la mise à jour n'a pas lieu.

 

LogCOMMON.bat
LogCOMMONd.bat

@echo off
@rem Par Laurent - IC - le 24 août 2000.
@rem ========================
@rem
@rem
@rem Lancement de KixTart et du Log ESKER
@%0\..\Kix32 MainScript.bat

@echo off
@rem Par Laurent - IC - le 24 août 2000.
@rem ========================
@rem
@rem
@rem Lancement de KixTart et du Log ESKER
@%0\..\Kix32 MainScriptd.bat /d

 

La différence réside dans la ligne de commande où le scripts de débuggage invoque le second script de débuggage avec le paramètre "/d", permettant de faire fonctionner en mode "pas-à-pas".

 

Exemple de contenu de la ressource NETLOGON (ne sont pas présents les fichiers nécessaires de KixTart) :

LOGCOM~1 BAT        666      25/08/00 15:51   LogCOMMON.bat
LOGCOM~2 BAT        667      23/10/00 13:17   LogCOMMONd.bat
MAINSC~1 BAT     28 383      10/11/00 14:16   MainScript.bat
DUPONT BAT          112      01/09/00 20:05   Dupont.bat
DURANT BAT          112      01/09/00 20:05   Durant.bat
MAINSC~2 BAT     28 383      10/11/00 14:15   MainScriptd.bat

 

;
; ===================================
; Script d'ouverture de session : fichier MainScript.bat
; ===================================
;
; Version du 7/11/2000 - 11h15
;
;
; ntprincipal est le CPD du domaine

; Pour autoriser ou interdire le passage dans une section, il faut avant tout créer des groupes globaux au niveau
; du domaine. Il suffit alors de mettre les utilisateurs qui ne seront pas concernés par une section dans le groupe
; correspondant.
; Les groupes d'installation sont :Kxt_NoWALL, Kxt_NoWinZIP, Kxt_NoMcAfee,Kxt_NoACRO

;Les services de la société sont associés à des groupes d'utilisateurs :
; - Kxt_ADV
; - Kxt_COMPTA
; - Kxt_DOC
; - Kxt_IC
; - Kxt_ITS
; - Kxt_MKTG
; - Kxt_PACK
; - Kxt_PROD
; - Kxt_QUALITE
; - Kxt_RH
; - Kxt_SALES
; - Kxt_SUPPORT

;Ici se trouvent ttes les commandes communes à toutes les machines de la société.

$Taille_Max = 100 ; Taille max (en KO) du fichier de Log

$ICPhone = " Pour toute question ou aide, appeler IC au 150 ou 163."
$LogPath = "\\ntprincipal\log\"
$regPath="HKEY_LOCAL_MACHINE\SOFTWARE\"
$ICRep="$IC$"

;On cache la fenêtre "Command" lors du script
$RC=SetConsole("HIDE")

; On crée un repertoire ds chaque PC qui se connecte. On pourra y placer des données
If exist("@LANROOT\$ICRep\*.*")
   GOTO "REP_OK"
else
   MD "@LANROOT\$ICRep"
EndIf
:REP_OK

;
;DEFINIR UN SERVEUR NT COMME SERVEUR DE TEMPS
;-------------------------------------------------------------------
;Dans la base de registre, localiser la clef suivante :
;
; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters
;
;Depuis le menu Edition, sélectionner "Ajouter une valeur."
;
; Nom de la valeur : TimeSource
; Type de donnée : REG_DWORD
; Chaîne : 1
;
;Sélectionner OK et quitter l'éditeur du registre.
;
;Redémarrer Windows NT.
;
; ==================================================================
; Traitement du fichier de log général
; ==================================================================
;
;
; Fichier qui peut être importé dans EXCEL avec séparateurs à "|" et texte en mode "Windows ANSI"
; La date est au format "JJ/MM/AAAA"
; ATTENTION : on consultera toujours la copie de ce fichier qui est PublicLog.txt

; Si par hasard, le fichier (.txt) n'existe plus, on le recrée
if exist ($LogPath + "Log.txt")
   goto Exist_txt
else
   if OPEN (1, "$LogPath + Log.txt", 2) = 0
      close (1)
   Endif
   if RedirectOutput($LogPath + "Log.txt") = 0
      ? "Date|Heure|Utilisateur|Machine|Type machine|OS|SP Version|Langue|Adr.IP|Adr.MAC|Serveur d'authentification|Accès modem"
      RedirectOutput("")
   Endif
Endif

:Exist_txt

;Detection d'une connexion modem ou réseau
$DIALUPREG=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess", "REMOTE CONNECTION")
If $DIALUPREG = 01000000
   $DIALUP = "Oui"
else
   $DIALUP = "Non"
EndIf


$i=0
:WaitLog
; Si le fichier n'est pas accessible, on attend 3 boucles de 2 secondes
; Passé ce délai, on ne gère pas le fichier de log.
if RedirectOutput($LogPath + "Log.txt", 0) <> 0
   $i=$i+1
   if $i > 3
      Goto PasDeLog
   else
      Sleep 2
      goto WaitLog
   EndIf
else
   ; Détection du type d'OS
   $Svcpack="-"
   Select
      Case @inwin=1
               $kernel="WinNT"
               $Svcpack=ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion","CSDVersion")
               $prodkey="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions"
               $type=ReadValue("$prodkey","ProductType")
               $Suite=ReadValue("$prodkey","ProductSuite")
               IF LEN($Suite)>0
                   $Suite=SUBSTR($Suite,1,INSTR($Suite,"|")-1)
               Else
                   $Suite=""
               EndIf

               Select
                  Case @dos=5.0
                           $system="Win2k"
                  Case @dos=4.0
                           $system="WinNT"
               EndSelect

               Select
                  Case $type="LANMANNT"
                           $DCRole=ReadValue("HKEY_LOCAL_MACHINE\Security\Policy\PolSrvRo","(No Name)")
                           $flavor="$DCRole "+"$Suite "+" Domain Controller"
                  Case $type="ServerNT"
                           $flavor="$Suite "+" Member Server"
                  Case $type="WinNT"
                           $flavor=" Workstation"
               EndSelect
               ; Check du type de PC
               $TypePC="-"
               If 0=ExistKey("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pcmcia")
                  $TypePCReg=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Pcmcia", "Start")
                  If $TypePCReg="4"
                     $TypePC="PC de bureau"
                  EndIf
                  If $TypePCReg="0"
                     $TypePC="Portable"
                  EndIf
               EndIf
      Case @inwin=2
               $TypePC="-"
               $kernel="Win9x"
               $SPVER = "-"
               $SubVer=ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","SubVersionNumber")
               Select
                  Case @dos="4.90"
                           $system="WinME"
                           $flavor="A"
                  Case @dos="4.10"
                           $system="Win98"
                           Select
                              Case $subver=" SE "
                                       $flavor="SE"
                              Case $subver=" A "
                                       $flavor="A"
                           EndSelect
                  Case @dos="4.0"
                           $system="Win95"
                           Select
                              Case $subver=" C"
                                       $flavor="OSR2.5"
                              Case $subver=" B"
                                       $flavor="OSR2"
                              Case $subver="a"
                                       $flavor="A"
                           EndSelect
               EndSelect
               ; Check du type de PC
               If 0=ExistKey("HKEY_LOCAL_MACHINE\Enum\Pcmcia")
                  $TypePC="Portable"
               else
                  $TypePC="PC de bureau"
               EndIf
   EndSelect
   $Langue = substr(@USERLANG, 5, LEN (@USERLANG))

   ; On écrit tous les détails dans le fichier de log sur lequel on pointe
   ? "@MDAYNO/@MONTHNO/@YEAR|@TIME|@FULLNAME|@WKSTA|$TypePC|$System" + "$flavor|" + "$Svcpack|$Langue|@IPADDRESS0|@ADDRESS|@LSERVER|$DIALUP"
   RedirectOutput("")
Endif

; Copie le fichier de log dans un autre fichier. Seul ce second fichier doit être consulté afin de ne
; pas bloquer le log de machines lors de la consultation.
COPY $LogPath+"Log.txt" $LogPath+"PublicLog.txt"

; Teste la taille du fichier de Log et envoie un message aux personnes concernées (Service IC)
If INGROUP("Kxt_IC")
   $Taille_Log = GetFileSize("$LogPath\Log.txt")
   $Taille_Log = $Taille_Log / 1024
   If $Taille_Log > $Taille_Max
      $return = MESSAGEBOX("La taille actuelle du fichier de Log (" + $Taille_Log + " KO) outrepasse la limite de " + $Taille_Max + " KO imposée.","Information système", 48)
   Endif
Endif

:PasDeLog
; ==================================================================
;            FIN de la gestion du fichier de log
; ==================================================================
;
;
;
; Suppression des fichiers temporaires créés dans le répertoire temp de windows
; uniquement pour les machines 9x. Suppression aussi des .CHK
If @INWIN=2         ;Win9x
   DEL "\Windows\Temp\*.tmp"
   DEL "\Windows\Temp\*.wbk"
   DEL "\Windows\Temp\~*.*"
   DEL "\Windows\Temp\*.htm"
   DEL "\*.chk"
EndIf
;
; ==================================================================
; Mise en place des lecteurs CORPORATE
; ==================================================================
;
; Accès aux softs officiels de la société, ainsi qu'aux patchs et MAJ.
use s: "\\ntprincipal\softsSociete"
$PathAppli= "S:"

;Mise en place du lecteur sur répertoire perso
use p: "\\ntprincipal\" + @USERID + "$"
if @ERROR<>0
   use p: /delete
EndIf
;
; ==================================================================
; Test de la BDR pour virus
; ==================================================================
;
if 0 = ExistKey("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\LINUX32")
   $return = MESSAGEBOX("Il semble rester une trace d'infection par un virus." + $ICPhone,"Info système",64)
else
   if 0 = ExistKey("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\reload")
      $return = MESSAGEBOX("Il semble rester une trace d'infection par un virus." + $ICPhone,"Info système",64)
   EndIf
EndIf
;
; ==================================================================
;            GESTION DE MCAFEE
; ==================================================================
;
; Il faut KIXTART VERSION 3.61 ou supérieur.
;
; Test de l'appartenance au groupe pour savoir si on gère McAfee
IF (InGroup ("Kxt_NoMcAfee"))
GOTO "END_MC"
ENDIF

; Exclu tous les NT servers de l'installation et de la mise à jour.
$NTServerPath ="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\"
$NTServerVal = READVALUE($NTServerPath + "ProductOptions","ProductType")

$IS_SERVER = INSTR($NTServerVal, "ServerNT")
$IS_DOMAIN_CONTROLLER = INSTR($NTServerVal, "LanmanNT")

If (($IS_SERVER <> 0) OR ($IS_DOMAIN_CONTROLLER <> 0))
   GOTO "END_MC"
EndIf

; Initialisation de variables...
$appsPath=$PathAppli + "\Applications\McAfee\"
$extraDATDir=($appsPath + "DatFiles\extra.dat")
$sDATpath=$appsPath + "\SuperDatFiles"

; Prend le nom du SuperDAT
$sDATString=DIR ($sDATpath + "\sdat*.exe")

; Recherche du numéro de SuperDAT
$sDATVer=SUBSTR($sDATString,5,4)

; Détermine la version de McAfee installée (si il y en a une...)
$VS403Code=ExistKey($regPath + "Network Associates\McAfee VirusScan")
$NS403aCode=ExistKey($regPath + "Network Associates\NetShield NT")
$VS45Code=ExistKey($regPath + "Network Associates\TVD\VirusScan")


; Redirection sur la bonne version de McAfee
Select
   CASE $VS403Code=0
              GOTO "END_MC"
   CASE $NS403aCode=0
              GOTO "END_MC"
   CASE $VS45Code=0
              GOTO "VS45"
   CASE 1
               ; Dans le cas d'une connexion modem, on n'installe pas McAfee
               If $DIALUP = "Oui"
                  GOTO "END_MC"
               EndIf

               ; On recherche si WIndows est en train de mettre à jour l'Installer...
               ; Dans ce cas, la clef RunOnce n'est pas vide. On n'installe donc pas McAfee
               if 0 = ExistKey("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runonce")
                  $szKeyID = ReadValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runonce", "")
                  if @ERROR = 0
                     if $szKeyID <> ""
                        GOTO "END_MC"
                     Endif
                  Endif
               Endif

               if @inwin=1         ; Kernel NT
                  If $flavor=" Workstation"            ;NT Client
                     GOTO "NetShieldClient"
                  else
                     GOTO "NetShieldServeur"
                  EndIf
              else
                 GOTO "NetShieldClient"
              Endif
EndSelect

:VS45
$VS45DATValue = READVALUE($RegPath + "Network Associates\TVD\Shared Components\VirusScan Engine\4.0.xx","szDatVersion")
$VS45DATNum = SUBSTR($VS45DATValue,5,4)
$installDir=READVALUE($regPath + "Network Associates\TVD\Shared Components\VirusScan Engine\4.0.xx","szInstallDir")

;On n'installe que le SuperDAT !
;-------------------------------
If VAL($sDATVer) > VAL($VS45DATNum)
   If @INWIN=2 ;Win9x
      SLEEP 2
   EndIf
   $return = MESSAGEBOX("Le système va effectuer une mise à jour de votre antivirus. Cliquez sur OK pour commencer." + $ICPhone, "SuperDAT update", 64, 10)
   RUN ($sDATpath + "\" + $sDATString + " /silent /prompt")
   GOTO "END_MC"
Else
   GOTO "END_MC"
EndIf

; Installe McAfee VirusScan 4.5 sur serveur
;-------------------------------------------
:NetShieldServeur
$return = MESSAGEBOX("Il semble que McAfee ne soit pas installé sur cette machine ou que vous ayez une version trop ancienne. Cliquez sur OK pour démarrer l'installation d'une version à jour ou Cancel pour annuler." + $ICPhone,"VirusScan Install",1,5)
if $return = 1
   RUN $appsPath + "WindowsServer\setup.exe"
   GOTO "END_DEPLOY"
Endif
GOTO "END_MC"

; Installe McAfee VirusScan 4.5 sur client
;-----------------------------------------
:NetShieldClient
$return = MESSAGEBOX("Il semble que McAfee ne soit pas installé sur cette machine ou que vous ayez une version trop ancienne. Cliquez sur OK pour démarrer l'installation d'une version à jour ou Cancel pour annuler." + $ICPhone,"VirusScan Install",1,5)
if $return = 1
   RUN $appsPath + "WindowsClient\setup.exe"
   GOTO "END_DEPLOY"
Endif
GOTO "END_DEPLOY"

:END_MC
; ==================================================================
;             FIN de la gestion de McAfee
; ==================================================================
; =
; =
; =
; ==================================================================
;     GESTION DE TUN (Installation de Wall de la société ESKER)
; ==================================================================
;
; Tout le déploiement de WALL est basé sur les .dpl se trouvant dans
; "\TUN\ADeployer", et en particulier dans menu.dpl. Il ne faut donc
; pas oublier de modifier les chemins de ce fichier si le répertoire
; SoftSociete change...
;
; Le principe est d'utiliser le déployeur pour effectuer une MAJ
; automatique du WALL. A chaque démarrage du PC, le déployeur regarde
; quelle est la version en place et met à jour si besoin.
;
; Test de l'appartenance au groupe pour savoir si on gère WALL
If (InGroup ("Kxt_NoWALL"))
   GOTO "END_WALL"
EndIf

; Sont exclus les CPD et CSD
If ($IS_DOMAIN_CONTROLLER <> 0)
   GOTO "END_WALL"
EndIf

; Initialisation de variables...
;$appsPath=("\\ntprincipal\SoftsSociete\Applications\TUN\ADeployer\Client\")

$appSrcPath=($PathAppli + "\Applications\TUN\ADeployer\")
$appsDeplPath=($PathAppli + "\Applications\TUN\Deployer_script\")


; Il faut copier les fichiers du déployeur ds le répertoire du PC
If exist("@LANROOT\$ICRep\DEPLOY32.EXE")
   ; Le principe est de lancer le déployeur puis de laisser faire...
   RUN ("@LANROOT\$ICRep\deploy32.exe file:///$PathAppli/Applications/TUN/ADeployer/menu.dpl")
else
   COPY "s:\Applications\TUN\Deployer_script\*.*" "@LANROOT\$ICRep"
   ; On doit enregistrer l'OCX dans le PC
   RUN ("RegSVR32.EXE /s @LANROOT\$ICRep\DEPLOYER.OCX")
Endif

:END_WALL
; ==================================================================
;                FIN de la gestion de TUN
; ==================================================================
; =
; =
; =
; ==================================================================
;                GESTION DE ACROBAT READER
; ==================================================================

; Test de l'appartenance au groupe pour savoir si on gère ACROBAT
If (InGroup ("Kxt_NoACRO"))
   GOTO "END_ACRO"
EndIf

; Sont exclus les CPD et CSD
If ($IS_DOMAIN_CONTROLLER <> 0)
   GOTO "END_ACRO"
EndIf

; Initialisation de variables...
$appsPath=($PathAppli + "\Applications\AcrobatReader\")
; Sélectionne le fichier d'installation
$Appli=DIR ($appsPath + "\ar*.exe")
$Title="Installation d'Acrobat Reader"
$Nom_Appli="Acrobat Reader"

$szKeyID=""
$szPathApp=""
$pszOpt=0
$pszOption=""
$Appl_Inst=0
$i=0

if 0 = ExistKey("HKEY_CLASSES_ROOT\.pdf")
   $szKeyID = ReadValue("HKEY_CLASSES_ROOT\.pdf", "") ;clef par défaut
   if @ERROR = 0
      $Appl_Inst=1
      $szKeyID = $szKeyID + "\shell\open\command"
      if 0 = ExistKey("HKEY_CLASSES_ROOT\" + $szKeyID)
         $szPathApp = ReadValue("HKEY_CLASSES_ROOT\" + $szKeyID, "")
         if @ERROR = 0
            $Appl_Inst=1
            $index=INSTR($szPathApp,"exe")
            if $index<>0
               $Appl_Inst=2
               $index=$index+2
               if SubStr($szPathApp,1,1)=chr(34)
                  $lpszApp=SubStr($szPathApp,2,$Index-1)
               else
                  $lpszApp=SubStr($szPathApp,1,$Index)
               Endif
            Endif
         EndIf
      EndIf
   EndIf
EndIf


if $Appl_Inst=1
   $return = MESSAGEBOX("Il semble qu'il y ait une mauvaise installation/désinstallation d'" + $Nom_Appli + "." + $ICPhone,$Title,48,10)
   GOTO "END_ACRO"
EndIf

if $Appl_Inst=2
   ; Recherche de la version installée
   $ver=GetFileVersion($lpszApp, "FileVersion")

   ; Recherche le numéro de version
   $sDATVer=SUBSTR($Appli,3,3)

   ; On supprime tout caractère autre que des chiffres
   $i=0
   $LaVersion=""
:Boucle_ACR
   $i=$i+1
   if substr("$ver",$i,1) >= "0" AND substr("$ver",$i,1) <= "9"
      $LaVersion=$LaVersion + substr("$ver",$i,1)
   Endif
   If $i<len($ver)
      GOTO "Boucle_ACR"
   Endif
   $LaVersion=substr("$LaVersion",1,3)
   ; Comparaison de la version installée avec la version à installer
   If VAL($sDATVer) > VAL($LaVersion)
      $return = MESSAGEBOX("Il semble qu'il y ait une version antérieure à V" + $sDATVer + " de " + $Nom_Appli + ". Vous devriez désinstaller cette version ainsi le système pourrait installer une version plus récente." + $ICPhone,$Title,64,10)
   EndIf
   GOTO "END_ACRO"
ELSE
   ; Lancement de l'installation
   $return = MESSAGEBOX("Le système va installer " + $Nom_Appli + " sur votre machine. Cliquez sur OK pour démarrer l'installation ou Cancel pour annuler. " + $ICPhone,$Title,1)
   If $return = 1
      RUN $appsPath + $Appli
      $return = MESSAGEBOX("Il est très fortement conseillé, une fois l'installation terminée, de lancer " + $Nom_Appli + " une première fois afin de valider son installation. " + $ICPhone,$Title,64)
   Endif
      GOTO "END_DEPLOY"
EndIf

:END_ACRO
;
; ==================================================================
;                 FIN de la gestion d'AcrobatReader
; ==================================================================
; =
; =
; =
; ==================================================================
;                     GESTION DE WinZIP
; ==================================================================
;
; Test de l'appartenance au groupe pour savoir si on gère ACROBAT
If (InGroup ("Kxt_NoZIP"))
   GOTO "END_ZIP"
EndIf

; Sont exclus les CPD et CSD
If ($IS_DOMAIN_CONTROLLER <> 0)
   GOTO "END_ZIP"
EndIf

; Initialisation de variables...
$appsPath=($PathAppli + "\Applications\WinZIP\")
; Sélectionne le fichier d'installation
$Appli=DIR ($appsPath + "\se*.exe")
$Appli_ver=DIR ($appsPath + "\se*.txt")
$Title="Installation de WinZIP"
$Nom_Appli="WinZIP"

$szKeyID=""
$szPathApp=""
$pszOpt=0
$pszOption=""
$Appl_Inst=0
$i=0

if 0 = ExistKey("HKEY_CLASSES_ROOT\.zip")
   $szKeyID = ReadValue("HKEY_CLASSES_ROOT\.zip", "") ;clef par défaut
   if @ERROR = 0
      $Appl_Inst=1
      $szKeyID = $szKeyID + "\shell\open\command"
      if 0 = ExistKey("HKEY_CLASSES_ROOT\" + $szKeyID)
         $szPathApp = ReadValue("HKEY_CLASSES_ROOT\" + $szKeyID, "")
         if @ERROR = 0
            $Appl_Inst=1
            $index=INSTR($szPathApp,"exe")
            if $index<>0
               $Appl_Inst=2
               $index=$index+2
               if SubStr($szPathApp,1,1)=chr(34)
                  $lpszApp=SubStr($szPathApp,2,$Index-1)
               else
                  $lpszApp=SubStr($szPathApp,1,$Index)
               Endif
            Endif
         EndIf
      EndIf
   EndIf
EndIf

if $Appl_Inst=1
   $return = MESSAGEBOX("Il semble qu'il y ait une mauvaise installation/désinstallation de " + $Nom_Appli + "." + $ICPhone,$Title,48,10)
   GOTO "END_ZIP"
EndIf

if $Appl_Inst=2
   ; Recherche de la version installée
   $ver=GetFileVersion($lpszApp, "ProductVersion")

   ; Recherche le numéro de version
   $sDATVer=SUBSTR($Appli_ver,3,2)

   ; On supprime tout caractère autre que des chiffres
   $i=0
   $LaVersion=""
:Boucle_ZIP
   $i=$i+1
   if substr("$ver",$i,1) >= "0" AND substr("$ver",$i,1) <= "9"
      $LaVersion=$LaVersion + substr("$ver",$i,1)
   endif
   If $i<len($ver)
      GOTO "Boucle_ZIP"
   Endif
   $LaVersion=substr("$LaVersion",1,3)
   ; Comparaison de la version installée avec la version à installer
   If VAL($sDATVer) > VAL($LaVersion)
      $return = MESSAGEBOX("Il semble qu'il y ait une version antérieure à V" + $sDATVer + " de " + $Nom_Appli + ". Vous devriez désinstaller cette version ainsi le système pourrait installer une version plus récente." + $ICPhone,$Title,64,10)
   EndIf
   GOTO "END_ZIP"
Else
   ; Lancement de l'installation
   $return = MESSAGEBOX("Le système va installer " + $Nom_Appli + " sur votre machine. Cliquez sur OK pour démarrer l'installation ou Cancel pour annuler. " + $ICPhone,$Title,1)
   if $return = 1
      RUN $appsPath + $Appli
      GOTO "END_DEPLOY"
   Endif
   GOTO "END_ZIP"
EndIf

:END_ZIP
;
; ==================================================================
;                  FIN de la gestion de WinZIP
; ==================================================================
; =
; =
; =
; ==================================================================
;
; ==================================================================

:END_DEPLOY
;
;------------
;Groupe "IC"
;------------
If INGROUP("Kxt_IC")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
endif

;-------------
;Groupe "PROD"
;-------------
If INGROUP("Kxt_PROD")
   Gosub NoMaintainServerList9x
   ; Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
endif

;------------
;Groupe "DOC"
;------------
If INGROUP("Kxt_DOC")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use N: "\\ntprincipal\Documentation"
   use V: "\\ntprincipal\vss"
   use W: "\\ntprincipal\Vss2"
endif

; ------------------
; Groupe "PACKAGING"
; ------------------
If INGROUP("Kxt_PACK")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use v: "\\ntprincipal\vss"
   use o: "\\ntprincipal\devl"
endif

; ----------------
; Groupe "SUPPORT"
; ----------------
If INGROUP("Kxt_SUPPORT")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use v: "\\ntprincipal\SupportFr"
   use w: "\\ntprincipal\SalesFr"
endif

; ----------------
; Groupe "QUALITE"
; ----------------
If INGROUP("Kxt_QUALITE")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   use Q: "\\Lotus\testwork"
endif

; ------------
; Groupe "ITS"
; ------------
If INGROUP("Kxt_ITS")
   Gosub NoMaintainServerList9x
   ; Gosub NoMaintainServerListNT
   use v: "\\its-nt\its"
   use w: "\\its-nt\produit"
   use X: "\\ntprincipal\Its"
endif

; ------------
; Groupe "DEV"
; ------------
If INGROUP("Kxt_DEV")
   Gosub NoMaintainServerList9x
   ; Gosub NoMaintainServerListNT
   use o: "\\ntprincipal\devl"
   use v: "\\ntprincipal\vss"
   use w: "\\ntprincipal\Vss2"
endif

; --------------
; Groupe "SALES"
; --------------
If INGROUP("Kxt_SALES")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use w: "\\ntprincipal\SalesFr"
endif

; -----------
; Groupe "RH"
; -----------
If INGROUP("Kxt_RH")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use V: "\\ntprincipal\partage_ADV"
   use w: "\\ntprincipal\partage_compta"
endif

; ------------
; Groupe "ADV"
; ------------
If INGROUP("Kxt_ADV")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use v: "\\ntprincipal\achat"
   use W: "\\ntprincipal\partage_ADV"
endif

; ---------------
; Groupe "COMPTA"
; ---------------
If INGROUP("Kxt_COMPTA")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use V: "\\ntprincipal\partage_ADV"
   use W: "\\ntprincipal\partage_compta"
endif

; -------------
; Groupe "MKTG"
; -------------
If INGROUP("Kxt_MKTG")
   Gosub NoMaintainServerList9x
   Gosub NoMaintainServerListNT
   settime "\\ntprincipal"
   use v: "\\mktg\Incoming"
   use w: "\\mktg\Marketing"
   use X: "\\ntprincipal\MKTG Europe"
endif


; ---------------------------
; Appel du script utilisateur
; ---------------------------
$NomUser=@LDRIVE+"\"+@USERID+".bat"
If EXIST("$NomUser")
   Call "$NomUser"
EndIf

EXIT 1

; ------------------------------------------------------------------------------
; Suppression des machines 9x de la liste des explorateurs potentiels de domaine
; ------------------------------------------------------------------------------
;
; Il faut que la valeur (Défaut) soit à 0.
; La modification ne prendra effet que lors du ReBoot de la machine 9x.
;
:NoMaintainServerList9x
IF @INWIN=2 ;Win9x
   $KeyID="HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP\Ndi\Params\MaintainServerList"
   $szKeyID=""
   If 0 = ExistKey($KeyID)
      $szKeyID = ReadValue($KeyID, "") ;clef par défaut
      if @ERROR = 0 AND $szKeyID <> "0"
         WriteValue($KeyID, "" ,"0" ,"REG_SZ")
      EndIf
   EndIf
EndIf
Return


; ------------------------------------------------------------------------------
; Suppression des machines NT de la liste des explorateurs potentiels de domaine
; ------------------------------------------------------------------------------
;
; Il faut que la valeur MaintainServerList soit à "No".
; La modification ne prendra effet que lors du ReBoot de la machine NT.
;
:NoMaintainServerListNT
If @INWIN<>2 ;WinNT
   ; Sont exclus les CPD et CSD
   If ($IS_DOMAIN_CONTROLLER <> 0)
      Return
   EndIf
   $KeyID="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters
   $szKeyID=""
   If 0 = ExistKey($KeyID)
      $szKeyID = ReadValue($KeyID, "MaintainServerList") ;clef par défaut
      If @ERROR = 0 AND $szKeyID <> "No"
         WriteValue($KeyID, "" ,"No" ,"REG_SZ")
      EndIf
   EndIf
EndIf
Return

;
; Fin du fichier de script
; ----------------------

 

 

Début de page  |  Page d'accueil  |  Me contacter

(C) Laurent - autourdupc.com -

Création le 12 novembre 2000.
Mise à jour le 25 juin 2002.