Batch universal installer printers into single call
Instead of calling PrinterInstaller.exe separately for each printer (which opened multiple GUI wizards), now collects all printers without specific installers and passes them comma-separated in one call. - Specific installers still run individually with /SILENT - Universal installer printers batched: /PRINTER=Name1,Name2,Name3 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -195,10 +195,29 @@ Else
|
||||
Response.Write("echo Installing " & printers.Count & " printer(s)..." & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
|
||||
' Process each printer
|
||||
' Separate printers into two groups:
|
||||
' 1. Those with specific installers (run individually with /SILENT)
|
||||
' 2. Those using universal installer (batch into one call)
|
||||
Dim printerKey, printer
|
||||
Dim specificInstallers, universalPrinters, universalNames
|
||||
Set specificInstallers = Server.CreateObject("Scripting.Dictionary")
|
||||
Set universalPrinters = Server.CreateObject("Scripting.Dictionary")
|
||||
universalNames = ""
|
||||
|
||||
For Each printerKey In printers.Keys
|
||||
Set printer = printers(printerKey)
|
||||
If printer("installpath") <> "" Then
|
||||
specificInstallers.Add printerKey, printer
|
||||
Else
|
||||
universalPrinters.Add printerKey, printer
|
||||
If universalNames <> "" Then universalNames = universalNames & ","
|
||||
universalNames = universalNames & printer("standardname")
|
||||
End If
|
||||
Next
|
||||
|
||||
' Process printers with specific installers first (silent mode)
|
||||
For Each printerKey In specificInstallers.Keys
|
||||
Set printer = specificInstallers(printerKey)
|
||||
|
||||
Response.Write("" & vbCrLf)
|
||||
Response.Write("echo ----------------------------------------" & vbCrLf)
|
||||
@@ -213,43 +232,51 @@ Else
|
||||
Response.Write("echo ----------------------------------------" & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
|
||||
If printer("installpath") <> "" Then
|
||||
' Has specific installer - download and run it
|
||||
Response.Write("echo Downloading specific installer..." & vbCrLf)
|
||||
Response.Write("powershell -NoProfile -Command """ & _
|
||||
"$ProgressPreference = 'SilentlyContinue'; " & _
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _
|
||||
"Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/" & printer("installpath") & "' " & _
|
||||
"-OutFile '%TEMP%\printer_installer.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf)
|
||||
Response.Write("if exist ""%TEMP%\printer_installer.exe"" (" & vbCrLf)
|
||||
Response.Write(" echo Running installer..." & vbCrLf)
|
||||
Response.Write(" ""%TEMP%\printer_installer.exe"" /SILENT" & vbCrLf)
|
||||
Response.Write(" del ""%TEMP%\printer_installer.exe"" 2>nul" & vbCrLf)
|
||||
Response.Write(") else (" & vbCrLf)
|
||||
Response.Write(" echo ERROR: Could not download installer" & vbCrLf)
|
||||
Response.Write(")" & vbCrLf)
|
||||
Else
|
||||
' No specific installer - use universal PrinterInstaller.exe
|
||||
Response.Write("echo Using universal printer installer..." & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
Response.Write("echo Downloading PrinterInstaller.exe..." & vbCrLf)
|
||||
Response.Write("powershell -NoProfile -Command """ & _
|
||||
"$ProgressPreference = 'SilentlyContinue'; " & _
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _
|
||||
"Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/installers/PrinterInstaller.exe' " & _
|
||||
"-OutFile '%TEMP%\PrinterInstaller.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf)
|
||||
Response.Write("if exist ""%TEMP%\PrinterInstaller.exe"" (" & vbCrLf)
|
||||
Response.Write(" echo Running installer..." & vbCrLf)
|
||||
Response.Write(" ""%TEMP%\PrinterInstaller.exe"" ""/PRINTER=" & printer("standardname") & """" & vbCrLf)
|
||||
Response.Write(" del ""%TEMP%\PrinterInstaller.exe"" 2>nul" & vbCrLf)
|
||||
Response.Write(") else (" & vbCrLf)
|
||||
Response.Write(" echo ERROR: Could not download PrinterInstaller.exe" & vbCrLf)
|
||||
Response.Write(")" & vbCrLf)
|
||||
End If
|
||||
|
||||
Response.Write("echo Downloading specific installer..." & vbCrLf)
|
||||
Response.Write("powershell -NoProfile -Command """ & _
|
||||
"$ProgressPreference = 'SilentlyContinue'; " & _
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _
|
||||
"Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/" & printer("installpath") & "' " & _
|
||||
"-OutFile '%TEMP%\printer_installer.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf)
|
||||
Response.Write("if exist ""%TEMP%\printer_installer.exe"" (" & vbCrLf)
|
||||
Response.Write(" echo Running installer..." & vbCrLf)
|
||||
Response.Write(" ""%TEMP%\printer_installer.exe"" /SILENT" & vbCrLf)
|
||||
Response.Write(" del ""%TEMP%\printer_installer.exe"" 2>nul" & vbCrLf)
|
||||
Response.Write(") else (" & vbCrLf)
|
||||
Response.Write(" echo ERROR: Could not download installer" & vbCrLf)
|
||||
Response.Write(")" & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
Next
|
||||
|
||||
' Process universal installer printers (single call with all printer names)
|
||||
If universalPrinters.Count > 0 Then
|
||||
Response.Write("" & vbCrLf)
|
||||
Response.Write("echo ----------------------------------------" & vbCrLf)
|
||||
Response.Write("echo Installing " & universalPrinters.Count & " printer(s) via Universal Installer:" & vbCrLf)
|
||||
|
||||
For Each printerKey In universalPrinters.Keys
|
||||
Set printer = universalPrinters(printerKey)
|
||||
Response.Write("echo - " & printer("name") & vbCrLf)
|
||||
Next
|
||||
|
||||
Response.Write("echo ----------------------------------------" & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
Response.Write("echo Downloading PrinterInstaller.exe..." & vbCrLf)
|
||||
Response.Write("powershell -NoProfile -Command """ & _
|
||||
"$ProgressPreference = 'SilentlyContinue'; " & _
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _
|
||||
"Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/installers/PrinterInstaller.exe' " & _
|
||||
"-OutFile '%TEMP%\PrinterInstaller.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf)
|
||||
Response.Write("if exist ""%TEMP%\PrinterInstaller.exe"" (" & vbCrLf)
|
||||
Response.Write(" echo Running installer..." & vbCrLf)
|
||||
Response.Write(" ""%TEMP%\PrinterInstaller.exe"" ""/PRINTER=" & universalNames & """" & vbCrLf)
|
||||
Response.Write(" del ""%TEMP%\PrinterInstaller.exe"" 2>nul" & vbCrLf)
|
||||
Response.Write(") else (" & vbCrLf)
|
||||
Response.Write(" echo ERROR: Could not download PrinterInstaller.exe" & vbCrLf)
|
||||
Response.Write(")" & vbCrLf)
|
||||
Response.Write("echo." & vbCrLf)
|
||||
End If
|
||||
|
||||
Response.Write("" & vbCrLf)
|
||||
Response.Write("echo ========================================" & vbCrLf)
|
||||
Response.Write("echo Installation Complete!" & vbCrLf)
|
||||
|
||||
Reference in New Issue
Block a user