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:
cproudlock
2025-12-08 13:10:59 -05:00
parent 97683e9b1a
commit c5fd338441

View File

@@ -195,10 +195,29 @@ Else
Response.Write("echo Installing " & printers.Count & " printer(s)..." & vbCrLf) Response.Write("echo Installing " & printers.Count & " printer(s)..." & vbCrLf)
Response.Write("echo." & 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 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 For Each printerKey In printers.Keys
Set printer = printers(printerKey) 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("" & vbCrLf)
Response.Write("echo ----------------------------------------" & vbCrLf) Response.Write("echo ----------------------------------------" & vbCrLf)
@@ -213,43 +232,51 @@ Else
Response.Write("echo ----------------------------------------" & vbCrLf) Response.Write("echo ----------------------------------------" & vbCrLf)
Response.Write("echo." & vbCrLf) Response.Write("echo." & vbCrLf)
If printer("installpath") <> "" Then Response.Write("echo Downloading specific installer..." & vbCrLf)
' Has specific installer - download and run it Response.Write("powershell -NoProfile -Command """ & _
Response.Write("echo Downloading specific installer..." & vbCrLf) "$ProgressPreference = 'SilentlyContinue'; " & _
Response.Write("powershell -NoProfile -Command """ & _ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _
"$ProgressPreference = 'SilentlyContinue'; " & _ "Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/" & printer("installpath") & "' " & _
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; " & _ "-OutFile '%TEMP%\printer_installer.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf)
"Invoke-WebRequest -Uri 'https://tsgwp00525.rd.ds.ge.com/shopdb/" & printer("installpath") & "' " & _ Response.Write("if exist ""%TEMP%\printer_installer.exe"" (" & vbCrLf)
"-OutFile '%TEMP%\printer_installer.exe' -UseBasicParsing -UseDefaultCredentials""" & vbCrLf) Response.Write(" echo Running installer..." & vbCrLf)
Response.Write("if exist ""%TEMP%\printer_installer.exe"" (" & vbCrLf) Response.Write(" ""%TEMP%\printer_installer.exe"" /SILENT" & vbCrLf)
Response.Write(" echo Running installer..." & vbCrLf) Response.Write(" del ""%TEMP%\printer_installer.exe"" 2>nul" & vbCrLf)
Response.Write(" ""%TEMP%\printer_installer.exe"" /SILENT" & vbCrLf) Response.Write(") else (" & vbCrLf)
Response.Write(" del ""%TEMP%\printer_installer.exe"" 2>nul" & vbCrLf) Response.Write(" echo ERROR: Could not download installer" & vbCrLf)
Response.Write(") else (" & vbCrLf) Response.Write(")" & 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." & vbCrLf) Response.Write("echo." & vbCrLf)
Next 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("" & vbCrLf)
Response.Write("echo ========================================" & vbCrLf) Response.Write("echo ========================================" & vbCrLf)
Response.Write("echo Installation Complete!" & vbCrLf) Response.Write("echo Installation Complete!" & vbCrLf)