;-------------------------------------------------------------------- ; QMS DeskLaser600 printer setup for Windows NT ;-------------------------------------------------------------------- [ProcessorID] ProcessorID_I386 = I386 ProcessorID_I486 = I486 ProcessorID_I586 = I586 [PlatformID] PlatformID_I386 = I386 [ProcessorVar] STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor [LanguageVar] STF_LANGUAGE = "" ? $(!LIBHANDLE) GetLanguage [UiVars] STF_NTDRIVE = "" STF_NTPATH = "" STF_WINDOWSPATH = "" ? $(!LIBHANDLE) GetWindowsNtDir STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir STF_PRNMONITORPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir STF_INSTALL_MODE = "CUSTOM" STF_INSTALL_TYPE = "MAINTENANCE" STF_UPGRADE = "YES" STF_CONTROLSET = "CurrentControlSet" STF_COMPUTERNAME = "" ? $(!LIBHANDLE) GetMyComputerName [VarsI386] DefaultVideo = "VGA" [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = I386 [Shell Commands] set Exit_Code = $(!SETUP_ERROR_GENERAL) ; ;Set Titel ; set-title "QMS DeskLaser600 Printer Setup" LoadLibrary "x" $(!STF_CWDDIR)\setupdll.dll !LIBHANDLE set-subst LF = "\n" StartWait read-syms LanguageVar detect LanguageVar read-syms ProcessorID read-syms PlatformID read-syms ProductType read-syms ProcessorVar detect ProcessorVar read-syms MsgStrings$(!STF_LANGUAGE) ifstr(i) $(STF_PLATFORM) != $(PlatformID_I386) EndWait shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(MsgString10) StartWait goto end endif read-syms Vars$(!STF_PLATFORM) Split-String $(!STF_SRCINFPATH) "\\" DestinationList QueryListSize ListSize $(DestinationList) set STF_SRCDIR = "" ForListDo $(DestinationList) ifint $(#) != $(ListSize) set STF_SRCDIR = $(!STF_SRCDIR)$($) endif EndForListDo read-syms UiVars detect UiVars set !STF_NTPATH = $(!STF_WINDOWSSYSPATH) GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH) shell "registry.inf" CheckSetupModify ifint $($ShellCode) != $(!SHELL_CODE_OK) goto end else-ifstr(i) $($R0) != STATUS_SUCCESSFUL EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString3) StartWait goto end endif set HelpDisp = 0 Welcome = + ; read-syms CustomDlgMsg$(!STF_LANGUAGE) EndWait ui start "WELCOME" ifstr(i) $(DLGEVENT) == "OK" ui pop 1 StartWait goto dosetup else ui pop 1 StartWait set Exit_Code = $(!SETUP_ERROR_USERCANCEL) goto end endif dosetup = + shell "" DoInstall ifint $($ShellCode) != $(!SHELL_CODE_OK) goto end endif ifstr(i) $($R0) == STATUS_SUCCESSFUL set Exit_Code = $(!SETUP_ERROR_SUCCESS) else-ifstr(i) $($R0) == STATUS_USERCANCEL set Exit_Code = $(!SETUP_ERROR_USERCANCEL) endif end = + EndWait FreeLibrary $(!LIBHANDLE) exit [DoInstall] set Status = STATUS_FAILED read-syms MsgStrings$(!STF_LANGUAGE) set SrcDir = $(!STF_SRCDIR) ; ; [ Parallel Class Driver ] ; shell "" GetInstalledOptions $(!STF_LANGUAGE) ifint $($ShellCode) != $(!SHELL_CODE_OK) EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString1) goto skip_install endif ifstr(i) $($R0) != STATUS_SUCCESSFUL EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString1) set Status = $($R0) goto skip_install endif QueryListSize ListSize $($R1) shell "" InstallOption $(!STF_LANGUAGE) "M353Par" $(SrcDir) "YES" "YES" "YES" ifint $($ShellCode) != $(!SHELL_CODE_OK) EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString1) goto skip_install endif ifstr(i) $($R0) != STATUS_SUCCESSFUL set Status = $($R0) EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString1) goto skip_install endif ; ; [ Status Monitor ] ; install AddFilesToCopyList_StMonitor ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS" Debug-Output "Adding files to copy list failed" EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString2) goto skip_install endif read-syms ProgressCopy$(!STF_LANGUAGE) install InstallCopyFilesOption ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE" Debug-Output "Copying files failed" EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString2) goto skip_install else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT" set Status = STATUS_USERCANCEL EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(MsgString2) goto skip_install endif set Status = STATUS_SUCCESSFUL EndWait shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "STATUS" $(MsgString12) skip_install = + StartWait Return $(Status) [AddFilesToCopyList_StMonitor] ; ; Add the files to the copy list ; AddSectionFilesToCopyList StatusMonitorFiles + $(SrcDir) + $(!STF_WINDOWSSYSPATH) exit [AddFilesToCopyList_ClassDriver] ; ; Add the files to the copy list ; AddSectionKeyFileToCopyList Files-Drivers + $(OurDriver) + $(SrcDir) + $(!STF_WINDOWSSYSPATH)\drivers exit [InstallCopyFilesOption] ; ; Copy files in the copy list ; CopyFilesInCopyList exit ;------------------------------------------------------------------------ ;InstallOption: ;------------------------------------------------------------------------ [InstallOption] ; ; Set default values for ; set Status = STATUS_FAILED ; set DrivesToFree = {} ; ; Check if NONE or UNKNOWN ; ifstr(i) $($1) == NONE set Status = STATUS_SUCCESSFUL goto finish_InstallOption else-ifstr(i) $($1) == UNKNOWN set Status = STATUS_SUCCESSFUL goto finish_InstallOption endif ; ; extract parameters ; set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) ; ; Check if the language requested is supported ; set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) else set Status = STATUS_NOLANGUAGE goto finish_InstallOption endif read-syms Strings$($0) ; ; check to see if Option is supported. ; set OptionList = ^(Options, 0) ifcontains $(Option) in $(OptionList) else goto finish_InstallOption endif set OptionList = "" ; ; Option has been defined already ; set OurDriver = #(Options, $(Option), 1) set Type = $(#(Drivers, $(OurDriver), 1)) set Group = #(Drivers, $(OurDriver), 2) set ErrorControl = $(#(Drivers, $(OurDriver), 3)) set Dependencies = #(Drivers, $(OurDriver), 4) set EventMessageFile = #(Drivers, $(OurDriver), 5) set TypesSupported = #(Drivers, $(OurDriver), 6) set Start = $(#(DriversStart, $(OurDriver), 1)) set DependOnGroup = {"Parallel arbitrator"} set DependOnService = {"Parport"} set ParametersValues = { + {"TransferType", $(Notitle), $(!REG_VT_DWORD), 0 }, + {"UseNT35Priority", $(Notitle), $(!REG_VT_DWORD), 1 }, + {"DosDevice", $(Notitle), $(!REG_VT_SZ), "Bi_LPT"}, + {"BusyTime", $(Notitle), $(!REG_VT_DWORD), 3000} } installtheoption = + ; ; Code to add files to copy list ; ifstr(i) $(AddCopy) == "YES" set DoActualCopy = NO set FileToCheck = #(Files-Drivers, $(OurDriver), 2) LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck) ifstr(i) $(STATUS) == NO set DoActualCopy = YES endif ifstr(i) $(DoActualCopy) == NO shell "subroutn.inf" DriversExist $($0) $(String1) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMSETUP.INF: shelling DriversExist failed" goto finish_InstallOption endif ifstr(i) $($R0) == STATUS_CURRENT else-ifstr(i) $($R0) == STATUS_NEW set DoActualCopy = YES else-ifstr(i) $($R0) == STATUS_USERCANCEL Debug-Output "OEMSETUP.INF: User cancelled driver installation" goto finish_InstallOption else Debug-Output "OEMSETUP.INF: Error reported in DriversExist routine in SUBROUTN.INF" goto finish_InstallOption endif endif ifstr(i) $(DoActualCopy) == YES ; shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2) ; ifint $($ShellCode) != $(!SHELL_CODE_OK) ; Debug-Output "OEMSETUP.INF: shelling DoAskSource failed" ; goto finish_InstallOption ; endif ; ; ifstr(i) $($R0) == STATUS_SUCCESSFUL ; set SrcDir = $($R1) ; ifstr(i) $($R2) != "" ; set DrivesToFree = >($(DrivesToFree), $($R2)) ; endif ; else ; Debug-Output "OEMSETUP.INF: User cancelled asking source." ; goto finish_InstallOption ; endif install AddFilesToCopyList_ClassDriver ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS" Debug-Output "Adding mouse files to copy list failed" goto finish_InstallOption endif else set DoCopy = NO endif endif ifstr(i) $(DoCopy) == "YES" read-syms ProgressCopy$($0) install InstallCopyFilesOption ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE" Debug-Output "Copying files failed" goto finish_InstallOption else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT" set Status = STATUS_USERCANCEL goto finish_InstallOption endif endif ifstr(i) $(DoConfig) == "YES" ; ; first run a privilege check on modifying the setup node ; shell "registry.inf" CheckSetupModify ifint $($ShellCode) != $(!SHELL_CODE_OK) goto finish_InstallOption endif ifstr(i) $($R0) != STATUS_SUCCESSFUL goto finish_InstallOption endif ; ; then make a new driver entry, the entry is created automatically ; enabled ; set ServiceNode = $(OurDriver) set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-Drivers, $(OurDriver), 2) set ServicesValues = { + {Type, 0, $(!REG_VT_DWORD), $(Type) }, + {Start, 0, $(!REG_VT_DWORD), $(Start) }, + {Group, 0, $(!REG_VT_SZ), $(Group) }, + {ErrorControl, 0, $(!REG_VT_DWORD), $(ErrorControl) }, + {Dependencies, 0, $(!REG_VT_MULTI_SZ), {$(Dependencies)} }, + {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary) } + } ifstr(i) $(DependOnGroup) != {} set ServicesValues = >($(ServicesValues),{DependOnGroup, 0, $(!REG_VT_MULTI_SZ), $(DependOnGroup) }) endif ifstr(i) $(DependOnServices) != {} set ServicesValues = >($(ServicesValues),{DependOnService,0,$(!REG_VT_MULTI_SZ),$(DependOnService)}) endif ; set ParametersValues = "" set DeviceValues = {} set EventLogValues = { + {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, + {TypesSupported, 0, $(!REG_VT_DWORD), $(TypesSupported) } + } shell "registry.inf" MakeServicesEntry $(ServiceNode) + $(ServicesValues) + $(ParametersValues) + $(DeviceValues) + $(EventLogValues) + Parameters ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "Couldn't execute MakeServicesEntry in registry.inf" goto finish_InstallOption endif ifstr(i) $($R0) != STATUS_SUCCESSFUL Debug-Output "MakeServicesEntry failed for driver" goto finish_InstallOption endif endif set Status = STATUS_SUCCESSFUL finish_InstallOption = + Return $(Status) ;------------------------------------------------------------------------- ;GetInstalledOptions: ;------------------------------------------------------------------------- [GetInstalledOptions] set Status = STATUS_FAILED set InstalledOptions = {} set InstalledOptionsText = {} Debug-Output "Enter:[M353Par.inf] GetInstalledOptions " ; language check set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) else set Status = STATUS_NOLANGUAGE goto finish_GetInstalledOptions endif set OptionList = ^(Options, 0) Debug-Output "[M353Par.inf] OptionList=$(OptionList) " ForListDo $(OptionList) Debug-Output "Enter ForListDo! " set OurDriver = #(Options, $($), 1) set OurFile = #(Files-Drivers, $(OurDriver), 2) set FilePath = $(!STF_WINDOWSSYSPATH)"\drivers\"$(OurFile) Debug-Output "[M353Par.inf] $(OurDriver) $(OurFile) $(FilePath)" LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath) Debug-Output "Passed : LibraryProcedure" ifstr(i) $(STATUS) == "YES" shell "registry.inf" GetServicesEntryStart $(OurDriver) Debug-Output "AAA:$($ShellCode) $($R0) $($R1)" ifint $($ShellCode) == $(!SHELL_CODE_OK) Debug-Output "Passed : ShellCode" ifstr(i) $($R0) == STATUS_SUCCESSFUL Debug-Output "Passed : R0" ifstr(i) $($R1) != $(!SERVICE_DISABLED) Debug-Output "Passed : R1" set OptionText = #(OptionsText$($0), $($), 1) set InstalledOptions = >($(InstalledOptions), $($)) set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText)) Debug-Output "OptionText = $(OptionText)" Debug-Output "InstalledOptions = $(InstalledOptions)" Debug-Output "InstalledOptionsText = $(InstalledOptionsText)" endif endif endif endif EndForListDo set Status = STATUS_SUCCESSFUL finish_GetInstalledOptions =+ Debug-Output "End Section [GetInstalledOptions] $(Status) $(InstalledOptions) $(InstalledOptionsText)" Return $(Status) $(InstalledOptions) $(InstalledOptionsText) ;************************************************************************** ;************************************************************************** ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Parallel Port Driver ; ; ;----------------------------------------------------------------------- ; OPTION TYPE ; ----------- ; This identifies the Option type we are dealing with. The different ; possible types are: ; ; COMPUTER, VIDEO, POINTER, KEYBOARD, LAYOUT, SCSI, TAPE, PRINTER, ... ;----------------------------------------------------------------------- [Identification] OptionType = Driver ;----------------------------------------------------------------------- ; LANGUAGES SUPPORTED ; ------------------- ; ; The languages supported by the INF, For every language supported ; we need to have a separate text section for every displayable text ; section. ; ;----------------------------------------------------------------------- [LanguagesSupported] ENG ;----------------------------------------------------------------------- ; OPTION LIST ; ----------- ; This section lists the Option key names. These keys are locale ; independent and used to represent the option in a locale independent ; manner. ; ;----------------------------------------------------------------------- [Options] M353Par = M353Par ;----------------------------------------------------------------------- ; OPTION TEXT SECTION ; ------------------- ; These are text strings used to identify the option to the user. There ; are separate sections for each language supported. The format of the ; section name is "OptionsText" concatenated with the Language represented ; by the section. ; ;----------------------------------------------------------------------- [OptionsTextENG] M353Par = "QMS DeskLaser600 Parallel Class Driver" ;----------------------------------------------------------------------------------------- ; DRIVERS ; ------- ; Order of the information: ; ; driver = Type, Group, ErrorControl, Dependencies, EventMessageFile, TypesSupported ; ; NOTE: \ in the dependency list means that the dependency is on a group. ;----------------------------------------------------------------------------------------- [Drivers] M353Par = !SERVICE_KERNEL_DRIVER, "Extended Base" , !SERVICE_ERROR_NORMAL, "", "%SystemRoot%\System32\IoLogMsg.dll" , 7 [DriversStart] M353Par = !SERVICE_AUTO_START ;************************************************************************** ; PROGRESS GUAGE VARIABLES ;************************************************************************** [MsgStringsENG] MsgString1 = "Installation failed! ( Parallel Class Driver)" MsgString2 = "Installation failed! ( Status Monitor)" MsgString3 = "You can't setup. "$(!LF)+ "Please log on the PC using an user account"$(!LF)+ "that has Full Control permission" MsgString10 = "This INSTALL.INF file isn't a match for this computer." ; MsgString11 = "Can't install the printer driver on your PC's processor."+ ; $(!LF)$(!LF)"Installation failed." MsgString12 = "Installation of Parallel Class Driver/Status Monitor are Completed."$(!LF)$(!LF)+ "Please setup a printer continually." [CustomDlgMsgENG] DlgType = "MessageBox" DlgTemplate = "WELCOME" STF_MB_TITLE = "Printer set up for QMS DeskLaser600" STF_MB_TEXT = $(LF)$(LF)+ "You can install drivers"$(LF)+ " Parallel Class Driver"$(LF)+ " Status Monitor "$(LF)$(LF)+ "If you continue a installation, you click the OK button."$(LF)+ "If you cancel an installation, you click the CANCEL button." STF_MB_TYPE = 2 STF_MB_DEF = 1 STF_MB_ICON = 5 OK = "OK (&O)" CANCEL = "Cancel (&C)" [ProgressCopyENG] ProCaption = "QMS DeskLaser600 Driver Setup" ProCancel = "CANCEL(&A)" ProCancelMsg = "Status Monitor is not installed."+ "Are you cancel setup of printer driver?" ProCancelCap = "CANCEL" ProText1 = "From:" ProText2 = "To :" [ProgressCopyENG] ProCaption = "Driver Setup" ProCancel = "CANCEL(&A)" ProCancelMsg = "Parallel class driver is not installed."+ "Are you cancel setup of printer driver?" ProCancelCap = "CANCEL" ProText1 = "From:" ProText2 = "To :" [StringsENG] String1 = "QMS DeskLaser600 Parallel Class Driver" [Source Media Descriptions] 1 = "QMS DeskLaser600 Paralle Class Driver Setup Disk" , TAGFILE = disk1 [StatusMonitorFiles] 1,m353st.exe, OVERWRITE=VERIFYSOURCEOLDER 1,m353st.hlp, OVERWRITE=VERIFYSOURCEOLDER ; 1,m353st.gid, OVERWRITE=VERIFYSOURCEOLDER [Files-Drivers] M353Par = 1, M353Par.SYSDownload Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.