AmagnoVirtualPrinter/README.md
2023-06-01 09:32:33 +02:00

58 lines
4.5 KiB
Markdown

# AmagnoVirtualPrinter
## Description
The _AmagnoVirtualPrinter_ is an interface which forwards any print job given from a specified printer, to a specified application that processes the 'print job'.
There are two ways of using the _AmagnoVirtualPrinter_:
1. If you just want to install the driver build the project in release mode, navigate to the folder _VirtualPrinter.WixSharpinstaller_ and execute the created .msi file. After the installation, a new printer, with the name set in _Defaults.cs_, can be located under _Printer & Scanner_ in the Microsoft® Windows settings.
2. To debug the _AmagnoVirtualPrinter_, follow step one. After the installation, go to _Windows Services_ and stop _AmagnoPrinterService_. In Visual Studio, select AmagnoVirtualPrinter.Agent.Console as startup project and run in debug mode. To start a test print (and debug the solution) start PowerShell or cmd and navigate to the root folder of the repository. Go to `Files` and run `.\setupdrv.exe test`, which will create a test page and send it to the virtual printer. Or just print any document you want to.
## Table of Contents
1. [Installation](#installation)
1. [From MSI](#from-msi)
2. [From Source](#from-source)
2. [Usage](#usage)
1. [Configure](#configure)
2. [Debugging](#debugging)
3. [Create Release](#create-release)
## Installation
### From MSI
If you want to use the official installer, you can download it [here](https://amagno.de/clients) or use the latest release in GitHub. Make sure to run the installer with extended rights. After installation, you may need to [configure](#configure) the _AmagnoVirtualPrinter_.
After installation, a new printer with the name set in _Defaults.cs_ can be located under _Printer & Scanner_ in the Microsoft® Windows settings.
### From Source
#### Dependencies
To compile the installer, please make sure the Wix Toolset is installed. The [WixSharp library](https://github.com/oleg-shilo/wixsharp) is used to define the package in `AmagnoVirtualPrinter.WixSharpInstaller`.
#### Create MSI package
To install the driver from source, build the project in release mode. When the build is run successfully, open up powershell and navigate to `C:\[Git]\AmagnoVirtualPrinter\Files`. Then run the `AmagnoPrinterInstaller.exe "/MSBUILD:C:\[Git]\AmagnoVirtualPrinter\Installer\AmagnoVirtualPrinter.WixSharpInstaller" "/p:C:\[Git]\AmagnoVirtualPrinter\"` where `/p:` is the output directory for the msi and working directory for the WixSharp project. Make sure the given working directory contains a `Files` folder with all binaries needed for _AmagnoVirtualPrinter_. This command will use WixSharp to create the msi package right next to the AmagnoPrinterInstaller.exe called **AmagnoPrinterInstaller.msi**.
Alternatively use `create_msi.ps1` which automates the building step above.
## Usage
### Configure
Make sure Ghostscript is installed on your machine.
While installing, several registry entries are inserted into `Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\AmagnoVirtualPrinter\`. The most important ones are those under the key `Application`
- **Pre-Converter:** Contains the exe to be executed (pre convert process) and the `arg` to be processed by the application (for example: `C:\Program Files\MyApp.exe PRINT`).
- **Post-Converter:** Contains the exe to be executed (post convert process) and the args to be processed by the application (for example: `C:\Program Files\MyApp.exe PRINTCOMPLETE`).
The `Converter` key defines the settings which are needed for the convert process, e.g. server port (9101 by default).
The output directory can be set in `Computer\HKEY_CURRENT_USER\SOFTWARE\vpd\PrinterDriver\Converter` for the converted prints, which can be processed by the application. If the value is set to an empty string, the default temp path will be used (e.g. `C:\temp\PrinterOuput`).
### Debugging
To debug the _AmagnoVirtualPrinter_, run the msi. After installation, go to _Windows Services_ and stop the _AmagnoPrinterService_. In your IDE, select the AmagnoVirtualPrinter.Agent.Console as startup project and run in debug mode. To start a test print (and debug the solution) start PowerShell or cmd and navigate to the root folder of the repository. Go to `Files` and run `.\setupdrv.exe test`, which will create a test page and send it to the virtual printer. Or just print any document you want to.
## Create Release
To create a release, you have to tag a commit. Then the release pipeline compiles the source code, builds the installation, and creates the release on GitHub.