Skip to main content

System requirements

Before installing APM, ensure your system meets these requirements:

Operating system

Windows 10/11 or Windows Server 2019+

Runtime

.NET 10 Runtime (included in installer)

Network

Local network access for TCP/IP printers

Permissions

Administrator rights for service installation

Installation methods

APM offers two components that can be installed independently or together:
  1. Windows Service - Background service for print job processing
  2. MAUI Application - Desktop UI for configuration and monitoring
For production environments, install the Windows Service on a dedicated workstation or server. The MAUI app can be installed on administrator machines for configuration.

Windows Service installation

The Windows Service runs as a background process and handles all print job processing.
1

Build the service

Use the included PowerShell script to publish the service:
cd /path/to/source
.\publish_worker.ps1
This creates a self-contained deployment in ./publish/windows/worker/.
The script located at /home/daytona/workspace/source/publish_worker.ps1:1 performs these steps:
  • Cleans previous build artifacts
  • Publishes the WorkerService project for Windows x64
  • Includes all dependencies (no .NET installation required)
  • Outputs to ./publish/windows/worker/
2

Install as Windows Service

Open an elevated PowerShell/Command Prompt and navigate to the publish directory:
cd ./publish/windows/worker
sc.exe create "AppsielPrintManager" binPath= "C:\\path\\to\\publish\\windows\\worker\\WorkerService.exe"
sc.exe start "AppsielPrintManager"
Replace C:\\path\\to\\publish\\windows\\worker\\WorkerService.exe with the actual full path to your published executable.
3

Verify service status

Check that the service is running:
sc.exe query "AppsielPrintManager"
You should see STATE: 4 RUNNING.
4

Test WebSocket connectivity

The service starts a WebSocket server on port 7000. Test connectivity using a browser console:
const ws = new WebSocket('ws://localhost:7000/websocket/');
ws.onopen = () => console.log('Connected to APM!');
ws.onerror = (err) => console.error('Connection failed:', err);
If the connection succeeds, the service is running correctly.

Service configuration

The Windows Service is configured in /home/daytona/workspace/source/WorkerService/Program.cs:1 with these registered services:
services.AddSingleton<IWebSocketService, WebSocketServerService>();
services.AddSingleton<IPrintService, PrintService>();
services.AddSingleton<ITicketRenderer, TicketRendererService>();
services.AddSingleton<IEscPosGenerator, EscPosGeneratorService>();
services.AddSingleton<ITemplateRepository, TemplateRepository>();
Refer to /home/daytona/workspace/source/WorkerService/Worker.cs:74 for the service initialization logic.
The service listens on localhost:7000 by default. If you need to accept connections from other machines, modify the StartServerAsync call to bind to 0.0.0.0.

MAUI Application installation

The MAUI application provides a graphical interface for managing printers, templates, and viewing logs.
1

Build the MAUI app

Build the UI project for Windows:
cd /path/to/source
dotnet build UI/UI.csproj -c Release -f net10.0-windows10.0.19041.0
2

Publish for deployment

Create a standalone deployment:
dotnet publish UI/UI.csproj -c Release -f net10.0-windows10.0.19041.0 -o ./publish/windows/ui
3

Run the application

Execute the published app:
./publish/windows/ui/UI.exe
The application will launch and attempt to connect to the Windows Service if it’s running.

MAUI app features

The MAUI application provides these capabilities:

Printer management

Add, edit, and test printer configurations with support for TCP, USB, and IPP connections

Template editor

Visual editor for creating and modifying print templates

Scale configuration

Configure serial scales with baud rate and data format settings

Service control

Start, stop, and monitor the Windows Service (Windows only)

Log viewer

Real-time log monitoring with filtering capabilities

Test printing

Send test print jobs to verify printer configuration
Refer to /home/daytona/workspace/source/UI/MauiProgram.cs:1 for the complete service registration.

Data storage locations

APM stores configuration and templates in platform-specific locations:
Data TypeWindows Location
Printer settings%APPDATA%\\AppsielPrintManager\\printers.json
Print templates%APPDATA%\\AppsielPrintManager\\templates\\
Scale settings%APPDATA%\\AppsielPrintManager\\scales.json
Application logs%APPDATA%\\AppsielPrintManager\\logs\\
Both the Windows Service and MAUI app share the same data directory, allowing you to configure printers in the UI and have them immediately available to the service.

Firewall configuration

If you plan to accept WebSocket connections from other machines on the network:
1

Open Windows Firewall

Press Win + R, type wf.msc, and press Enter.
2

Create inbound rule

Right-click “Inbound Rules” → “New Rule” → “Port” → “TCP” → Specific port: 7000
3

Allow the connection

Select “Allow the connection” → Apply to all profiles → Name: “APM WebSocket”

Uninstallation

To remove APM from your system:
# Stop the service
sc.exe stop "AppsielPrintManager"

# Delete the service
sc.exe delete "AppsielPrintManager"

# Remove the published files
Remove-Item -Path "C:\\path\\to\\publish\\windows\\worker" -Recurse

Troubleshooting

Check the Windows Event Viewer:
  1. Open Event Viewer (eventvwr.msc)
  2. Navigate to Windows Logs → Application
  3. Look for errors from source “AppsielPrintManager”
Common issues:
  • Port 7000 already in use by another application
  • Insufficient permissions (run as Administrator)
  • Missing .NET 10 runtime
Verify the service is running:
sc.exe query "AppsielPrintManager"
netstat -ano | findstr :7000
If port 7000 is not listening, check service logs in %APPDATA%\\AppsielPrintManager\\logs\\.
Ensure default templates are created:
  1. Stop the service
  2. Delete %APPDATA%\\AppsielPrintManager\\templates\\
  3. Start the service (templates will be recreated)
The service calls EnsureDefaultTemplatesAsync() at startup (see /home/daytona/workspace/source/WorkerService/Worker.cs:81).

Next steps

Quick start

Send your first print job and verify the installation

Printer configuration

Configure thermal and dot matrix printers

Build docs developers (and LLMs) love