FUNCTION AddPrinter_IfNOTExist($_printer, OPTIONAL $_Default)
$AddPrinter_IfNOTExist = 0
$found = 0
$add_printer_attempts = 0
$add_printer_max_retries = 3
$_Default = Val($_Default)
$ret = ReadValue("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices", $_printer)
IF @ERROR = 0 $found = 1 ENDIF
IF $found = 0
DO
$add_printer_attempts = $add_printer_attempts + 1
$AddPrinter_IfNOTExist = ADDPRINTERCONNECTION($_printer)
IF $add_printer_attempts < $add_printer_max_retries
;retry on specific errors
IF $AddPrinter_IfNOTExist = 87
SLEEP 5
ELSE
$add_printer_attempts = $add_printer_max_retries + 1
ENDIF
ENDIF
UNTIL $AddPrinter_IfNOTExist = 0 OR $add_printer_attempts >= $add_printer_max_retries
IF $_Default = 1 AND $AddPrinter_IfNOTExist = 0
$ret = SETDEFAULTPRINTER($_printer)
ENDIF
ENDIF
ENDFUNCTION