Installation silencieuse avec RunAsWait

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
frd7713
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mar. 14 févr. 2017 12:31
Status : Hors ligne

Installation silencieuse avec RunAsWait

#1

Message par frd7713 »

Bonjour à tous,
j'ai la même problématique : l'installation silencieuse d'un MSI mais avec les droits administrateurs locaux mais avec le fichier MSI qui sera dans le même répertoire que le script AutoIT compilé en EXE

j'ai trouvé cette commande qui pourrais correspondre :

#NoTrayIcon
Dim $sUserName = "myuser"
Dim $sPassword = "mypass"
Dim $sDomaine = "mydomain"
If Not IsAdmin() Then
Run($sUserName, $sDomaine, $sPassword, 0, @ScriptFullPath, @ScriptDir)
Exit
EndIf

Mais j'ai deux comptes administrateur possibles sur les PC de mon client.

Désolé si je pose des questions bêtes mais je n'ai jamais fait d'autoIT : je suis tous novice :?

Le problème que j'ai est d'imbriquer les différentes fonctions que je souhaites intégrer dans mon script d'automatisation.

J'ai fait ce type de script repris d'un collègue qui est parti :

Local $sUserName = "usernamexxxx"
Local $sPassword = "Passwordxxxxx"
Local $iPID = RunAsWait($sUserName, @ComputerName, $sPassword, 0, "msiexec /i c:\temp\BIGIPComponentInstaller.msi /q")

Local $sUserName = "usernamexxxx"
Local $sPassword = "xxxxxxxxx"
Local $iPID = RunAsWait($sUserName, @ComputerName, $sPassword, 0, "msiexec /i c:\temp\BIGIPComponentInstaller.msi /q")

Merci pour votre aide par avance.

Bon après-midi.
frd7713
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mar. 14 févr. 2017 12:31
Status : Hors ligne

Installation silencieuse avec RunAsWait

#2

Message par frd7713 »

Bonjour à tous,
si une âme charitable pourrait m’aider :(

Merci d'avance pour votre aide ;-)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Installation silencieuse avec RunAsWait

#3

Message par jguinch »

frd7713 : Merci de créer un nouveau message à chaque nouvelle demande. Ca ne sert à rien d'écrire dans un message datant de 2010. J'ai créé un nouveau message à partir du précédent.

Pour répondre à tes questions,
En gros, il faut exécuter la première fonction RunAsWait et vérifier si ça a bien fonctionné. En cas de problème, il faudra exécuter la deuxième fonction RunAsWait (avec le deuxième mot de passe donc).
Pour savoir si la fonction RunAsWait a fonctionné, il faut se référer à la doc. Dans la doc, on voit que RunAsWait retourne le code de retour du programme exécuté. Donc ça peut être 0 (succès pour un MSI) ou une autre valeur. Difficile donc de savoir si ça a fonctionné avec le code de retour de la fonction. Par contre, ou voit que @error est positionné à "une valeur différence de zéro" en cas d'échec. Il suffit donc de tester si @error est différent de zéro après l'exécution de la fonction RunAsWait
Local $sUserName1 = "username1", $sPassword1 = "P@$$w0rd1"
Local $sUserName2 = "username2", $sPassword1 = "P@$$w0rd2"
Local $sCommand = 'msiexec /i "' & @ScriptDir & '\BIGIPComponentInstaller.msi" /qb'   ; je place le msi entre double quotes au cas où le chemin contienne des espaces

Local $iPID = RunAsWait($sUserName1, @ComputerName, $sPassword1, 0, $sCommand, @SystemDir) ; on lancer la commande avec le premier compte
If @error Then   ; la fonction RunAsWait passe @error à une valeur différente de zéro en cas de pb (du genre "mot de passe incorrect")
   $iPID = RunAsWait($sUserName2, @ComputerName, $sPassword2, 0, $sCommand, @SystemDir) ; on lancer la commande avec le deuxième compte
   If @error Then
      MsgBox(16, "Erreur", "Impossible d'installer BIGIP Component")
      Exit
   EndIf
EndIf
Après, on peut faire plus propre en mettant les noms d'utilisateurs/mots de passes dans un tableau et faire une boucle :
Local $iPid
Local $aAccounts = [[ "username1", "P@$$w0rd1"], [ "username2", "P@$$w0rd2"] ]
For $i = 0 To UBound($aAccounts) - 1
   $iPid = RunAsWait($aAccounts[$i][0], @ComputerName, $aAccounts[$i][1], 0, $sCommand, @SystemDir) ; on lancer la commande avec le premier compte
   If $iPid Then ExitLoop
Next
If Not $iPid Then MsgBox(16, "Erreur", "Impossible d'installer BIGIP Component")
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
frd7713
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mar. 14 févr. 2017 12:31
Status : Hors ligne

Re: Installation silencieuse avec RunAsWait

#4

Message par frd7713 »

Bonjour,
Merci jguinch pour ton retour rapide.

C'est noté : je créerais un nouveau message pour la prochaine fois.

Merci encore pour ton aide

Bonne journée.

Cdt

Farid :)
Répondre