Agent Fusion inventory

Agent Fusion inventory - Poste de travail - Systèmes & Réseaux Pro

Marsh Posté le 30-12-2016 à 15:37:33    


 
Bonjour tout le monde,
 
 
 
Alors voilà, nous allons mettre Fusion inventory sur l'ensemble de notre parc informatique. Quand je lance mon script VBS à la mains aucun soucis, ça fonctionne sans soucis. Par contre quand je le fais depuis une GPO je ne peux pas, elle est bien dans le script du démarrage du PC pas de soucis, elle s'applique bien au PC en question (RSOP ok), mais je pense qu'il me manque l’élévation des droits ou l'UAC qui me dérange.
 
Une idée pour contourner ça ? ça doit être tout bête en plus :/
 
 
En vous remerciant par avance,

Reply

Marsh Posté le 30-12-2016 à 15:37:33   

Reply

Marsh Posté le 30-12-2016 à 16:36:10    

Comment tu lances ton script ?

Reply

Marsh Posté le 30-12-2016 à 16:44:16    


Alors si je lance en local par exemple aucun soucis. Si depuis un utilisateur lambda je vais dans :
 
\\serveurAD\sysvol\etc.... et que lance le VBS ça marche mais faut que je rentre des infos admin. Et si je suis admin quand je fais ça bas juste accepter à cause de l'UAC.
 
Donc malgré que je le lance via une GPO ordinateur bas l'UAC ou les droits bloquent visiblement. Mais je vois pas en quoi, je publie des imprimantes sans le moindre soucis par exemple.

Reply

Marsh Posté le 30-12-2016 à 16:48:45    

Dans la GPO vérifie que tu appelles ton script avec cscript.exe
Je suppose que ton script n'a pas besoin d'une interaction pour s'exécuter.

Reply

Marsh Posté le 30-12-2016 à 16:59:20    

Non c'est le VBS du site FusionInventory vraiment rien de bien méchant à la base quoi.
 
Je vérifie comment pour le cscript.exe ?

Reply

Marsh Posté le 30-12-2016 à 19:10:09    

Micko77666 a écrit :

Non c'est le VBS du site FusionInventory vraiment rien de bien méchant à la base quoi.
 
Je vérifie comment pour le cscript.exe ?


En fait tu exécutes cscript.exe et tu mets ton fichier vbs en argument. Cscript est un exécutable présent dans les répertoires système de l'os.

Reply

Marsh Posté le 30-12-2016 à 19:38:59    


Ah OK jamais eu besoin de le faire avant, je testerai ça lundi :)
 
Mais c'est vrai que c'est bizarre  car la GPO est très simple et le VBS aussi.

Reply

Marsh Posté le 30-12-2016 à 19:49:52    

Micko77666 a écrit :


Ah OK jamais eu besoin de le faire avant, je testerai ça lundi :)
 
Mais c'est vrai que c'est bizarre  car la GPO est très simple et le VBS aussi.


En fait lorsque tu double clic sur ton fichier vbs ton os utilise l'exécutable cscript.exe pour l'exécuter. C'est pour cela que tu doit lui indiquer avec quoi exécuter ton code, un fichier vbs n'est pas un exécutable.

Reply

Marsh Posté le 31-12-2016 à 10:50:11    


Et du coup si c'est bien cscript qui ouvre mon VBS, qu'est ce qu'il y a d'autres comme pistes ?
 
Un soucis sur mon VBS ?

Reply

Marsh Posté le 31-12-2016 à 13:51:46    

Dans une GPO de type ordinateur tu n'as pas besoin d'élever les droits car le script est exécuté avec les droits systèmes.  
Dans mon AD, le script fusion s'exécute correctement quel que soit la version d'os, et il est exécuté via cscript dans une gpo ordinateur.  
 
Alors a priori je dirais que ça doit fonctionner de cette manière.

Reply

Marsh Posté le 31-12-2016 à 13:51:46   

Reply

Marsh Posté le 31-12-2016 à 14:29:43    


Tu as un exemple de ton script pour stp et tu as pas de soucis avec l'UAC ?

Reply

Marsh Posté le 31-12-2016 à 15:00:10    

Micko77666 a écrit :


Tu as un exemple de ton script pour stp et tu as pas de soucis avec l'UAC ?


J'utilise le script fourni avec le plugin fusioninventory. Si ça ne fonctionne toujours pas de ton côté lundi, je te file ça. Non aucun soucis

Reply

Marsh Posté le 31-12-2016 à 15:02:21    

Micko77666 a écrit :


Ah OK jamais eu besoin de le faire avant, je testerai ça lundi :)
 
Mais c'est vrai que c'est bizarre  car la GPO est très simple et le VBS aussi.


Le moteur par défaut est wscript qui se comporte différement. Sinon tu balances un package MSI par un GPO ou tu fais un script en Powershell.

Reply

Marsh Posté le 02-01-2017 à 10:56:37    

Bon j'ai regardé en arrivant au travail, en fait j'ai ce message d'erreur avec un gpresult :
 
" Les objets stratégie de groupe n'ont pas été appliqués
 car ils ont été refusés"
 
Forcément ça aide pas .... par contre je ne vois pas pourquoi il me fait ça. Mon PC est dans la bonne OU, en filtre j'ai mis le nom de mon PC et j'ai bien assez au lecteur réseau avec les sources du logiciel à installer.

Message cité 1 fois
Message édité par Micko77666 le 02-01-2017 à 11:01:54
Reply

Marsh Posté le 19-01-2017 à 17:45:26    

Micko77666 a écrit :

Bon j'ai regardé en arrivant au travail, en fait j'ai ce message d'erreur avec un gpresult :
 
" Les objets stratégie de groupe n'ont pas été appliqués
 car ils ont été refusés"
 
Forcément ça aide pas .... par contre je ne vois pas pourquoi il me fait ça. Mon PC est dans la bonne OU, en filtre j'ai mis le nom de mon PC et j'ai bien assez au lecteur réseau avec les sources du logiciel à installer.


Quelle est la solution trouvée ?

Reply

Marsh Posté le 28-04-2017 à 15:37:18    


Je reviens sur mon sujet, j'avais le soucis pour que la GPO s'applique correctement à l'utilisateur, car effectivement je n'avais pas mis utilisateur authentifié dans la délégations.
 
Par contre je rencontre toujours le soucis d'installation de l'agent.
 
 
- En gros avec RSOP.MSC ou gpresult /R je vois bien que ma GPO est ok , que le script est bien au bon endroit.
- Si je lance mon script à la main dans \\srv\sysvol\policies\etc....  l'agent s'installe bien, faut juste entrer un login et un mot de passe pour avoir les droits.
 
Donc mon script tout comme mon agent sont fonctionnent bien.
 
 
Qu'est-ce qu'il pourrait manquer ?

Reply

Marsh Posté le 29-04-2017 à 11:57:52    

Si le programme te demande un mot de passe c'est que le programme doit se lancer dans une gpo utilisateur et que l'utilisateur n'est pas administrateur.
Tu peux faire une gpo ordinateur, tu vas ensuite dans exécuter un programme/script au démarrage.
Tu mets ton agent OCS sur un dossier partagé, tu lui donnes le chemin de ton agent \\serveur\partage_ocs\agent.exe
Ensuite dans les paramètres de script tu rentres les paramètres OCS : adresse serveur, https, installation silencieuses...


Message édité par nnwldx le 29-04-2017 à 11:58:24
Reply

Marsh Posté le 30-04-2017 à 17:54:33    


Non j'ai la demande du mot de passe quand je lance le script à la main. Et FusionInventory comme les autres applications se fait depuis une GPO ordinateur pour justement pas avoir de login et mdp.
 
Mais j'arrive pas à voir pourquoi sur mes PCs rien ne se passe.

Reply

Marsh Posté le 01-05-2017 à 19:49:48    

Essaye peut être avec un poste clean, fresh install désactive AV/FIREWALL/UAC ect ...

Reply

Marsh Posté le 02-05-2017 à 08:36:11    

Je test actuellement justement avec un fixe et un portable qui viennent d'être refait, pour ça je comprends pas ce qui bloque du tout.

Reply

Marsh Posté le 02-05-2017 à 14:02:49    


Personne n'a d'idée ou de pistes ? car la je sèche complet, je vois vraiment pas ce qui peut bloquer l'installation de FusionInventory

Reply

Marsh Posté le 02-05-2017 à 19:44:29    

si tu essayes d'activer l'attente du réseau.
Computer Configuration -> Administrative Templates -> System -> Logon “Always Wait for the Network at Computer Startup and Logon”


Message édité par nnwldx le 02-05-2017 à 19:44:46
Reply

Marsh Posté le 03-05-2017 à 08:40:26    


Je viens de faire la modification, je vois bien la nouvelle stratégie appliquée via RSOP, mais ça ne fonctionne malheureusement toujours pas.
 
Par contre si je mets un .MSI à installer ça fonctionne parfaitement. Et le script est OK vu que ça fonctionne quand je le lance à la main :/

Reply

Marsh Posté le 03-05-2017 à 09:33:24    

Salut,
Le script vbs va chercher ls msi sur Internet directement ou le fichier d'installation de l'agent Fusion Inventory est sur un partage de ton LAN ?


---------------
Pixel mort -> .
Reply

Marsh Posté le 03-05-2017 à 09:52:24    


Sur un partage de mon LAN

Reply

Marsh Posté le 04-05-2017 à 07:28:31    

Micko77666 a écrit :


Sur un partage de mon LAN


Tu as essayé en hébergeant le .msi Fusion Inventory directement sur le netlogon ? Chez nous le script d'install vbs, le .msi sont sur le netlogon et avec une gpo ordinateur ca fonctionne très bien.

Reply

Marsh Posté le 04-05-2017 à 09:58:55    


J'ai essayé sur un partage et dans le SYSVOL, et dans les deux cas j'arrive à y accéder sur le pc et lancer le script qui s'installe bien et remonte le PC.
 
Je vais essayé quand même sur le NETLOGON, mais ce qui est étrange c'est que sur aucune doc ou tuto ça pose problème ce que je fais :/

Reply

Marsh Posté le 04-05-2017 à 12:28:18    

sinon tu peux le déployer avec psexec.

Reply

Marsh Posté le 04-05-2017 à 14:06:12    


Oui ça restera mon dernier recours, mais j'aimerai comprendre pourquoi ça fonctionne pas, car ça risque de revenir avec d'autre chose :(

Reply

Marsh Posté le 04-05-2017 à 20:26:20    

Micko77666 a écrit :


J'ai essayé sur un partage et dans le SYSVOL, et dans les deux cas j'arrive à y accéder sur le pc et lancer le script qui s'installe bien et remonte le PC.
 
Je vais essayé quand même sur le NETLOGON, mais ce qui est étrange c'est que sur aucune doc ou tuto ça pose problème ce que je fais :/


Bon ca m'intrigue. Demain je jette un oeil sur la config que j'ai mis en place chez nous.

Reply

Marsh Posté le 05-05-2017 à 08:20:08    

Bon alors voici la config qui fonctionne chez nous :
- Contenu du netlogon :
https://img4.hostingpics.net/pics/399827netlogon.jpg
 
-GPO Ordinateur sur l'OU qui contient tous les ordinateurs du domaine:
Filtrage de sécurité par défaut : Utilisateurs authentifiés
https://img4.hostingpics.net/pics/404215gpo.jpg
 
Voilà en espérant que ca pourra t'aider !!

Reply

Marsh Posté le 10-05-2017 à 14:53:44    


Je viens de faire exactement comme toi, mais toujours rien. Si je vais dans mon \\srv\NETLOGON\fusion etc... et lance le script ça fonctionne (mise à part qu'il me demande l'autorisation mais c'est logique).
 
Je vois pas où ça bloque franchement :(

Reply

Marsh Posté le 10-05-2017 à 16:25:23    

Est ce que par hasard ça ne viendrait pas de ce paramètre dans les propriétés de ton fichier vbs ?
https://img15.hostingpics.net/pics/760543Capture.jpg

Reply

Marsh Posté le 11-05-2017 à 08:30:04    


Je le retrouve où ce paramètre ?

Reply

Marsh Posté le 11-05-2017 à 20:00:36    

Micko77666 a écrit :


Je le retrouve où ce paramètre ?


Clic droit propriété sur le vbs. Ce paramètre ne s'affiche que si c'est un fichier téléchargé depuis internet, il est nécessaire de le débloquer, et une fois débloqué ce paramètre disparaît.

Reply

Marsh Posté le 12-05-2017 à 17:26:56    

Je vais regarder ça car pas vu. Merci en tout cas pour l'aide :)

Reply

Marsh Posté le 15-05-2017 à 09:23:42    


Je viens de regarder je n'ai pas l'option.

Reply

Marsh Posté le 15-05-2017 à 10:55:42    

Tu as essayé de désactiver l'UAC sur ton poste de test ?

Reply

Marsh Posté le 15-05-2017 à 11:34:17    


Oui mais rien de mieux malheureusement :(

Reply

Marsh Posté le 17-05-2017 à 08:40:55    

Tu utilise quel script car sur la toile on en trouve plusieurs ?
Le mien est celui-ci :

Code :
  1. '
  2. '  ------------------------------------------------------------------------
  3. '  fusioninventory-agent-deployment.vbs
  4. '  Copyright (C) 2010-2013 by the FusionInventory Development Team.
  5. '
  6. http://www.fusioninventory.org/ http://forge.fusioninventory.org/
  7. '  ------------------------------------------------------------------------
  8. '
  9. '  LICENSE
  10. '
  11. '  This file is part of FusionInventory project.
  12. '
  13. '  This file is free software; you can redistribute it and/or modify it
  14. '  under the terms of the GNU General Public License as published by the
  15. '  Free Software Foundation; either version 2 of the License, or (at your
  16. '  option) any later version.
  17. '
  18. '
  19. '  This file is distributed in the hope that it will be useful, but WITHOUT
  20. '  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  21. '  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  22. '  more details.
  23. '
  24. '  You should have received a copy of the GNU General Public License
  25. '  along with this program; if not, write to the Free Software Foundation,
  26. '  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,
  27. '  or see <http://www.gnu.org/licenses/>.
  28. '
  29. '  ------------------------------------------------------------------------
  30. '
  31. '  @package   FusionInventory Agent
  32. '  @file      .\contrib\windows\fusioninventory-agent-deployment.vbs
  33. '  @author(s) Benjamin Accary <meldrone@orange.fr>
  34. '             Christophe Pujol <chpujol@gmail.com>
  35. '             Marc Caissial <marc.caissial@zenitique.fr>
  36. '             Tomas Abad <tabadgp@gmail.com>
  37. '  @copyright Copyright (c) 2010-2013 FusionInventory Team
  38. '  @license   GNU GPL version 2 or (at your option) any later version
  39. '             http://www.gnu.org/licenses/old-li [...] alone.html
  40. '  @link      http://www.fusioninventory.org/
  41. '  @link      http://forge.fusioninventory.org/p [...] tory-agent
  42. '  @since     2012
  43. '
  44. '  ------------------------------------------------------------------------
  45. '
  46. '
  47. '
  48. ' Purpose:
  49. '     FusionInventory Agent Unatended Deployment.
  50. '
  51. '
  52. Option Explicit
  53. Dim Force, Verbose
  54. Dim Setup, SetupArchitecture, SetupLocation, SetupOptions, SetupVersion
  55. '
  56. '
  57. ' USER SETTINGS
  58. '
  59. '
  60. ' SetupLocation
  61. '    Depending on your needs or your environment, you can use either a HTTP or
  62. '    CIFS/SMB.
  63. '
  64. '    If you use HTTP, please, set to SetupLocation a URL:
  65. '
  66. '       SetupLocation = "http://host[:port]/[absolut_path]" or
  67. '       SetupLocation = "https://host[:port]/[absolut_path]"
  68. '
  69. '    If you use CIFS, please, set to SetupLocation a UNC path name:
  70. '
  71. '       SetupLocation = "\\host\share\[path]"
  72. '
  73. '       You also must be sure that you have removed the "Open File Security Warning"
  74. '       from programs accessed from that UNC.
  75. '
  76. SetupLocation = "\\my.domain\NETLOGON\fusioninventory-agent"
  77. ' SetupVersion
  78. '    Setup version with the pattern <major>.<minor>.<release>[-<package>]
  79. '
  80. 'PENSER A RETIRER FORCE = YES PLUS BAS
  81. SetupVersion = "2.3.18"
  82. 'PENSER A RETIRER FORCE = YES PLUS BAS
  83. ' SetupArchitecture
  84. '    The setup architecture can be 'x86', 'x64' or 'Auto'
  85. '
  86. '    If you set SetupArchitecture = "Auto" be sure that both installers are in
  87. '    the same SetupLocation.
  88. '
  89. SetupArchitecture = "Auto"
  90. ' SetupOptions
  91. '    Consult the installer documentation to know its list of options.
  92. '
  93. '    You should use simple quotes (') to set between quotation marks those values
  94. '    that require it; double quotes (" ) doesn't work with UNCs.
  95. '
  96. SetupOptions = "/installtasks=Full /acceptlicense /add-firewall-exception /runnow /server='http://my.glpi.server/plugins/fusioninventory/' /S"
  97. ' Setup
  98. '    The installer file name. You should not have to modify this variable ever.
  99. '
  100. Setup = "fusioninventory-agent_windows-" & SetupArchitecture & "_" & SetupVersion & ".exe"
  101. ' Force
  102. '    Force the installation even whether Setup is previously installed.
  103. '
  104. Force = "No"
  105. ' Verbose
  106. '    Enable or disable the information messages.
  107. '
  108. '    It's advisable to use Verbose = "Yes" with 'cscript //nologo ...'.
  109. '
  110. Verbose = "No"
  111. '
  112. '
  113. ' DO NOT EDIT BELOW
  114. '
  115. '
  116. Function AdvanceTime(nMinutes)
  117.    Dim nMinimalMinutes, dtmTimeFuture
  118.    ' As protection
  119.    nMinimalMinutes = 5
  120.    If nMinutes < nMinimalMinutes Then
  121.       nMinutes = nMinimalMinutes
  122.    End If
  123.    ' Add nMinutes to the current time
  124.    dtmTimeFuture = DateAdd ("n", nMinutes, Time)
  125.    ' Format the result value
  126.    '    The command AT accepts 'HH:MM' values only
  127.    AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture)
  128. End Function
  129. Function baseName (strng)
  130.    Dim regEx, ret
  131.    Set regEx = New RegExp
  132.    regEx.Global = true
  133.    regEx.IgnoreCase = True
  134.    regEx.Pattern = ".*[/\\]([^/\\]+)$"
  135.    baseName = regEx.Replace(strng,"$1" )
  136. End Function
  137. Function GetSystemArchitecture()
  138.    Dim strSystemArchitecture
  139.    Err.Clear
  140.    ' Get operative system architecture
  141.    On Error Resume Next
  142.    strSystemArchitecture = CreateObject("WScript.Shell" ).ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%" )
  143.    If Err.Number = 0 Then
  144.       ' Check the operative system architecture
  145.       Select Case strSystemArchitecture
  146.          Case "x86"
  147.             ' The system architecture is 32-bit
  148.             GetSystemArchitecture = "x86"
  149.          Case "AMD64"
  150.             ' The system architecture is 64-bit
  151.             GetSystemArchitecture = "x64"
  152.          Case Else
  153.             ' The system architecture is not supported
  154.             GetSystemArchitecture = "NotSupported"
  155.       End Select
  156.    Else
  157.       ' It has been not possible to get the system architecture
  158.       GetSystemArchitecture = "Unknown"
  159.    End If
  160. End Function
  161. Function isHttp(strng)
  162.    Dim regEx, matches
  163.    Set regEx = New RegExp
  164.    regEx.Global = true
  165.    regEx.IgnoreCase = True
  166.    regEx.Pattern = "^(http(s?)).*"
  167.    If regEx.Execute(strng).count > 0 Then
  168.       isHttp = True
  169.    Else
  170.       isHttp = False
  171.    End If
  172.    Exit Function
  173. End Function
  174. Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture)
  175.    Dim strCurrentSetupVersion
  176.    ' Compare the current version, whether it exists, with strSetupVersion
  177.    If strSystemArchitecture = "x86" Then
  178.       ' The system architecture is 32-bit
  179.       ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
  180.       '    This subkey is now deprecated
  181.       On error resume next
  182.       strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion" )
  183.       If Err.Number = 0 Then
  184.       ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
  185.          If strCurrentSetupVersion <> strSetupVersion Then
  186.             ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
  187.             IsInstallationNeeded = True
  188.          End If
  189.          Exit Function
  190.       Else
  191.          ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' doesn't exist
  192.          Err.Clear
  193.          ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  194.          On error resume next
  195.          strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
  196.          If Err.Number = 0 Then
  197.          ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  198.             If strCurrentSetupVersion <> strSetupVersion Then
  199.                ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
  200.                IsInstallationNeeded = True
  201.             End If
  202.             Exit Function
  203.          Else
  204.             ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
  205.             Err.Clear
  206.             ShowMessage("Installation needed: " & strSetupVersion)
  207.             IsInstallationNeeded = True
  208.          End If
  209.       End If
  210.    Else
  211.       ' The system architecture is 64-bit
  212.       ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
  213.       '    This subkey is now deprecated
  214.       On error resume next
  215.       strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion" )
  216.       If Err.Number = 0 Then
  217.       ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
  218.          If strCurrentSetupVersion <> strSetupVersion Then
  219.             ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
  220.             IsInstallationNeeded = True
  221.          End If
  222.          Exit Function
  223.       Else
  224.          ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' doesn't exist
  225.          Err.Clear
  226.          ' Check if the subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  227.          On error resume next
  228.          strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
  229.          If Err.Number = 0 Then
  230.          ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  231.             If strCurrentSetupVersion <> strSetupVersion Then
  232.                ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
  233.                IsInstallationNeeded = True
  234.             End If
  235.             Exit Function
  236.          Else
  237.             ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
  238.             Err.Clear
  239.             ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  240.             On error resume next
  241.             strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
  242.             If Err.Number = 0 Then
  243.             ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
  244.                If strCurrentSetupVersion <> strSetupVersion Then
  245.                   ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
  246.                   IsInstallationNeeded = True
  247.                End If
  248.                Exit Function
  249.             Else
  250.                ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
  251.                Err.Clear
  252.                ShowMessage("Installation needed: " & strSetupVersion)
  253.                IsInstallationNeeded = True
  254.             End If
  255.          End If
  256.       End If
  257.    End If
  258. End Function
  259. Function IsSelectedForce()
  260.    If LCase(Force) <> "no" Then
  261.       ShowMessage("Installation forced: " & SetupVersion)
  262.       IsSelectedForce = True
  263.    Else
  264.       IsSelectedForce = False
  265.    End If
  266. End Function
  267. ' http://www.ericphelps.com/scriptin [...] index.html
  268. Function SaveWebBinary(strSetupLocation, strSetup)
  269.    Const adTypeBinary = 1
  270.    Const adSaveCreateOverWrite = 2
  271.    Const ForWriting = 2
  272.    Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl
  273.    strUrl = strSetupLocation & "/" & strSetup
  274.    'On Error Resume Next
  275.    'Download the file with any available object
  276.    Err.Clear
  277.    Set web = Nothing
  278.    Set web = CreateObject("WinHttp.WinHttpRequest.5.1" )
  279.    If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest" )
  280.    If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP" )
  281.    If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP" )
  282.    web.Open "GET", strURL, False
  283.    web.Send
  284.    If Err.Number <> 0 Then
  285.       SaveWebBinary = False
  286.       Set web = Nothing
  287.       Exit Function
  288.    End If
  289.    If web.Status <> "200" Then
  290.       SaveWebBinary = False
  291.       Set web = Nothing
  292.       Exit Function
  293.    End If
  294.    varByteArray = web.ResponseBody
  295.    Set web = Nothing
  296.    'Now save the file with any available method
  297.    On Error Resume Next
  298.    Set ado = Nothing
  299.    Set ado = CreateObject("ADODB.Stream" )
  300.    If ado Is Nothing Then
  301.       Set fs = CreateObject("Scripting.FileSystemObject" )
  302.       Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True)
  303.       strData = ""
  304.       strBuffer = ""
  305.       For lngCounter = 0 to UBound(varByteArray)
  306.          ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
  307.       Next
  308.       ts.Close
  309.    Else
  310.       ado.Type = adTypeBinary
  311.       ado.Open
  312.       ado.Write varByteArray
  313.       ado.SaveToFile CreateObject("WScript.Shell" ).ExpandEnvironmentStrings("%TEMP%" ) & "\" & strSetup, adSaveCreateOverWrite
  314.       ado.Close
  315.    End If
  316.    SaveWebBinary = True
  317. End Function
  318. Function ShowMessage(strMessage)
  319.    If LCase(Verbose) <> "no" Then
  320.       WScript.Echo strMessage
  321.    End If
  322. End Function
  323. '
  324. '
  325. ' MAIN
  326. '
  327. '
  328. Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell
  329. Set WshShell = WScript.CreateObject("WScript.shell" )
  330. nMinutesToAdvance = 5
  331. ' Get system architecture
  332. strSystemArchitecture = GetSystemArchitecture()
  333. If (strSystemArchitecture <> "x86" ) And (strSystemArchitecture <> "x64" ) Then
  334.    ShowMessage("The system architecture is unknown or not supported." )
  335.    ShowMessage("Deployment aborted!" )
  336.    WScript.Quit 1
  337. Else
  338.    ShowMessage("System architecture detected: " & strSystemArchitecture)
  339. End If
  340. ' Check and auto detect SetupArchitecture
  341. Select Case LCase(SetupArchitecture)
  342.    Case "x86"
  343.       ' The setup architecture is 32-bit
  344.       SetupArchitecture = "x86"
  345.       Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare)
  346.       ShowMessage("Setup architecture: " & SetupArchitecture)
  347.    Case "x64"
  348.       ' The setup architecture is 64-bit
  349.       SetupArchitecture = "x64"
  350.       Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare)
  351.       ShowMessage("Setup architecture: " & SetupArchitecture)
  352.    Case "auto"
  353.       ' Auto detection of SetupArchitecture
  354.       SetupArchitecture = strSystemArchitecture
  355.       Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare)
  356.       ShowMessage("Setup architecture detected: " & SetupArchitecture)
  357.    Case Else
  358.       ' The setup architecture is not supported
  359.       ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported." )
  360.       WScript.Quit 2
  361. End Select
  362. ' Check the relation between strSystemArchitecture and SetupArchitecture
  363. If (strSystemArchitecture = "x86" ) And (SetupArchitecture = "x64" ) Then
  364.    ' It isn't possible to execute a 64-bit setup on a 32-bit operative system
  365.    ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system." )
  366.    ShowMessage("Deployment aborted!" )
  367.    WScript.Quit 3
  368. End If
  369. If IsSelectedForce() Or IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then
  370.    If isHttp(SetupLocation) Then
  371.       ShowMessage("Downloading: " & SetupLocation & "/" & Setup)
  372.       If SaveWebBinary(SetupLocation, Setup) Then
  373.          strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%" )
  374.          strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%" )
  375.          ShowMessage("Running: """ & strTempDir & "\" & Setup & """ " & SetupOptions)
  376.          WshShell.Run """" & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True
  377.          ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """" )
  378.          WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True
  379.          ShowMessage("Deployment done!" )
  380.       Else
  381.          ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!" )
  382.       End If
  383.    Else
  384.       ShowMessage("Running: """ & SetupLocation & "\" & Setup & """ " & SetupOptions)
  385.       WshShell.Run "CMD.EXE /C """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True
  386.       ShowMessage("Deployment done!" )
  387.    End If
  388. Else
  389.    ShowMessage("It isn't needed the installation of '" & Setup & "'." )
  390. End If

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed