diff --git a/install_printer.asp b/install_printer.asp index fbe08f1..58d0ae1 100644 --- a/install_printer.asp +++ b/install_printer.asp @@ -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)