Page 1 sur 1
[R] Lancement d'un .msi
Posté : mar. 15 avr. 2008 11:10
par delvig
Bonjour,
Désolé de poser une question qui a sûrement dû l'être à plusieurs reprises, mais je n'arrive pas à m'en sortir avec ce que j'ai pu trouver.
Voici mon script :
Code : Tout sélectionner
Dim $Mino
$Mino = "C:\Program Files\Mozilla Thunderbird"
; 1. On vérifie si le dossier existe sur le poste client
If FileExists($Mino) Then
; 3. Il existe alors on stoppe le script.
MsgBox(0,"Installation Mino","Mino est déjà installé sur votre poste", 10) ;-> s'affiche 10s
Exit
Else
; 3' a. Il n'existe pas alors on connecte le lecteur réseau : * signifie qu'il prend la 1ère lettre disponible
MsgBox(0,"Installation Mino","Mino va être installé sur votre poste, merci de patienter environ 10 minutes jusqu'au message de fin.", 100) ;-> s'affiche 100s
$lecteur = DriveMapAdd("*","\\Serveur\InstMino")
; 3' b. On recopie les programmes d'installation (depuis le serveur) sur le poste, et on les lance.
DirCreate("C:\mino_temp")
FileCopy($lecteur & "\install_mino.msi", "C:\mino_temp\")
FileCopy($lecteur & "\Thunderbird Setup 2.0.0.9.exe", "C:\mino_temp\")
FileCopy($lecteur & "\Firefox_2.0.0.9.exe", "C:\mino_temp\")
FileCopy($lecteur & "\jre-6u2-windows-i586-p-s.exe", "C:\mino_temp\")
RunAsSet("Administrateur","Domaine","MotDePasse",1)
RunWait(@COMSPEC & " /c Start C:\mino_temp\install_mino.msi", @SW_HIDE)
; 3' c. Une fois l'installation terminée, on supprime le dossier mino_temp et on déconnecte le lecteur réseau
DirRemove("C:\mino_temp", 1)
DriveMapDel($lecteur)
MsgBox(0,"Installation Mino","Mino vient d'être installé sur votre poste.", 100) ;-> s'affiche 100s
EndIf
; 4. Arrêt du script
Exit
Tout fonctionne bien jusqu'au RunAsSet, par contre ça plante au niveau du RunWait. Le problème se situe sûrement au niveau de la syntaxe du chemin du msi que je veux exécuter, mais je n'arrive à trouver l'erreur.
Si vous pouvez m'aider...
Merci par avance.
Patrice
Re: Lancement d'un .msi
Posté : mar. 15 avr. 2008 11:22
par ani
A première vu tout est correct, sauf le Hide, le msi est un fichier d'installation avec interface user ou non, il faut donc ajouter un parametre d'installation à mon avis, fait un test sans le hide.
je vais testé le script , je reviend (le temp de trouver un msi

)
Sinon il copi bien les fichiers ?
edit:teste effectué réussi (sans le hide fichier msi et ni le drivemap),
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 11:39
par delvig
Merci pour ta réponse rapide !!!
Oui, les fichiers sont bien copiés dans le bon répertoire.
Je vais tester sans le Hide
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 11:56
par delvig
J'ai modifié comme ça, mais j'ai un message d'erreur :
RunWait(@COMSPEC & " /c Start C:\mino_temp\install_mino.msi")
Le message d'erreur est :
Error : Unable to execute the external program.
Là, je ne comprends plus !
Si tu y vois plus clair que moi...
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 12:05
par ani
et en écrivant
RunWait(@COMSPEC & " /c Start install_mino.msi","C:\mino_temp")
runwait(nomdufichier,leRépertoire,leDrapeau)
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 13:13
par delvig
Non, toujours la même erreur.
Sinon, est-il possible de transformer un .msi en .bat ou en .exe (ça résoudrait peut-être mon problème !) ?
Merci encore pour ton aide.
Patrice
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 16:49
par eln
Bonjour
Il faut utiliser les noms courts pour le chemin et le nom de ton application.
Re: [..] Lancement d'un .msi
Posté : mar. 15 avr. 2008 23:21
par Tlem
Au lieu d'utiliser RunWait, utilisez ShellExecuteWait.
Voir ici :
http://www.autoitscript.fr/autoit3/docs/faq.htm#6
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 10:16
par delvig
Bonjour,
J'ai essayé avec ShellExecuteWait et j'ai le même message d'erreur.
Est-ce la bonne syntaxe ?
ShellExecuteWait("C:\mino_temp\install_mino.msi")
Ne serait-ce pas plus judicieux de me postionner d'abord dans le répertoire C:\mino_temp, puis d'exécuter le msi par ShellExecuteWait("install_mino.msi"). Mais comment faire pour se positionner dans C:\mino_temp avant de lancer la commande ShellExecuteWait("install_mino.msi") ?
Patrice
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 10:20
par CleM71
Essaye
Code : Tout sélectionner
RunWait(@COMSPEC & " /c Start C:\mino_temp\install_mino.msi", "C:\WINDOWS\system32\", @SW_HIDE)
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 10:31
par delvig
Toujours pareil
Je n'y comprends plus rien.
En tout cas, merci pour vos idées.
Patrice
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 10:33
par CleM71
Je suis sur un projet similaire et voilà ce que j'utilise
Code : Tout sélectionner
RunWait(@ComSpec & " /C C:\WINDOWS\system32\msiexec.exe /i C:\temp\alias\TEST.msi", "C:\WINDOWS\system32\", @SW_HIDE)
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 10:58
par tofu
En allant fouiner sur le forum officiel d'AutoIt, je suis tombé sur un thread parlant d'une erreur similaire à celle que tu sembles rencontrer.
N'étant pas super balèse en anglais je n'arrive pas à comprendre la totalité de ce qu'ils exposent (faudrait que je me plonge la tête dedans) donc je vous donne le lien tel quel en espérant que ça puisse aider...
http://www.autoitscript.com/forum/index ... opic=68830
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 13:09
par tutu
j'ai eu le meme soucis recement avec un fichier msi, la seul solution que jai trouver c'est de lancer le programme a laide de linvite de commande msdos et la aucun probleme.
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 14:25
par delvig
@tutu
Et comment as-tu procédé exactement, stp ?
@CleM71
Ca ne fonctionne pas non plus hélas avec ta ligne de commande
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 14:58
par tofu
Je viens de faire un petit test sur mon pc,
mon login est monnom-monprenom. Je suis authentifié sur cette session là.
mon script exécute ceci:
Code : Tout sélectionner
RunAsSet("toto",@ComputerName,"toto")
RunWait(@COMSPEC & " /c Start C:\ExcelMUI.msi")
j'obtiens:
C:\Documents and Settings\<mon login>\Bureau\test.au3 (3) : ==> Unable to execute the external program.:
RunWait(@COMSPEC & " /c Start C:\ExcelMUI.msi")
Le nom de répertoire est incorrect.
Par contre, si je fais:
Code : Tout sélectionner
RunAsSet("toto",@ComputerName,"toto")
RunWait(@COMSPEC & " /c Start C:\ExcelMUI.msi","C:\WINDOWS")
En rajoutant le WorkingDir, là ça fonctionne.
Pour voir si cela venait des ACL sur le dossier contenant le msi à lancer, j'ai enlevé tout les droits afférents au groupe "Utilisateurs", l'utilisateur "toto" en faisant parti. Aucune différence, simplement en mettant le workingdir, le script se termine avec un retour normal sauf que le msi ne s'est pas lancé (normal, l'utilisateur n'ayant pas les droits d'exécution sur le répertoire).
Pour voir, j'ai également essayé de faire:
Code : Tout sélectionner
RunAsSet("toto",@ComputerName,"toto")
ShellExecuteWait("C:\ExcelMUI.msi")
et pareil, tout fonctionne correctement.
Si tu as la possibilité, ce qui serait intéressant ce serait que tu test l'exécution de ton script non compilé sur une VM ou sur une autre machine avec AutoIt fraichement installé sans aucune modification des options ni rien voir si ça fait pareil parce que là c'est vraiment bizarre..
Re: [..] Lancement d'un .msi
Posté : mer. 16 avr. 2008 15:48
par delvig
J'ai essayé ce que tu viens de me dire. Rien à faire.
Je pense que le souci vient de la syntaxe du chemin, mais où ???
Re: [..] Lancement d'un .msi
Posté : jeu. 17 avr. 2008 15:50
par delvig
Hello,
J'ai trouvé grâce à votre collaboration à tous. Il faut utiliser ceci :
Ca ne fonctionnait pas car un répertoire Mino existait déjà sur le PC !!!
Par contre, comment faire pour que l'exécution du script soit invisible avec ShellExecuteWait (en effet, j'ai une fenêtre "Installation Mino" qui s'affiche avec un bouton "Annuler" et je ne voudrais pas que certains utilisateurs cliquent sur "Annuler") ?
Merci beaucoup à tous.
Patrice
Re: [R] Lancement d'un .msi
Posté : lun. 21 avr. 2008 11:06
par tofu
Selon l'aide d'autoit
ShellExecuteWait ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
Donc il semble qu'il faille faire:
Cordialement,
Re: [R] Lancement d'un .msi
Posté : mar. 22 avr. 2008 12:54
par delvig
Oui, merci !!!
C'était exactement ça :
ShellExecuteWait("C:\mino_temp\install_mino.msi","/qn")
Merci encore à tous pour votre aide.
Patrice