Page 1 sur 1
[R] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 10:39
par hunterThompson
Bonjour, je rencontre un souci dans le développement d'un script d'automatisation d'une installation.
Je suis en train de développer un script pour l'installation d'un logiciel de visualisation sur des postes clients.
C'est un viewer dont le dossier d'install est sur un lecteur réseau. Pour monter le lecteur réseau, créer le raccourci, pas de soucis, par contre, je dois le définir comme logiciel par défaut pour 4 types d'extensions: .hpgl, .tif, .tiff, et .gl2
Et là, problème. J'ai essayé de créer des envois de touches pour créer l'extension dans "Options des dossiers", et lui associer mon viewer. Cela fonctionne à peu près, sauf quand l'extension existe déjà...
Existerait-il, par le plus grand des hasards, un script qui permette de tester si une extension existe déjà?
Cela me permettrait de faire un test avant de lancer mes envois de touches, et donc en théorie d'empêcher les erreurs.
J'ai essayé de jongler avec les clefs de registres, mais çà n'a pas été très concluant.
merci d'avance
Re: [..] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 11:00
par hunterThompson
Voilà mon script, pour plus de précision:
► Afficher le texte
Code : Tout sélectionner
;Test d'existence d'un lecteur M:
If $map <> "\\sfptf1nas1\Metaphase" Then
DriveMapAdd("*", $map)
DriveMapDel("M:")
Sleep(1000)
DriveMapAdd("M:", "\\sfptf1nas1\Metaphase")
EndIf
;Création du Raccourci Metaphase
FileCreateShortcut("M:\Metaphase\config\omfprod.bat", @DesktopDir & "\Metaphase", "M:\Metaphase\config", "", "Lancement de Metaphase", "M:\Metaphase\bin\omf.exe")
;Verification existence du Dossier C:\Metaphase
If FileExists("C:\Metaphase") Then
FileCopy("M:\Metaphase\config\omfprod.bat", "C:\Metaphase\", 1)
If @error Then
RunAsWait($logSuser, $dom, $pwddom2, 0, DirCopy("C:\Metaphase", "C:\Metaphase.old")
RunAsWait($logSuser, $dom, $pwddom2, 0, DirRemove("C:\Metaphase")
RunAsWait($adminloc, @ComputerName, $pwdadminloc, 0, DirCreate("C:\Metaphase\"))
FileCopy("C:\Metaphase.old\*", "C:\Metaphase\")
DirRemove("C:\Metaphase.old")
Else
FileDelete("C:\Metaphase\omfprod.bat")
EndIf
Else
RunAsWait($adminloc, @ComputerName, $pwdadminloc, 0, DirCreate("C:\Metaphase\"))
EndIf
;Lancement de Metaphase - Création du File System
Run(@ComSpec & ' /k ' & 'M:\Metaphase\config\omfprod.bat',"M:\Metaphase\config")
WinWaitActive("OMF Login")
Send($logSuser&"{TAB}"&$pwdSuser&"{ENTER}")
WinwaitActive("Home Collection for nbaron")
MouseMove(0,0,1)
Send("!c{UP}{RIGHT}{UP}{UP}{RIGHT}{DOWN}{DOWN}{ENTER}")
sleep(1000)
Send($comp&"{TAB}{TAB}C:\Metaphase{TAB}ntfs{TAB}{TAB}{ENTER}")
sleep(500)
send("{ENTER}")
sleep(1000)
if WinExists("Attention") Then
winclose("Attention")
sleep(500)
winclose("Create File System")
sleep(500)
WinClose("Home Collection for nbaron")
sleep(500)
WinwaitActive("Confirm")
send("{ENTER}")
sleep(500)
winclose("omf.exe")
WinClose("OMF Network")
sleep(500)
Winclose("C:\WINDOWS\system32\cmd.exe - M:\Metaphase\config\omfprod.bat")
sleep(500)
msgbox(0,"File System détecté","Le File System existe déjà")
Else
WinClose("Home Collection for nbaron")
sleep(500)
WinwaitActive("Confirm")
send("{ENTER}")
sleep(500)
Winclose("omf.exe")
WinClose("OMF Network")
sleep(500)
Winclose("C:\WINDOWS\system32\cmd.exe - M:\Metaphase\config\omfprod.bat")
sleep(500)
msgbox(0,"File System absent","Le File System n'existait pas, il a été créé")
EndIf
;Login sur le compte
Run(@ComSpec & ' /k ' & 'M:\Metaphase\config\omfprod.bat',"M:\Metaphase\config")
WinWaitActive("OMF Login")
Send($user&"{TAB}"&$pwd&"{ENTER}")
sleep(500)
if winexists("Attention") Then
msgbox(0,"Problème de login","Le login windows attribué au compte "&$user&" n'est pas le même que celui qui a ouvert la session("&@Username&")")
Else
MouseMove(0,0,1)
WinWaitActive("Home Collection for "&$user)
send("!c{DOWN}{DOWN}{RIGHT}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")
WinWaitActive("Create Work Location")
send("wl_"&$user&"_"&$comp)
send("{TAB}{TAB}{TAB}C:\Metaphase\wl_"&$user&"_"&$comp)
send("{ENTER}")
sleep(1000)
if winexists("Attention") Then
winclose("Attention")
winclose("Create Work Location")
msgbox(0,"Work Location","La Work Location existe déjà")
Else
msgbox(0,"Work Location","La Work Location a été créée.")
EndIf
EndIf
Local $ext
Local $ext2
Func _extension($ext)
Send("{LWINDOWN}")
Send("e")
Send("{LWINUP}")
WinActivate("Poste de travail")
Send("!o{DOWN}{DOWN}{DOWN}{ENTER}")
MsgBox(0, "", "1")
WinActivate("Options des dossiers")
MsgBox(0, "", "2")
Send("+{TAB}")
MsgBox(0, "", "3")
Send("{RIGHT}{RIGHT}")
MsgBox(0, "", "4")
Send("{TAB}")
Sleep(1000)
Send($ext)
MsgBox(0, "", 5)
Send("!n")
WinActivate("Créer une nouvelle extension")
Send($ext & "{ENTER}")
MsgBox(0, "", "8")
Send("!m")
MsgBox(0, "", "9")
Send("!p")
MsgBox(0, "", "10")
Send("M:\Techview\Techview.exe{ENTER}")
MsgBox(0, "", "OK")
WinActivate("Ouvrir avec")
WinClose("Ouvrir avec")
WinActivate("Options des dossiers")
WinClose("Options des dossiers")
WinActivate("Poste de travail")
WinClose("Poste de travail")
EndFunc ;==>_extension
;_extension("hpgl")
;_extension("gl2")
Func _extension2($ext2)
MouseMove(0, 0, 1)
Send("{LWINDOWN}")
Send("e")
Send("{LWINUP}")
WinActivate("Poste de travail")
Send("!o{DOWN}{DOWN}{DOWN}{ENTER}")
WinActivate("Options des dossiers")
Send("+{TAB}")
Send("{RIGHT}{RIGHT}")
Send("{TAB}")
Sleep(1000)
Send($ext2)
Send("!m")
WinActivate("Ouvrir avec")
Send("!p")
Send("M:\Techview\Techview.exe{ENTER}")
Send("{ENTER}")
Sleep(500)
WinClose("Ouvrir avec")
Sleep(500)
WinActivate("Options des dossiers")
WinClose("Options des dossiers")
Sleep(500)
WinActivate("Poste de travail")
WinClose("Poste de travail")
EndFunc ;==>_extension2
;_extension2("tif")
;_extension2("tiff")
Il est certainement très moche, mais ne m'en tenez pas rigueur s'il vous plaît, je débute. L'essentiel est que çà marche, sauf pour les deux fonctions de la fin, qui encore une fois, plantent quand une extension existe déjà.
Merci d'avance pour votre aide
Re: [..] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 11:34
par hunterThompson
Je pense avoir trouvé un moyen avec "regread". Je teste et vous tiens au courant. Merci
Re: [..] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 11:39
par Yogui
Pour ajouter une extension plus proprement je serai passé par la base de registre enfin pour en supprimer une je ferai :
RegDelete("HKEY_CLASSES_ROOT\."&$ext&")
Re: [..] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 12:01
par hunterThompson
Oui, merci, je suis en train de regarder la série des commandes en "Reg.."
Par contre, c'est assez fastidieux, parce que j'ai pas mal de clés qui sont modifiées par cette install.
Je posterai mon script quand j'aurai une solution qui fonctionne
merci à toi
Re: [..] Script de test d'existence d'une extension
Posté : lun. 14 déc. 2009 21:42
par Tlem
J'ai déjà fait un UDF qui permet de gérer les associations. Une petite recherche dans le forum UDF et le tour est joué.

Re: [..] Script de test d'existence d'une extension
Posté : mar. 15 déc. 2009 11:04
par hunterThompson
Oh, mais c'est une excellente nouvelle çà, parce que je galère avec mes regwrite depuis hier.
Merci à vous, ô grand Tlem!