Page 1 sur 1

Installation silencieuse avec RunAsWait

Posté : mar. 14 févr. 2017 16:43
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.

Installation silencieuse avec RunAsWait

Posté : mer. 15 févr. 2017 16:47
par frd7713
Bonjour à tous,
si une âme charitable pourrait m’aider :(

Merci d'avance pour votre aide ;-)

Re: Installation silencieuse avec RunAsWait

Posté : mer. 15 févr. 2017 18:42
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")

Re: Installation silencieuse avec RunAsWait

Posté : jeu. 16 févr. 2017 09:50
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 :)