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
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Installation silencieuse avec RunAsWait
Bonjour à tous,
si une âme charitable pourrait m’aider
Merci d'avance pour votre aide
si une âme charitable pourrait m’aider
Merci d'avance pour votre aide
Re: Installation silencieuse avec RunAsWait
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
Après, on peut faire plus propre en mettant les noms d'utilisateurs/mots de passes dans un tableau et faire une boucle :
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
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
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")
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 !
Re: Installation silencieuse avec RunAsWait
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
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