This page is intended for Qwix technical staff and IT professionals responsible for the Windows print server, SQL connectivity, and Windows services.
The QWIX Print Worker is a .NET Windows worker service. It polls the Qwix database for print jobs assigned to its worker name, loads the stored DevExpress document, and submits it to the configured Windows printer. A second background service periodically updates printer status in Qwix.
appsettings.json and all supplied dependencies.The supplied project targets net10.0-windows and uses DevExpress Reporting 24.2.14.
Install every required printer on the worker computer before starting the service. Install it in a context visible to the intended service account. A printer visible only to an interactive administrator may not be visible to the service.
Record the exact Windows printer name. The portal printer Name must match it exactly.
Where possible, sign in or run a test process as the service account and confirm that Windows can print a test page before troubleshooting Qwix.
Obtain the published QWIX Print Worker package from the Qwix repository. Copy the complete published package to a protected installation directory such as:
C:\Program Files\QWIX\PrintWorker
Restrict write access to administrators and the deployment process. The application configuration contains a database connection string.
appsettings.json{
"ConnectionStrings": {
"PrintDatabase": "<QWIX_DATABASE_CONNECTION_STRING>"
},
"PrintWorker": {
"Name": "PRINT-WORKER-01",
"PollIntervalSeconds": 2,
"PrinterStatusIntervalSeconds": 30,
"ClaimLeaseSeconds": 300,
"MaxAttempts": 3,
"RetryDelaySeconds": 30
},
"WindowsService": {
"ServiceName": "QWIX Print Worker"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft": "Warning"
}
}
}
| Setting | Allowed range | Purpose |
|---|---|---|
PrintWorker:Name |
1–50 characters | Logical worker identity. Must exactly match the Server value on every printer assigned to this worker. Use a unique name for each deployed worker. |
PollIntervalSeconds |
1–300 | Delay before polling again when no job is available. |
PrinterStatusIntervalSeconds |
5–3600 | Frequency of Windows printer-status checks. |
ClaimLeaseSeconds |
30–86400 | Time after which an abandoned claimed or spooling job may be reclaimed. Set this longer than the expected maximum print submission time. |
MaxAttempts |
1–100 | Maximum processing attempts before a job is marked failed. |
RetryDelaySeconds |
1–3600 | Base retry delay. The worker increases the delay with each failed attempt, capped at one hour. |
WindowsService:ServiceName |
text | Displayed Windows service name. |
The published worker executable can be run interactively before it is installed as a Windows service. This is useful for validating the database connection, worker name, printer visibility, status updates, and test print processing.
appsettings.json contains the intended test configuration.PrintWorker:Name. Two workers with the same name may compete for the same jobs..\QWIX.PrintWorker.exe
Ctrl+C to stop the worker.When run this way, the worker uses the permissions and installed printers of the currently signed-in Windows user. A successful console test does not prove that the eventual Windows service account can see the same printers. Repeat the relevant checks after installing and starting the service.
Do not leave the console worker running as the permanent production host. Install it as a Windows service for automatic startup and service recovery.
Run PowerShell as an administrator. The example below uses sc.exe; replace the account and paths for the environment.
sc.exe create "QWIX Print Worker" `
binPath= "\"C:\Program Files\QWIX\PrintWorker\QWIX.PrintWorker.exe\"" `
start= auto `
obj= "DOMAIN\svc-qwix-print" `
password= "<SERVICE_ACCOUNT_PASSWORD>"
Configure recovery so Windows restarts the worker after a failure:
sc.exe failure "QWIX Print Worker" reset= 86400 actions= restart/60000/restart/60000/restart/60000
Start the service:
Start-Service -Name "QWIX Print Worker"
Do not place real service-account passwords in documentation or deployment scripts. Use the organisation's approved secret-management and service-provisioning process.
In Configuration > Server Printers, create one row for each Windows printer:
PrintWorker:Name value; andAssign at least one Qwix user on the printer's Users tab.
WorkerStarted entry is written to qx_PrintLog.AvailablePrinters entry reports the expected printer count.Date Last Print is updated, and the Windows spooler receives a document named QX-PJB-<job-id>.appsettings.json securely.Do not replace files while the service is processing a job.