[R] Lancement d'un .msi

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

[R] Lancement d'un .msi

#1

Message 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
Modifié en dernier par ani le mer. 17 juin 2009 10:33, modifié 4 fois.
Raison : Ajout de la balise [autoit].
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: Lancement d'un .msi

#2

Message 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),
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#3

Message 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
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#4

Message 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...
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Lancement d'un .msi

#5

Message par ani »

et en écrivant
RunWait(@COMSPEC & " /c Start install_mino.msi","C:\mino_temp")

runwait(nomdufichier,leRépertoire,leDrapeau)
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#6

Message 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
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

Re: [..] Lancement d'un .msi

#7

Message par eln »

Bonjour

Il faut utiliser les noms courts pour le chemin et le nom de ton application.

Code : Tout sélectionner

Run(@ComSpec & " /c Start C:\MINO_T~1\INSTAL~1.MSI")
Débutant, pas taper !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lancement d'un .msi

#8

Message par Tlem »

Au lieu d'utiliser RunWait, utilisez ShellExecuteWait.

Voir ici : http://www.autoitscript.fr/autoit3/docs/faq.htm#6
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#9

Message 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
Modifié en dernier par delvig le mer. 16 avr. 2008 10:26, modifié 1 fois.
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Lancement d'un .msi

#10

Message par CleM71 »

Essaye

Code : Tout sélectionner

RunWait(@COMSPEC & " /c Start C:\mino_temp\install_mino.msi", "C:\WINDOWS\system32\", @SW_HIDE)
 
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#11

Message par delvig »

Toujours pareil :x

Je n'y comprends plus rien.

En tout cas, merci pour vos idées.

Patrice
CleM71
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mer. 16 avr. 2008 08:58
Status : Hors ligne

Re: [..] Lancement d'un .msi

#12

Message 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)
 
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] Lancement d'un .msi

#13

Message 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
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
tutu
Niveau 3
Niveau 3
Messages : 36
Enregistré le : sam. 01 mars 2008 16:43
Status : Hors ligne

Re: [..] Lancement d'un .msi

#14

Message 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.
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#15

Message 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
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] Lancement d'un .msi

#16

Message 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..
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#17

Message 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ù ???
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [..] Lancement d'un .msi

#18

Message par delvig »

Hello,

J'ai trouvé grâce à votre collaboration à tous. Il faut utiliser ceci :

Code : Tout sélectionner

ShellExecuteWait("C:\mino_t~1\instal~1.msi")
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
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [R] Lancement d'un .msi

#19

Message par tofu »

Selon l'aide d'autoit
ShellExecuteWait ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
Donc il semble qu'il faille faire:

Code : Tout sélectionner

ShellExecuteWait("C:\mino_temp\install_mino.msi","/qn")
Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
delvig
Niveau 2
Niveau 2
Messages : 26
Enregistré le : mar. 15 avr. 2008 10:33
Status : Hors ligne

Re: [R] Lancement d'un .msi

#20

Message par delvig »

Oui, merci !!! :D
C'était exactement ça :

ShellExecuteWait("C:\mino_temp\install_mino.msi","/qn")

Merci encore à tous pour votre aide.

Patrice
Répondre