Seite 1 von 1

Bug Winst ?

Verfasst: 13 Feb 2012, 12:13
von nicolaslebrun
Bonjour,

Je pense avoir découvert un bug...

Code: Alles auswählen

[Actions]
Message "Installation de owm-comptes-locaux en cours ..."
DefVar $UserName$
Set $UserName$ = GetProductProperty("Local_Login", "secours")
DefVar $UserPassWord$
Set $UserPassWord$ = GetProductProperty("Local_PassWord", "help!")
DefVar $UserGroup$
Set $UserGroup$ = GetProductProperty("Local_UserGroup", "Utilisateurs")
Execwith_Autoit "autoit3.exe" PASS $UserName$ $UserPassWord$ $UserGroup$

[ExecWith_Autoit]
$UserName = $CmdLine[1]
$Password = $CmdLine[2]
$UserGroup = $CmdLine[3]
MsgBox(0,"", $UserName & $Password & &UserGroup
Winst n'envoie qu'un seul paramètre parmi les trois $UserName$ $UserPassWord$ $UserGroup$

Par contre, il y a bien 3 paramètre si je fais

Code: Alles auswählen

Execwith_Autoit "autoit3.exe" PASS one two three

Autre chose, Winst n'accepte pas le passage de /LetThemGo pour Autoit

Des solutions ?

Cordialement

Nicolas Lebrun

Re: Bug Winst ?

Verfasst: 13 Feb 2012, 13:38
von Antoine GUEVARA
Bonjour,

Et avec $CmdLine[0] $CmdLine[1] et $CmdLine[2] cela donne quoi ?

Re: Bug Winst ?

Verfasst: 13 Feb 2012, 19:09
von nicolaslebrun
Bonjour,

Non, non, le pb n'est pas là ... $CmdLine[0] donne le nombre d'arguments... C'est une instruction Autoit. Je pourrais cependant le tester mais c'est pas ça. (Faire un msgbox supplémentaire)

Si je fais l'appel par

Code: Alles auswählen

Execwith_Autoit "autoit3.exe" PASS one two three
Les journaux d'install m'informent que les 3 paramètres sont passés...

Mais si je fais

Code: Alles auswählen

Execwith_Autoit "autoit3.exe" PASS $UserName$ $UserPassWord$ $UserGroup$
Les journaux d'install me disent que l'appel s'est fait uniquement avec la valeur de la première variable ... pas les deux autres...
J'ai essayé des guillemets, mais alors il ne convertit pas les variables.

Je crois vraiment qu'il y a un bug winst.

Nicolas

Re: Bug Winst ?

Verfasst: 14 Feb 2012, 22:09
von nicolaslebrun
Je confirme le bug sur les dernières versions

opsi-winst installed success none 4.11.2.3-1

le log me donne

Code: Alles auswählen

[5] [14/02/2012 22:02:13] message Installation de owm-comptes-locaux en cours ...
[5] [14/02/2012 22:02:13] 
[5] [14/02/2012 22:02:13] Set  $UserName$ = GetProductProperty("Local_Login", "secours")
[6] [14/02/2012 22:02:13]   The value of the variable "$UserName$" is now: "secours"
[5] [14/02/2012 22:02:13] 
[5] [14/02/2012 22:02:13] Set  $UserPassWord$ = GetProductProperty("Local_PassWord", "help!")
[6] [14/02/2012 22:02:13]   The value of the variable "$UserPassWord$" is now: "help!"
[5] [14/02/2012 22:02:13] 
[5] [14/02/2012 22:02:13] Set  $UserGroup$ = GetProductProperty("Local_UserGroup", "Utilisateurs")
[6] [14/02/2012 22:02:13]   The value of the variable "$UserGroup$" is now: "Utilisateurs"
[5] [14/02/2012 22:02:13] 
[5] [14/02/2012 22:02:13] Execution of Execwith_Autoit
[6] [14/02/2012 22:02:13]   c:\opsi.org\tmp\_winstbat_1.bat saved back
[6] [14/02/2012 22:02:13]   Executing "autoit3.exe"  "c:\opsi.org\tmp\_winstbat_1.bat"  help!
[6] [14/02/2012 22:02:19]               
[6] [14/02/2012 22:02:19]               output:
[6] [14/02/2012 22:02:19]               --------------
[6] [14/02/2012 22:02:19]   
[6] [14/02/2012 22:02:19] Delete "c:\opsi.org\tmp\_winstbat_*"
[6] [14/02/2012 22:02:19]   Search "c:\opsi.org\tmp\"
[6] [14/02/2012 22:02:19]   File "c:\opsi.org\tmp\_winstbat_1.bat"
[6] [14/02/2012 22:02:19]     The file has been deleted
[1] [14/02/2012 22:02:19] ___________________
avec ce fichier setup.ins

Code: Alles auswählen

[Actions]
Message "Installation de owm-comptes-locaux en cours ..."

DefVar $UserName$
Set $UserName$ = GetProductProperty("Local_Login", "secours")

DefVar $UserPassWord$
Set $UserPassWord$ = GetProductProperty("Local_PassWord", "help!")

DefVar $UserGroup$
Set $UserGroup$ = GetProductProperty("Local_UserGroup", "Utilisateurs")

Execwith_Autoit "autoit3.exe" PASS $UserPassWord$ $UserName$ $UserGroup$
;WINST /LetThemGo


[ExecWith_Autoit]
; Init objects
Const $ADS_UF_DONT_EXPIRE_PASSWD = 0X10000
Const $ADS_UF_PASSWD_CANT_CHANGE = 0X40
$UserName = $CmdLine[1]
$Password = $CmdLine[2]
$UserGroup = $CmdLine[3]

$strComputer = @ComputerName
$Description = "Utilisateur de secours"
; Check if account exists .. if not create it
$objUser = ObjGet("WinNT://" & $strComputer & "/" & $UserName)
If @Error then
    $colAccounts = ObjGet("WinNT://" & $strComputer & "")
    $objUser = $colAccounts.Create("user", $UserName)
    $objUser.SetPassword ($Password)
    $objUser.Put ("Fullname", $Description)
    $objUser.Put ("Description", $Description)
    $objUser.SetInfo
EndIf
; Changement du mot de passe
$objUser = ObjGet("WinNT://" & @ComputerName & "/" & $UserName)
$objUser.SetPassword($Password)
$objUser.SetInfo
; Lit les reglages courant et BitOR pour s'assurer que "Le mot de passe n'expire jamais est on"
$oldFlags = $objUser.Get("UserFlags")
$newFlags = BitOR($oldFlags,$ADS_UF_DONT_EXPIRE_PASSWD)
$objUser.Put ("UserFlags", $newFlags) ;expire the password
$objUser.SetInfo
;Ajout l'utilisateur a un groupe 
;     cette instruction passe pas ... group users ? administrators ?
MsgBox(0,"debug", $UserName & " " & $Password & " " & $UserGroup)
$objGroup = ObjGet("WinNT://" & $strComputer & "/" & $UserGroup",group")
$objGroup.Add($objUser.ADsPath)
;lit les réglages et s'assure que le mot de passe ne peut pas être changé
$oldFlags = $objUser.Get("UserFlags")
$newFlags = BitOR($oldFlags,$ADS_UF_PASSWD_CANT_CHANGE)
$objUser.Put ("UserFlags", $newFlags) ;expire the password
$objUser.SetInfo
Dois-je poster ailleurs ?

Nicolas

Re: Bug Winst ?

Verfasst: 15 Feb 2012, 17:01
von poterealpopolo
Bonjour,

je vais rentrer le bug aux developpeurs d'opsi.

Je vous tiendrai au courant dans les prochaines jours.

Bien à vous

Re: Bug Winst ?

Verfasst: 20 Feb 2012, 18:22
von poterealpopolo
Bonjour,

Il semble y avoir un problème en passant des variables (tout fonctionne très bien avec des chaînes).

Mais ce n'est pas vraiment un problème parce qu'il ya une meilleure façon de faire le travail:

Vous pouvez utiliser des constantes et des variables winst directement à l'intérieur de chaque section secondaire, car ils seront remplacés par leur valeur avant l'exécution.

Il est donc possible d'écrire:

Code: Alles auswählen

Execwith_Autoit "autoit3.exe"


[ExecWith_Autoit]

; Init objects

Const $ADS_UF_DONT_EXPIRE_PASSWD = 0X10000

Const $ADS_UF_PASSWD_CANT_CHANGE = 0X40

$UserName = "$UserPassWord$"

$Password = "$UserName$"

$UserGroup = "$UserGroup$"
Bien à vous