You are not logged in.
Pages: 1
Hello everyone,
Small problem, if someone has the solution.
I installed glpi 10 on Ubuntu server.
I use glpi agent to import computers.
I want to deploy the agent so I downloaded the vbs version but it doesn't work, and i haven't error..
Nothing in programes files, nothing in registry, nothing in glpi..
this is what the vbs return :
System architecture detected: x64
Setup architecture: x64
Installation needed: 1.1
Downloading: https://i can't write url
Running: MsiExec.exe /i "C:\Users\LOIC\AppData\Local\Temp\GLPI-Agent-1.1-x64.msi" /QUIET DEBUG=1 RUNNOW=1 SERVER='myserver'
Scheduling: DEL /Q /F "C:\Users\LOIC\AppData\Local\Temp\GLPI-Agent-1.1-x64.msi"
Deployment done!
***** script completed - exit code: 0 *****
thank you so much if someone help me
Purpose:
' GLPI Agent Unattended Deployment.
'
'
Option Explicit
Dim Repair, Verbose
Dim Setup, SetupArchitecture, SetupLocation, SetupNightlyLocation, SetupOptions, SetupVersion, RunUninstallFusionInventoryAgent
'
'
' USER SETTINGS
'
'
' SetupVersion
' Setup version with the pattern <major>.<minor>.<release>[-<package>]
'
SetupVersion = "1.1"
' When using a nightly built version, uncomment the following SetupVersion definition line
' replacing gitABCDEFGH with the most recent git revision found on the nightly builds site
' In that case, SetupNightlyLocation will be selected as location in place of SetupLocation
'SetupVersion = "1.0-gitABCDEFGH"
' SetupLocation
' Depending on your needs or your environment, you can use either a HTTP or
' CIFS/SMB.
'
' If you use HTTP, please, set to SetupLocation a URL:
'
' SetupLocation = "http://host[:port]/[absolut_path]" or
' SetupLocation = "https://host[:port]/[absolut_path]"
'
' If you use CIFS, please, set to SetupLocation a UNC path name:
'
' SetupLocation = "\\host\share\[path]"
'
' You also must be sure that you have removed the "Open File Security Warning"
' from programs accessed from that UNC.
'
' Location for Release Candidates
SetupLocation = "https://github.com/glpi-project/glpi-agent/releases/tag/" & SetupVersion
' Location for Nightly Builds
'SetupNightlyLocation = "https://nightly.glpi-project.org/glpi-agent/GLPI-Agent-1.2-git9418c6ef-x64.msi"
' SetupArchitecture
' The setup architecture can be 'x86', 'x64' or 'Auto'
'
' If you set SetupArchitecture = "Auto" be sure that both installers are in
' the same SetupLocation.
'
SetupArchitecture = "x64"
' SetupOptions
' Consult the online installer documentation to know its list of options.
' See: https://glpi-agent.readthedocs.io/en/latest/installation/windows-command-line.html#command-line-parameters
'
' You should use simple quotes (') to set between quotation marks those values
' that require it; double quotes (") doesn't work with UNCs.
'
SetupOptions = "/QUIET DEBUG=1 RUNNOW=1 SERVER='https://myserver'"
' Setup
' The installer file name. You should not have to modify this variable ever.
'
Setup = "GLPI-Agent-" & SetupVersion & "-" & SetupArchitecture & ".msi"
' Repair
' Repair the installation when Setup is still installed.
'
Repair = "No"
' Verbose
' Enable or disable the information messages.
'
' It's advisable to use Verbose = "Yes" with 'cscript //nologo ...'.
'
Verbose = "yes"
' RunUninstallFusionInventoryAgent
' Set to "Yes" to first uninstall FusionInventory Agent
' Also and unless SERVER or LOCAL are defined in SetupOptions, this script
' will try to get them from FusionInventory-Agent configuration found in registry
'
RunUninstallFusionInventoryAgent = "No"
'
'
' DO NOT EDIT BELOW
'
'
Function hasOption(opt)
Dim regEx
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = False
regEx.Pattern = "\b" & opt & "=.+\b"
hasOption = regEx.Test(SetupOptions)
End Function
Function uninstallFusionInventoryAgent()
Dim Uninstall, getValue
' Try to get SERVER and LOCAL from FIA configuration in registry if needed
If not hasOption("SERVER") then
On error resume next
getValue = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\server")
If err.number = 0 And getValue <> "" then
SetupOptions = SetupOptions & " SERVER='" & getValue & "'"
End If
End If
If not hasOption("LOCAL") then
On error resume next
getValue = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\local")
If err.number = 0 And getValue <> "" then
SetupOptions = SetupOptions & " LOCAL='" & getValue & "'"
End If
End If
' Verify normal case
On error resume next
Uninstall = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\UninstallString")
If err.number = 0 then
WshShell.Run "CMD.EXE /C net stop FusionInventory-Agent",0,True
WshShell.Run "CMD.EXE /C """ & Uninstall & """ /S /NOSPLASH",0,True
WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles%\FusionInventory-Agent"" /S /Q",0,True
End If
' Verify FIA x86 is installed on x64 OS
On error resume next
Uninstall = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\UninstallString")
If err.number = 0 then
WshShell.Run "CMD.EXE /C net stop FusionInventory-Agent",0,True
WshShell.Run "CMD.EXE /C """ & Uninstall & """ /S /NOSPLASH",0,True
WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles(x86)%\FusionInventory-Agent"" /S /Q",0,True
End If
End Function
Function AdvanceTime(nMinutes)
Dim nMinimalMinutes, dtmTimeFuture
' As protection
nMinimalMinutes = 5
If nMinutes < nMinimalMinutes Then
nMinutes = nMinimalMinutes
End If
' Add nMinutes to the current time
dtmTimeFuture = DateAdd ("n", nMinutes, Time)
' Format the result value
' The command AT accepts 'HH:MM' values only
AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture)
End Function
Function baseName (strng)
Dim regEx
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = ".*[/\\]([^/\\]+)$"
baseName = regEx.Replace(strng,"$1")
End Function
Function GetSystemArchitecture()
Dim strSystemArchitecture
Err.Clear
' Get operative system architecture
On Error Resume Next
strSystemArchitecture = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
If Err.Number = 0 Then
' Check the operative system architecture
Select Case strSystemArchitecture
Case "x86"
' The system architecture is 32-bit
GetSystemArchitecture = "x86"
Case "AMD64"
' The system architecture is 64-bit
GetSystemArchitecture = "x64"
Case Else
' The system architecture is not supported
GetSystemArchitecture = "NotSupported"
End Select
Else
' It has been not possible to get the system architecture
GetSystemArchitecture = "Unknown"
End If
End Function
Function isHttp(strng)
Dim regEx, matches
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "^(http(s?)).*"
If regEx.Execute(strng).count > 0 Then
isHttp = True
Else
isHttp = False
End If
Exit Function
End Function
Function isNightly(strng)
Dim regEx, matches
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "-(git[0-9a-f]{8})$"
If regEx.Execute(strng).count > 0 Then
isNightly = True
Else
isNightly = False
End If
Exit Function
End Function
Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture)
Dim strCurrentSetupVersion
' Compare the current version, whether it exists, with strSetupVersion
If strSystemArchitecture = "x86" Then
' The system architecture is 32-bit
' Check if the subkey 'SOFTWARE\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\GLPI-Agent\Installer' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
Else
' The system architecture is 64-bit
' Check if the subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' doesn't exist
Err.Clear
' Check if the subkey 'SOFTWARE\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\GLPI-Agent\Installer' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
End If
End If
End Function
Function IsSelectedRepair()
If LCase(Repair) <> "no" Then
ShowMessage("Installation repairing: " & SetupVersion)
IsSelectedRepair = True
Else
IsSelectedRepair = False
End If
End Function
' http://www.ericphelps.com/scripting/samples/wget/index.html
Function SaveWebBinary(strSetupLocation, strSetup)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl
strUrl = strSetupLocation & "/" & strSetup
'On Error Resume Next
'Download the file with any available object
Err.Clear
Set web = Nothing
Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "GET", strURL, False
web.Send
If Err.Number <> 0 Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
If web.Status <> "200" Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
varByteArray = web.ResponseBody
Set web = Nothing
'Now save the file with any available method
On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
If ado Is Nothing Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True)
strData = ""
strBuffer = ""
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
Else
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & strSetup, adSaveCreateOverWrite
ado.Close
End If
SaveWebBinary = True
End Function
Function ShowMessage(strMessage)
If LCase(Verbose) <> "no" Then
WScript.Echo strMessage
End If
End Function
'
'
' MAIN
'
'
Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell, strInstallOrRepair, bInstall
Set WshShell = WScript.CreateObject("WScript.shell")
nMinutesToAdvance = 5
If RunUninstallFusionInventoryAgent = "Yes" Then
uninstallFusionInventoryAgent()
End If
' Get system architecture
strSystemArchitecture = GetSystemArchitecture()
If (strSystemArchitecture <> "x86") And (strSystemArchitecture <> "x64") Then
ShowMessage("The system architecture is unknown or not supported.")
ShowMessage("Deployment aborted!")
WScript.Quit 1
Else
ShowMessage("System architecture detected: " & strSystemArchitecture)
End If
' Check and auto detect SetupArchitecture
Select Case LCase(SetupArchitecture)
Case "x86"
' The setup architecture is 32-bit
SetupArchitecture = "x86"
Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "x64"
' The setup architecture is 64-bit
SetupArchitecture = "x64"
Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "auto"
' Auto detection of SetupArchitecture
SetupArchitecture = strSystemArchitecture
Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture detected: " & SetupArchitecture)
Case Else
' The setup architecture is not supported
ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported.")
WScript.Quit 2
End Select
' Check the relation between strSystemArchitecture and SetupArchitecture
If (strSystemArchitecture = "x86") And (SetupArchitecture = "x64") Then
' It isn't possible to execute a 64-bit setup on a 32-bit operative system
ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system.")
ShowMessage("Deployment aborted!")
WScript.Quit 3
End If
bInstall = False
strInstallOrRepair = "/i"
If IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then
bInstall = True
ElseIf IsSelectedRepair() Then
strInstallOrRepair = "/fa"
bInstall = True
End If
If bInstall Then
If isNightly(SetupVersion) Then
SetupLocation = SetupNightlyLocation
End If
If isHttp(SetupLocation) Then
ShowMessage("Downloading: " & SetupLocation & "/" & Setup)
If SaveWebBinary(SetupLocation, Setup) Then
strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%")
strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%")
ShowMessage("Running: MsiExec.exe " & strInstallOrRepair & " """ & strTempDir & "\" & Setup & """ " & SetupOptions)
WshShell.Run "MsiExec.exe " & strInstallOrRepair & " """ & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """")
WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True
ShowMessage("Deployment done!")
Else
ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!")
End If
Else
ShowMessage("Running: MsiExec.exe " & strInstallOrRepair & " """ & SetupLocation & "\" & Setup & """ " & SetupOptions)
WshShell.Run "MsiExec.exe " & strInstallOrRepair & " """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Deployment done!")
End If
Else
ShowMessage("It isn't needed the installation of '" & Setup & "'.")
End If
Offline
Hi
Looks like wrong setupLocation url. Did you try check it? From your setup:
SetupVersion = "1.1"
SetupLocation = "https://github.com/glpi-project/glpi-ag … eases/tag/" & SetupVersion
SetupArchitecture = "x64"
Setup = "GLPI-Agent-" & SetupVersion & "-" & SetupArchitecture & ".msi"
What link we have?
github.com/glpi-project/glpi-agent/releases/tag/1.1/GLPI-Agent-1.1-x64.msi
But msi is not there.
github.com/glpi-project/glpi-agent/releases/download/1.1/GLPI-Agent-1.1-x64.msi
For me, it's better to download msi and change the location to my own share.
Last edited by WebGreg (2022-03-31 23:02:05)
--
GLPI 10.0.17
GLPI-Inventory 1.4.0
Ubuntu Server 20.04 LTS
Offline
ok thanks, i understand, but the problem, i didn't write this vbs so if i modify that, the part with functions doesn't work anymore,
so i have to find what is the good link
Last edited by lolo73sama (2022-04-07 09:00:24)
Offline
so i take the new version on vbs on the website,
the probleme if i delete \quiet it work , the install start but i want in silent mode..
'
Option Explicit
Dim Repair, Verbose
Dim Setup, SetupArchitecture, SetupLocation, SetupNightlyLocation, SetupOptions, SetupVersion, RunUninstallFusionInventoryAgent
SetupVersion = "1.1"
SetupLocation = "https://github.com/glpi-project/glpi-agent/releases/download/" & SetupVersion
SetupArchitecture = "Auto"
SetupOptions = "/quiet DEBUG=1 RUNNOW=1 SERVER='myserver'"
Setup = "GLPI-Agent-" & SetupVersion & "-" & SetupArchitecture & ".msi"
Verbose = "yes"
RunUninstallFusionInventoryAgent = "No"
'
'
' DO NOT EDIT BELOW
'
'
Function hasOption(opt)
Dim regEx
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = False
regEx.Pattern = "\b" & opt & "=.+\b"
hasOption = regEx.Test(SetupOptions)
End Function
Function uninstallFusionInventoryAgent()
Dim Uninstall, getValue
' Try to get SERVER and LOCAL from FIA configuration in registry if needed
If not hasOption("SERVER") then
On error resume next
getValue = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\server")
If err.number = 0 And getValue <> "" then
SetupOptions = SetupOptions & " SERVER='" & getValue & "'"
End If
End If
If not hasOption("LOCAL") then
On error resume next
getValue = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\local")
If err.number = 0 And getValue <> "" then
SetupOptions = SetupOptions & " LOCAL='" & getValue & "'"
End If
End If
' Verify normal case
On error resume next
Uninstall = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\UninstallString")
If err.number = 0 then
WshShell.Run "CMD.EXE /C net stop FusionInventory-Agent",0,True
WshShell.Run "CMD.EXE /C """ & Uninstall & """ /S /NOSPLASH",0,True
WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles%\FusionInventory-Agent"" /S /Q",0,True
End If
' Verify FIA x86 is installed on x64 OS
On error resume next
Uninstall = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\UninstallString")
If err.number = 0 then
WshShell.Run "CMD.EXE /C net stop FusionInventory-Agent",0,True
WshShell.Run "CMD.EXE /C """ & Uninstall & """ /S /NOSPLASH",0,True
WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles(x86)%\FusionInventory-Agent"" /S /Q",0,True
End If
End Function
Function AdvanceTime(nMinutes)
Dim nMinimalMinutes, dtmTimeFuture
' As protection
nMinimalMinutes = 5
If nMinutes < nMinimalMinutes Then
nMinutes = nMinimalMinutes
End If
' Add nMinutes to the current time
dtmTimeFuture = DateAdd ("n", nMinutes, Time)
' Format the result value
' The command AT accepts 'HH:MM' values only
AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture)
End Function
Function baseName (strng)
Dim regEx
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = ".*[/\\]([^/\\]+)$"
baseName = regEx.Replace(strng,"$1")
End Function
Function GetSystemArchitecture()
Dim strSystemArchitecture
Err.Clear
' Get operative system architecture
On Error Resume Next
strSystemArchitecture = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
If Err.Number = 0 Then
' Check the operative system architecture
Select Case strSystemArchitecture
Case "x86"
' The system architecture is 32-bit
GetSystemArchitecture = "x86"
Case "AMD64"
' The system architecture is 64-bit
GetSystemArchitecture = "x64"
Case Else
' The system architecture is not supported
GetSystemArchitecture = "NotSupported"
End Select
Else
' It has been not possible to get the system architecture
GetSystemArchitecture = "Unknown"
End If
End Function
Function isHttp(strng)
Dim regEx, matches
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "^(http(s?)).*"
If regEx.Execute(strng).count > 0 Then
isHttp = True
Else
isHttp = False
End If
Exit Function
End Function
Function isNightly(strng)
Dim regEx, matches
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "-(git[0-9a-f]{8})$"
If regEx.Execute(strng).count > 0 Then
isNightly = True
Else
isNightly = False
End If
Exit Function
End Function
Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture)
Dim strCurrentSetupVersion
' Compare the current version, whether it exists, with strSetupVersion
If strSystemArchitecture = "x86" Then
' The system architecture is 32-bit
' Check if the subkey 'SOFTWARE\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\GLPI-Agent\Installer' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
Else
' The system architecture is 64-bit
' Check if the subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\Wow6432Node\GLPI-Agent\Installer' doesn't exist
Err.Clear
' Check if the subkey 'SOFTWARE\GLPI-Agent\Installer' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\Installer\Version")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\GLPI-Agent\Installer' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\GLPI-Agent\Installer' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
End If
End If
End Function
Function IsSelectedRepair()
If LCase(Repair) <> "no" Then
ShowMessage("Installation repairing: " & SetupVersion)
IsSelectedRepair = True
Else
IsSelectedRepair = False
End If
End Function
' http://www.ericphelps.com/scripting/samples/wget/index.html
Function SaveWebBinary(strSetupLocation, strSetup)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl
strUrl = strSetupLocation & "/" & strSetup
'On Error Resume Next
'Download the file with any available object
Err.Clear
Set web = Nothing
Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "GET", strURL, False
web.Send
If Err.Number <> 0 Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
If web.Status <> "200" Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
varByteArray = web.ResponseBody
Set web = Nothing
'Now save the file with any available method
On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
If ado Is Nothing Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True)
strData = ""
strBuffer = ""
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
Else
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & strSetup, adSaveCreateOverWrite
ado.Close
End If
SaveWebBinary = True
End Function
Function ShowMessage(strMessage)
If LCase(Verbose) <> "no" Then
WScript.Echo strMessage
End If
End Function
'
'
' MAIN
'
'
Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell, strInstallOrRepair, bInstall
Set WshShell = WScript.CreateObject("WScript.shell")
nMinutesToAdvance = 5
If RunUninstallFusionInventoryAgent = "Yes" Then
uninstallFusionInventoryAgent()
End If
' Get system architecture
strSystemArchitecture = GetSystemArchitecture()
If (strSystemArchitecture <> "x86") And (strSystemArchitecture <> "x64") Then
ShowMessage("The system architecture is unknown or not supported.")
ShowMessage("Deployment aborted!")
WScript.Quit 1
Else
ShowMessage("System architecture detected: " & strSystemArchitecture)
End If
' Check and auto detect SetupArchitecture
Select Case LCase(SetupArchitecture)
Case "x86"
' The setup architecture is 32-bit
SetupArchitecture = "x86"
Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "x64"
' The setup architecture is 64-bit
SetupArchitecture = "x64"
Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "auto"
' Auto detection of SetupArchitecture
SetupArchitecture = strSystemArchitecture
Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture detected: " & SetupArchitecture)
Case Else
' The setup architecture is not supported
ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported.")
WScript.Quit 2
End Select
' Check the relation between strSystemArchitecture and SetupArchitecture
If (strSystemArchitecture = "x86") And (SetupArchitecture = "x64") Then
' It isn't possible to execute a 64-bit setup on a 32-bit operative system
ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system.")
ShowMessage("Deployment aborted!")
WScript.Quit 3
End If
bInstall = False
strInstallOrRepair = "/i"
If IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then
bInstall = True
ElseIf IsSelectedRepair() Then
strInstallOrRepair = "/fa"
bInstall = True
End If
If bInstall Then
If isNightly(SetupVersion) Then
SetupLocation = SetupNightlyLocation
End If
If isHttp(SetupLocation) Then
ShowMessage("Downloading: " & SetupLocation & "/" & Setup)
If SaveWebBinary(SetupLocation, Setup) Then
strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%")
strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%")
ShowMessage("Running: MsiExec.exe " & strInstallOrRepair & " """ & strTempDir & "\" & Setup & """ " & SetupOptions)
WshShell.Run "MsiExec.exe " & strInstallOrRepair & " """ & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """")
WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True
ShowMessage("Deployment done!")
Else
ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!")
End If
Else
ShowMessage("Running: MsiExec.exe " & strInstallOrRepair & " """ & SetupLocation & "\" & Setup & """ " & SetupOptions)
WshShell.Run "MsiExec.exe " & strInstallOrRepair & " """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Deployment done!")
End If
Else
ShowMessage("It isn't needed the installation of '" & Setup & "'.")
End If
Last edited by lolo73sama (2022-04-07 09:02:55)
Offline
ok thanks, i understand, but the problem, i didn't write this vbs so if i modify that, the part with functions doesn't work anymore,
so i have to find what is the good link
I don't understand this. You can modify everything - but you have to know what you are doing and do it the right way.
Did you try to set the correct download link? In the example you showed change "/tag/" to "/download/"?
--
GLPI 10.0.17
GLPI-Inventory 1.4.0
Ubuntu Server 20.04 LTS
Offline
yes look my last post
lolo73sama wrote:ok thanks, i understand, but the problem, i didn't write this vbs so if i modify that, the part with functions doesn't work anymore,
so i have to find what is the good linkI don't understand this. You can modify everything - but you have to know what you are doing and do it the right way.
Did you try to set the correct download link? In the example you showed change "/tag/" to "/download/"?
Offline
Hi
It's hard to say - it works for me.
SetupOptions = "/quiet RUNNOW=1 EXECMODE=1 NO_SSL_CHECK=1 HTTPD_TRUST=[some_ip] HTTPD_PORT=[myPort] SERVER='https://[myServer]/front/inventory.php' LOGFILE='C:\myFolder\GLPI\glpi-agent.log' LOCAL='C:\myFolder\GLPI\' HTML=1"
Last edited by WebGreg (2022-05-02 13:10:45)
--
GLPI 10.0.17
GLPI-Inventory 1.4.0
Ubuntu Server 20.04 LTS
Offline
thank you so much if someone help me
Offline
You need the admin rights to use the "/quiet" in the command line. Do you have them ? If you're not sure, you can try to replace "/quiet" with "/passive /qn", it basically does the same thing.
Offline
Hi, i test with passive but nothing happen .. yes i have admin rights
You need the admin rights to use the "/quiet" in the command line. Do you have them ? If you're not sure, you can try to replace "/quiet" with "/passive /qn", it basically does the same thing.
Offline
Try to download the installer and specify a location on a local resource.
--
GLPI 10.0.17
GLPI-Inventory 1.4.0
Ubuntu Server 20.04 LTS
Offline
same problem
Try to download the installer and specify a location on a local resource.
Offline
This is what I use. When I compared the content of the script itself below the part that should not be edited - there are differences.
Option Explicit
Dim Force, Verbose
Dim Setup, SetupArchitecture, SetupLocation, SetupOptions, SetupVersion
' USER SETTINGS
SetupVersion = "1.2"
SetupLocation = "http://myServer/glpi-agents"
SetupArchitecture = "Auto"
SetupOptions = "/quiet RUNNOW=1 EXECMODE=1 NO_SSL_CHECK=1 HTTPD_TRUST=192.168.1.145 SERVER='https://myServer'"
Setup = "GLPI-Agent-" & SetupVersion & "-" & SetupArchitecture & ".msi"
Force = "No"
Verbose = "No"
'
'
' DO NOT EDIT BELOW
'
'
Function AdvanceTime(nMinutes)
Dim nMinimalMinutes, dtmTimeFuture
' As protection
nMinimalMinutes = 5
If nMinutes < nMinimalMinutes Then
nMinutes = nMinimalMinutes
End If
' Add nMinutes to the current time
dtmTimeFuture = DateAdd ("n", nMinutes, Time)
' Format the result value
' The command AT accepts 'HH:MM' values only
AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture)
End Function
Function baseName (strng)
Dim regEx, ret
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = ".*[/\\]([^/\\]+)$"
baseName = regEx.Replace(strng,"$1")
End Function
Function GetSystemArchitecture()
Dim strSystemArchitecture
Err.Clear
' Get operative system architecture
On Error Resume Next
strSystemArchitecture = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
If Err.Number = 0 Then
' Check the operative system architecture
Select Case strSystemArchitecture
Case "x86"
' The system architecture is 32-bit
GetSystemArchitecture = "x86"
Case "AMD64"
' The system architecture is 64-bit
GetSystemArchitecture = "x64"
Case Else
' The system architecture is not supported
GetSystemArchitecture = "NotSupported"
End Select
Else
' It has been not possible to get the system architecture
GetSystemArchitecture = "Unknown"
End If
End Function
Function isHttp(strng)
Dim regEx, matches
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "^(http(s?)).*"
If regEx.Execute(strng).count > 0 Then
isHttp = True
Else
isHttp = False
End If
Exit Function
End Function
Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture)
Dim strCurrentSetupVersion
' Compare the current version, whether it exists, with strSetupVersion
If strSystemArchitecture = "x86" Then
' The system architecture is 32-bit
' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2D867E73-6BF5-1014-BC86-AD002C3B00E0}\DisplayVersion")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
Else
' The system architecture is 64-bit
' Check if the subkey 'SOFTWARE\Microsoft\Wow6432Node\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{2D867E73-6BF5-1014-BC86-AD002C3B00E0}\DisplayVersion")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist
Err.Clear
' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
On error resume next
strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FA01074A-6BF8-1014-B0E8-F9F8208C43AB}\DisplayVersion")
If Err.Number = 0 Then
' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists
If strCurrentSetupVersion <> strSetupVersion Then
ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
IsInstallationNeeded = True
End If
Exit Function
Else
' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist
Err.Clear
ShowMessage("Installation needed: " & strSetupVersion)
IsInstallationNeeded = True
End If
End If
End If
End Function
Function IsSelectedForce()
If LCase(Force) <> "no" Then
ShowMessage("Installation forced: " & SetupVersion)
IsSelectedForce = True
Else
IsSelectedForce = False
End If
End Function
' http://www.ericphelps.com/scripting/samples/wget/index.html
Function SaveWebBinary(strSetupLocation, strSetup)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl
strUrl = strSetupLocation & "/" & strSetup
'On Error Resume Next
'Download the file with any available object
Err.Clear
Set web = Nothing
Set web = CreateObject("WinHttp.WinHttpRequest.5.1")
If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest")
If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP")
If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP")
web.Open "GET", strURL, False
web.Send
If Err.Number <> 0 Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
If web.Status <> "200" Then
SaveWebBinary = False
Set web = Nothing
Exit Function
End If
varByteArray = web.ResponseBody
Set web = Nothing
'Now save the file with any available method
On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
If ado Is Nothing Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True)
strData = ""
strBuffer = ""
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
Else
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & strSetup, adSaveCreateOverWrite
ado.Close
End If
SaveWebBinary = True
End Function
Function ShowMessage(strMessage)
If LCase(Verbose) <> "no" Then
WScript.Echo strMessage
End If
End Function
'
'
' MAIN
'
'
Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell
Set WshShell = WScript.CreateObject("WScript.shell")
nMinutesToAdvance = 5
' Get system architecture
strSystemArchitecture = GetSystemArchitecture()
If (strSystemArchitecture <> "x86") And (strSystemArchitecture <> "x64") Then
ShowMessage("The system architecture is unknown or not supported.")
ShowMessage("Deployment aborted!")
WScript.Quit 1
Else
ShowMessage("System architecture detected: " & strSystemArchitecture)
End If
' Check and auto detect SetupArchitecture
Select Case LCase(SetupArchitecture)
Case "x86"
' The setup architecture is 32-bit
SetupArchitecture = "x86"
Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "x64"
' The setup architecture is 64-bit
SetupArchitecture = "x64"
Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture: " & SetupArchitecture)
Case "auto"
' Auto detection of SetupArchitecture
SetupArchitecture = strSystemArchitecture
Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare)
ShowMessage("Setup architecture detected: " & SetupArchitecture)
Case Else
' The setup architecture is not supported
ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported.")
WScript.Quit 2
End Select
' Check the relation between strSystemArchitecture and SetupArchitecture
If (strSystemArchitecture = "x86") And (SetupArchitecture = "x64") Then
' It isn't possible to execute a 64-bit setup on a 32-bit operative system
ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system.")
ShowMessage("Deployment aborted!")
WScript.Quit 3
End If
If IsSelectedForce() Or IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then
If isHttp(SetupLocation) Then
ShowMessage("Downloading: " & SetupLocation & "/" & Setup)
If SaveWebBinary(SetupLocation, Setup) Then
strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%")
strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%")
ShowMessage("Running: """ & strTempDir & "\" & Setup & """ " & SetupOptions)
WshShell.Run """" & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """")
WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True
ShowMessage("Deployment done!")
Else
ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!")
End If
Else
ShowMessage("Running: """ & SetupLocation & "\" & Setup & """ " & SetupOptions)
WshShell.Run "CMD.EXE /C """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True
ShowMessage("Deployment done!")
End If
Else
ShowMessage("It isn't needed the installation of '" & Setup & "'.")
End If
--
GLPI 10.0.17
GLPI-Inventory 1.4.0
Ubuntu Server 20.04 LTS
Offline
i take the last version here
(add https) raw.githubusercontent.com/glpi-project/glpi-agent/develop/contrib/windows/glpi-agent-deployment.vbs
and i juste change my server location i touch nothing else
i test your code but same problem
This is what I use. When I compared the content of the script itself below the part that should not be edited - there are differences.
Option Explicit Dim Force, Verbose Dim Setup, SetupArchitecture, SetupLocation, SetupOptions, SetupVersion ' USER SETTINGS SetupVersion = "1.2" SetupLocation = "http://myServer/glpi-agents" SetupArchitecture = "Auto" SetupOptions = "/quiet RUNNOW=1 EXECMODE=1 NO_SSL_CHECK=1 HTTPD_TRUST=192.168.1.145 SERVER='https://myServer'" Setup = "GLPI-Agent-" & SetupVersion & "-" & SetupArchitecture & ".msi" Force = "No" Verbose = "No" ' ' ' DO NOT EDIT BELOW ' ' Function AdvanceTime(nMinutes) Dim nMinimalMinutes, dtmTimeFuture ' As protection nMinimalMinutes = 5 If nMinutes < nMinimalMinutes Then nMinutes = nMinimalMinutes End If ' Add nMinutes to the current time dtmTimeFuture = DateAdd ("n", nMinutes, Time) ' Format the result value ' The command AT accepts 'HH:MM' values only AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture) End Function Function baseName (strng) Dim regEx, ret Set regEx = New RegExp regEx.Global = true regEx.IgnoreCase = True regEx.Pattern = ".*[/\\]([^/\\]+)$" baseName = regEx.Replace(strng,"$1") End Function Function GetSystemArchitecture() Dim strSystemArchitecture Err.Clear ' Get operative system architecture On Error Resume Next strSystemArchitecture = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") If Err.Number = 0 Then ' Check the operative system architecture Select Case strSystemArchitecture Case "x86" ' The system architecture is 32-bit GetSystemArchitecture = "x86" Case "AMD64" ' The system architecture is 64-bit GetSystemArchitecture = "x64" Case Else ' The system architecture is not supported GetSystemArchitecture = "NotSupported" End Select Else ' It has been not possible to get the system architecture GetSystemArchitecture = "Unknown" End If End Function Function isHttp(strng) Dim regEx, matches Set regEx = New RegExp regEx.Global = true regEx.IgnoreCase = True regEx.Pattern = "^(http(s?)).*" If regEx.Execute(strng).count > 0 Then isHttp = True Else isHttp = False End If Exit Function End Function Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture) Dim strCurrentSetupVersion ' Compare the current version, whether it exists, with strSetupVersion If strSystemArchitecture = "x86" Then ' The system architecture is 32-bit ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists On error resume next strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2D867E73-6BF5-1014-BC86-AD002C3B00E0}\DisplayVersion") If Err.Number = 0 Then ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists If strCurrentSetupVersion <> strSetupVersion Then ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion) IsInstallationNeeded = True End If Exit Function Else ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist Err.Clear ShowMessage("Installation needed: " & strSetupVersion) IsInstallationNeeded = True End If Else ' The system architecture is 64-bit ' Check if the subkey 'SOFTWARE\Microsoft\Wow6432Node\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists On error resume next strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{2D867E73-6BF5-1014-BC86-AD002C3B00E0}\DisplayVersion") If Err.Number = 0 Then ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists If strCurrentSetupVersion <> strSetupVersion Then ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion) IsInstallationNeeded = True End If Exit Function Else ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist Err.Clear ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists On error resume next strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FA01074A-6BF8-1014-B0E8-F9F8208C43AB}\DisplayVersion") If Err.Number = 0 Then ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' exists If strCurrentSetupVersion <> strSetupVersion Then ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion) IsInstallationNeeded = True End If Exit Function Else ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GLPI-Agent' doesn't exist Err.Clear ShowMessage("Installation needed: " & strSetupVersion) IsInstallationNeeded = True End If End If End If End Function Function IsSelectedForce() If LCase(Force) <> "no" Then ShowMessage("Installation forced: " & SetupVersion) IsSelectedForce = True Else IsSelectedForce = False End If End Function ' http://www.ericphelps.com/scripting/samples/wget/index.html Function SaveWebBinary(strSetupLocation, strSetup) Const adTypeBinary = 1 Const adSaveCreateOverWrite = 2 Const ForWriting = 2 Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl strUrl = strSetupLocation & "/" & strSetup 'On Error Resume Next 'Download the file with any available object Err.Clear Set web = Nothing Set web = CreateObject("WinHttp.WinHttpRequest.5.1") If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest") If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP") If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP") web.Open "GET", strURL, False web.Send If Err.Number <> 0 Then SaveWebBinary = False Set web = Nothing Exit Function End If If web.Status <> "200" Then SaveWebBinary = False Set web = Nothing Exit Function End If varByteArray = web.ResponseBody Set web = Nothing 'Now save the file with any available method On Error Resume Next Set ado = Nothing Set ado = CreateObject("ADODB.Stream") If ado Is Nothing Then Set fs = CreateObject("Scripting.FileSystemObject") Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True) strData = "" strBuffer = "" For lngCounter = 0 to UBound(varByteArray) ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) Next ts.Close Else ado.Type = adTypeBinary ado.Open ado.Write varByteArray ado.SaveToFile CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") & "\" & strSetup, adSaveCreateOverWrite ado.Close End If SaveWebBinary = True End Function Function ShowMessage(strMessage) If LCase(Verbose) <> "no" Then WScript.Echo strMessage End If End Function ' ' ' MAIN ' ' Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell Set WshShell = WScript.CreateObject("WScript.shell") nMinutesToAdvance = 5 ' Get system architecture strSystemArchitecture = GetSystemArchitecture() If (strSystemArchitecture <> "x86") And (strSystemArchitecture <> "x64") Then ShowMessage("The system architecture is unknown or not supported.") ShowMessage("Deployment aborted!") WScript.Quit 1 Else ShowMessage("System architecture detected: " & strSystemArchitecture) End If ' Check and auto detect SetupArchitecture Select Case LCase(SetupArchitecture) Case "x86" ' The setup architecture is 32-bit SetupArchitecture = "x86" Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare) ShowMessage("Setup architecture: " & SetupArchitecture) Case "x64" ' The setup architecture is 64-bit SetupArchitecture = "x64" Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare) ShowMessage("Setup architecture: " & SetupArchitecture) Case "auto" ' Auto detection of SetupArchitecture SetupArchitecture = strSystemArchitecture Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare) ShowMessage("Setup architecture detected: " & SetupArchitecture) Case Else ' The setup architecture is not supported ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported.") WScript.Quit 2 End Select ' Check the relation between strSystemArchitecture and SetupArchitecture If (strSystemArchitecture = "x86") And (SetupArchitecture = "x64") Then ' It isn't possible to execute a 64-bit setup on a 32-bit operative system ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system.") ShowMessage("Deployment aborted!") WScript.Quit 3 End If If IsSelectedForce() Or IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then If isHttp(SetupLocation) Then ShowMessage("Downloading: " & SetupLocation & "/" & Setup) If SaveWebBinary(SetupLocation, Setup) Then strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%") strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%") ShowMessage("Running: """ & strTempDir & "\" & Setup & """ " & SetupOptions) WshShell.Run """" & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """") WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True ShowMessage("Deployment done!") Else ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!") End If Else ShowMessage("Running: """ & SetupLocation & "\" & Setup & """ " & SetupOptions) WshShell.Run "CMD.EXE /C """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True ShowMessage("Deployment done!") End If Else ShowMessage("It isn't needed the installation of '" & Setup & "'.") End If
Last edited by lolo73sama (2022-05-16 15:25:01)
Offline
If you put this between the Dim lines and the User settings, does it change something ?
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
WScript.Quit
End If
Offline
hmm check if you're not blocked on your UTM. Do a test, log in on a test PC with admin login and deploy there agent from a second PC with the same admin account.
Offline
Pages: 1