ePublisher Silent Installation Guide (IT and Enterprise Deployment)
A guide for IT departments deploying WebWorks ePublisher Express (and ePublisher Designer and ePublisher AutoMap) silently across an organization: unattended first-time installs, upgrades, repairs, and uninstalls.
Audience: System administrators using SCCM, Intune, Group Policy, PDQ Deploy, PowerShell remoting, or an equivalent deployment tool. This guide assumes you are deploying the standard product installer downloaded from WebWorks, not a debug or source build.
The examples use ePublisher Express. ePublisher Designer and ePublisher AutoMap install with the identical mechanism and command-line switches. Substitute the product name in the installer filename and paths (ePublisher Express becomes ePublisher Designer or ePublisher AutoMap).
The installers are built with NSIS. Installers from ePublisher 2025.1 onward add one WebWorks-specific switch, /UPDATE, for one-command silent upgrade and repair (see Updating an Existing Installation). Everything else is the standard NSIS built-in switch set, per the official NSIS documentation (the Command-Line Usage and Silent Installers chapters). Older installers support only the standard switches.

Installer Downloads and Filenames
Download installers from the per-version landing page:
https://webworks.com/products/epublisher/download?version=2025.1
Substitute the version value (for example, 2024.1 or 2023.1) to reach the landing page for an older release. This is the browsable entry point. Link IT staff to the landing page rather than a direct file URL.
Each landing page offers the 64-bit and 32-bit installers for every product. The actual download links resolve to a per-build path of the form …/<version.build>/<exe-filename> (there is no parent index page for the build directory), where <exe-filename> is one of the following (shown for the example release 2025.1.4678):
Product
64-bit Installer (Recommended)
32-bit Installer
Express
WebWorks ePublisher Express (64-bit).2025.1.4678.exe
WebWorks ePublisher Express (32-bit).2025.1.4678.exe
Designer
WebWorks ePublisher Designer (64-bit).2025.1.4678.exe
WebWorks ePublisher Designer (32-bit).2025.1.4678.exe
AutoMap
WebWorks ePublisher AutoMap (64-bit).2025.1.4678.exe
WebWorks ePublisher AutoMap (32-bit).2025.1.4678.exe
Legacy Formats
WebWorks ePublisher Legacy Formats (64-bit).2025.1.4678.exe
WebWorks ePublisher Legacy Formats (32-bit).2025.1.4678.exe
Use the 64-bit builds. Nearly all deployments today use 64-bit; reserve the 32-bit builds for legacy 32-bit Windows. The two differ in install location and registry view (see the appendix). The command-line switches are identical for both.
Build numbers increment between releases (…4678 here). Reference whatever file you downloaded and substitute the version and build in the examples below.

At a Glance
Task
Command (run elevated)
Silent install (default location)
"WebWorks ePublisher Express (64-bit).2025.1.4678.exe" /S
Silent install (custom location)
"WebWorks ePublisher Express (64-bit).2025.1.4678.exe" /S /D=C:\Tools\WebWorks
Silent upgrade or repair (2025.1+ installers)
"WebWorks ePublisher Express (64-bit).<version.build>.exe" /S /UPDATE
Silent uninstall
"…\ePublisher Express\Uninstall.exe" /S
Licensing (activate a seat)
Manual, per machine. Entered by the user on first launch; cannot be scripted.
Free a license seat
Manual. User clicks Unregister in the License dialog before uninstalling.

Command-Line Switch Reference
Installer
Switch
Effect
Notes
/S
Runs the installer silently (no UI, no prompts)
Case-sensitive: must be uppercase /S. NSIS documents the switch in uppercase; lowercase /s is not recognized and the GUI will appear.
/D=<path>
Sets the install root directory
Per NSIS docs: must be the last argument, unquoted even if the path contains spaces (for example, /D=C:\Program Files\WebWorks), and absolute paths only.
/NCRC
Skips the installer's internal CRC integrity check
Disables the CRC check unless CRCCheck force was used in the script. Rarely needed.
/UPDATE
Silent upgrade or repair: uninstalls the installed version, then installs fresh
WebWorks-specific; ePublisher 2025.1+ installers only. Acts only when combined with /S (ignored in an interactive run). No-op when the product is not installed (behaves as a fresh install). See Section 2.1.
Uninstaller (Uninstall.exe)
Switch
Effect
Notes
/S
Runs the uninstaller silently
Case-sensitive uppercase.
_?=<dir>
Runs the uninstaller in place so the calling process can block until it finishes
Per NSIS docs, this stops the uninstaller from copying itself to the temporary directory, and can be used along with ExecWait to wait for the uninstaller to finish. Must be the last argument and unquoted. Point it at the folder containing Uninstall.exe. See the caveat.
Elevation is required. The installer is marked to require administrator rights (RequestExecutionLevel admin). A silent run from a non-elevated context cannot raise a UAC prompt and will fail. Always launch from an already-elevated process or your deployment tool's SYSTEM or admin context.
Exit codes. NSIS returns 0 on success and a non-zero code on failure or cancellation. Check $LASTEXITCODE (PowerShell) or %ERRORLEVEL% (cmd) and treat non-zero as a failed deployment.

1. Installing for the First Time
1.1 Pre-Provision Prerequisites First
Do this before pushing the installer. See Section 3 for details and verification commands. In short: .NET Framework 4.7.2+ is always required and should be present on every target; Java and Ghostscript are needed only for certain output and input types (see the table). The installer can auto-download any that are missing, but that requires internet access on each endpoint, and a machine that is missing .NET and offline can stall a silent install on a dialog.
1.2 Run the Silent Install
Default location (C:\Program Files\WebWorks for 64-bit):
# Must run elevated
& "C:\Deploy\WebWorks ePublisher Express (64-bit).2025.1.4678.exe" /S
Custom location:
& "C:\Deploy\WebWorks ePublisher Express (64-bit).2025.1.4678.exe" /S /D=D:\Apps\WebWorks
Why the scripted examples use Start-Process -Wait. NSIS installers are Windows GUI-subsystem executables, so a shell that launches one directly (for example, & "installer.exe" /S) returns immediately while the install continues on its own, and because /S shows no window, it looks like it ran off into the background. This is normal and not specific to /S. Start-Process -Wait makes PowerShell block until the installer and its child processes finish, which is also what lets you read a reliable exit code. Use the -Wait form (Section 1.4) whenever a script must wait for completion or check success; the bare & "installer.exe" /S form is fine only for ad-hoc, hands-on runs. (Elevation also detaches the process: an admin-manifested installer launched from a non-elevated shell is elevated by Windows as a separate process. Start-Process -Wait -Verb RunAs elevates and waits; in a SYSTEM or admin deployment context, drop -Verb RunAs.)
1.3 What Gets Installed, and Where
With the default 64-bit root, files land under:
C:\Program Files\WebWorks\ePublisher\2025.1\
    ePublisher Express\        <- product binaries + Uninstall.exe
    Helpers\  Adapters\  Formats\  Transit\  Rasterizer\   (shared)
(32-bit installs to C:\Program Files (x86)\WebWorks\….) Note that the version folder is the major.minor (2025.1), not the full build number.
The installer also:
  • Registers the product under the Windows Uninstall key (see the appendix).
  • Adds Windows Defender exclusions for the product executables.
  • Installs or refreshes the WebWorks Rasterizer printer and the Transit helper.
Licensing is not configured by the installer. A successful silent install produces a working but unlicensed product. Each user must activate a seat on first launch (see Section 4).
1.4 Example: Deployment Wrapper with Logging
$installer = "C:\Deploy\WebWorks ePublisher Express (64-bit).2025.1.4678.exe"
$log       = "C:\Deploy\Logs\epx-install-$env:COMPUTERNAME.log"

$p = Start-Process -FilePath $installer -ArgumentList '/S' -Wait -PassThru -Verb RunAs
"$(Get-Date -Format s)  exit=$($p.ExitCode)" | Out-File $log -Append

if ($p.ExitCode -ne 0) { throw "ePublisher Express install failed (exit $($p.ExitCode))" }

2. Updating an Existing Installation (Repairs and Upgrades)
How you update depends on the version of the installer you are running (not the version being replaced; the new installer removes the prior version for you, verified for installations back to 2021.1):
New Installer Version
Recommended Method
2025.1 and later (with the /UPDATE switch)
One command: /S /UPDATE (Section 2.1)
Older installers (without /UPDATE)
Manual uninstall-then-install (Section 2.3)
2.1 Silent Upgrade or Repair with /S /UPDATE (2025.1 and Later)
Installers from ePublisher 2025.1 onward support the WebWorks-specific /UPDATE switch. Combined with /S, the installer first silently uninstalls the currently-installed version of the product, then installs fresh. This is the unattended equivalent of choosing Repair in the interactive installer, and a clean one-command upgrade:
(Start-Process "C:\Deploy\WebWorks ePublisher Express (64-bit).<version.build>.exe" `
  -ArgumentList '/S /UPDATE' -Wait -PassThru -Verb RunAs).ExitCode
Check your build. The /UPDATE switch was added partway through the 2025.1 release cycle. Earlier 2025.1 builds simply ignore the switch: the run silently degrades to a plain /S in-place overwrite (no uninstall first). If in doubt, download the latest build from the version landing page.
Behavior:
  • Upgrade. Removes the currently-installed version (supported back to installations of 2021.1), then installs the new version. Files dropped between versions do not linger, unlike a plain /S overwrite. For installations older than 2021.1, play it safe: uninstall manually first via Windows Settings > Apps (Add or Remove Programs), then run a normal silent install (Section 1.2).
  • Repair. Re-running the same build with /S /UPDATE removes it and freshly reinstalls it.
  • Fresh install. On a machine with nothing installed, the uninstall step is a no-op and /S /UPDATE behaves exactly like /S. One command is therefore valid for every machine, whatever its current state, which is what makes the all-products script in Section 2.4 possible.
  • Install location. A same-version repair stays in the existing location automatically. When upgrading across versions from a custom install root, append /D=<root> (last argument, unquoted) to be explicit, since the new version cannot always discover the old version's custom root.
  • Running instances of ePublisher products are closed automatically before the uninstall begins. Have users save their work before a deployment window.
  • /UPDATE without /S is ignored. An interactive run shows the normal Repair or Uninstall chooser instead.
Licensing survives an upgrade. Activation is tied to the machine and user, not to the program files, so an upgrade does not normally require re-entering the Contract ID. If a machine ever prompts again, treat it as a first-time activation (Section 4). A full uninstall (without reinstalling) still leaves the seat consumed (see Section 5).
2.2 In-Place Refresh with Plain /S (All Versions)
Re-running an installer silently without /UPDATE overwrites the files in place; nothing is uninstalled first:
& "C:\Deploy\WebWorks ePublisher Express (64-bit).2025.1.4678.exe" /S
This is fine for re-applying the same build, but an in-place overwrite does not remove files that were dropped from a newer version. For version upgrades, prefer /S /UPDATE (2025.1+) or the manual procedure below.
2.3 Manual Uninstall-Then-Install (Installers Without /UPDATE)
Older installers, those that predate the /UPDATE switch, have no one-command update. For a clean upgrade, silently uninstall the old version, then silently install the new one:
$uninstall = "C:\Program Files\WebWorks\ePublisher\2025.1\ePublisher Express\Uninstall.exe"
$newSetup  = "C:\Deploy\WebWorks ePublisher Express (64-bit).2025.1.4678.exe"

# 1) Remove the existing version (blocking)
$tmp = "$env:TEMP\epx-uninstall.exe"
Copy-Item $uninstall $tmp -Force
Start-Process $tmp -ArgumentList '/S', "_?=$(Split-Path $uninstall)" -Wait -Verb RunAs

# 2) Install the new version
Start-Process $newSetup -ArgumentList '/S' -Wait -Verb RunAs
2.4 One Script for All Products (Install and Update)
Because /S /UPDATE handles first-time install, upgrade, and repair with the same command, a single script can bring every ePublisher product on a machine up to date in one pass. Comment out (#) the products your organization does not use.
# =============================================================================
# WebWorks ePublisher -- silent install / upgrade, all products
# Requires installers with the /UPDATE switch (ePublisher 2025.1 and later).
# Run from an ELEVATED PowerShell prompt.
#   - Fresh machine: performs first-time installs.
#   - Machine with ePublisher installed: cleanly upgrades/repairs each product.
# =============================================================================

if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
        ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    throw 'Run this script from an elevated (Administrator) PowerShell prompt.'
}

$InstallerDir = 'C:\Deploy'      # folder containing the downloaded installer EXEs
$Build        = '2025.1.0000'    # <version.build> exactly as it appears in the filenames
$Arch         = '64-bit'         # or '32-bit'

# ---- Products to deploy. Comment out (#) any product you do not use. ----
# NOTE: 'Legacy Formats' requires Designer or AutoMap and must stay LAST.
$Products = @(
    'Express'
    'Designer'
    'AutoMap'
    'Legacy Formats'             # requires Designer or AutoMap above
)

foreach ($Product in $Products) {
    $exe = Join-Path $InstallerDir "WebWorks ePublisher $Product ($Arch).$Build.exe"
    if (-not (Test-Path $exe)) {
        Write-Warning "Installer not found, skipping: $exe"
        continue
    }
    Write-Host "Installing/updating $Product ..."
    $p = Start-Process -FilePath $exe -ArgumentList '/S /UPDATE' -Wait -PassThru
    if ($p.ExitCode -ne 0) {
        throw "$Product installer failed with exit code $($p.ExitCode) -- stopping."
    }
    Write-Host "  $Product OK."
}
Write-Host 'All selected products are installed and up to date.'
Notes:
  • Product order matters only for Legacy Formats. It depends on configuration owned by Designer or AutoMap, so keep it last and deploy it only alongside one of them.
  • Custom install root: change the argument string to '/S /UPDATE /D=<root>'. Keep /D last and unquoted inside the string (passing it as a single string preserves the unquoted form NSIS requires, even for paths with spaces).

3. Prerequisites to Pre-Provision
The installer checks for three components and will attempt to download and install any that are missing, over the internet. Only .NET is required for ePublisher to run at all; Java and Ghostscript are required only for specific output and input types. For controlled enterprise rollouts, especially on locked-down or offline machines, pre-provision the ones your users need so endpoints never require outbound network access during deployment, and so you control the versions installed.
Component
Required For
If Missing, Installer Will...
Why Pre-Provision
.NET Framework 4.7.2 (or later)
Always, ePublisher itself
Prompt-default to Yes and silently download from microsoft.com, then install.
On a machine that is missing .NET and offline, the download-failure fallback dialog can stall a silent install (it has no silent default). Pre-provisioning eliminates this risk.
Java runtime (JDK/JRE)
PDF output, Eclipse / Oracle / Java Help output, and DITA-XML input
Silently download a JDK and install it (no dialog; the install continues even if the download fails).
Large download per endpoint; version drift. Pre-provision a standardized, org-approved JDK or JRE if users generate those outputs or consume DITA-XML input.
Ghostscript
Generating web-ready images from Microsoft Word and Adobe FrameMaker graphics that contain a vector or PostScript facet
Silently download and install (no dialog; install continues if it fails).
Large download per endpoint; pin a known-good Ghostscript version if users publish Word or FrameMaker documents containing such graphics.
Unlike .NET, a missing Java or Ghostscript does not stall a silent install. The installer logs the failure and continues. The affected output or input type simply will not work until that component is installed.
About graphic facets. Microsoft Word and Adobe FrameMaker can store an imported picture as several facets, alternate renditions of the same image (for example, a high-resolution vector or PostScript rendition alongside a low-resolution screen preview). To turn such a graphic into a web image, ePublisher rasterizes its vector or PostScript facet into a web-ready raster image (PNG, GIF, or JPG), and that rasterization step uses Ghostscript (via the WebWorks Rasterizer). If your source documents do not contain these graphics, Ghostscript is not needed.
All three require network access when the installer fetches them. Pre-provisioning them through your normal software-distribution channel keeps the ePublisher deployment itself fully offline-capable and deterministic.
3.1 Verification Snippets
# .NET Framework >= 4.7.2  (release >= 461808)
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release).Release -ge 461808

# Java present (registry)
@('HKLM:\SOFTWARE\JavaSoft\JDK','HKLM:\SOFTWARE\JavaSoft\JRE',
  'HKLM:\SOFTWARE\JavaSoft\Java Development Kit','HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment') |
  Where-Object { Test-Path $_ }

# Ghostscript present
Test-Path 'HKLM:\SOFTWARE\GPL Ghostscript'
With .NET present (and Java and Ghostscript present for the features your users need), the ePublisher silent install runs fully unattended with no network dependency and no dialogs.

4. Licensing (Contract IDs)
Activation cannot be silenced or scripted. It is a manual, per-machine step performed by the end user on first launch.
A successful install does not activate a license. The first time a user launches ePublisher Express (or Designer or AutoMap) on a machine, the License dialog appears and the user must enter:
  • the organization's Contract ID,
  • their email address, and
  • the machine name.
Each successful activation consumes one seat on the Contract ID. There is no command-line, registry, or file-drop mechanism to pre-activate seats during a silent deployment. Plan for users (or a technician at the machine) to complete this step interactively once per machine.
IT can still fully automate the install; only the one-time activation is manual.

5. Uninstalling and Deactivating License Seats
5.1 Deactivate the Seat Before Uninstalling
Order matters. Free the license seat first, then remove the software.
Each activation holds a seat on the Contract ID. To return that seat to the pool, the user clicks the Unregister button on the License dialog inside ePublisher Express, Designer, or AutoMap while the product is still installed. This deactivates the seat so it can be reused on another machine or user.
If ePublisher is uninstalled before the seat is deactivated, the seat remains consumed (the Unregister button is no longer reachable). In that case, WebWorks Support can deactivate the seat on request. Contact https://www.webworks.com/support with the Contract ID and the machine name(s) to release.
5.2 Silent Uninstall
The uninstaller is a standalone Uninstall.exe placed in the product folder and recorded as the Windows UninstallString:
C:\Program Files\WebWorks\ePublisher\2025.1\ePublisher Express\Uninstall.exe
Simple silent uninstall (returns quickly; the uninstaller relocates itself to %TEMP% and completes in the background):
& "C:\Program Files\WebWorks\ePublisher\2025.1\ePublisher Express\Uninstall.exe" /S
Scripted Blocking Uninstall
To make your deployment script wait for the uninstall to finish, copy the uninstaller out and run it with the _?= switch pointing at the original product folder:
$uninstall = "C:\Program Files\WebWorks\ePublisher\2025.1\ePublisher Express\Uninstall.exe"
$tmp = "$env:TEMP\epx-uninstall.exe"
Copy-Item $uninstall $tmp -Force
Start-Process $tmp -ArgumentList '/S', "_?=$(Split-Path $uninstall)" -Wait -Verb RunAs
_?= caveat: a running executable cannot delete itself, so with _?= the original Uninstall.exe (and possibly its now-empty folder) may be left behind. The uninstaller still removes all product files, shared components, and registry entries. The copy-to-temp pattern above is exactly how the product's own internal repair flow performs a blocking uninstall.
5.3 Finding the Uninstall Command from the Registry
If you do not want to hard-code the version in the path, read the recorded UninstallString (64-bit Express shown):
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WebWorks ePublisher Express x64' `
  -Name UninstallString).UninstallString

Appendix: Paths, Filenames, and Registry Keys
<ver> is the major.minor version (for example, 2025.1). For a custom /D= root, substitute accordingly.
64-Bit vs 32-Bit Differences
 
64-bit Build (recommended)
32-bit Build
Installer filename
WebWorks ePublisher Express (64-bit).<build>.exe
WebWorks ePublisher Express (32-bit).<build>.exe
Default install root
C:\Program Files\WebWorks
C:\Program Files (x86)\WebWorks
Registry view
64-bit (native)
32-bit (under WOW6432Node when read from a 64-bit process)
Uninstall key suffix
x64 (for example, …\WebWorks ePublisher Express x64)
(no suffix) (for example, …\WebWorks ePublisher Express)
Product Folders
Product
Product Folder (under the install root + `\ePublisher<ver>`)
Uninstaller
Express
`ePublisher Express`
ePublisher Express\Uninstall.exe
Designer
`ePublisher Designer`
ePublisher Designer\Uninstall.exe
AutoMap
`ePublisher AutoMap`
ePublisher AutoMap\Uninstall.exe
Registry Keys (HKLM)
Paths shown for the 64-bit Express build. For 32-bit, drop the x64 suffix and look under WOW6432Node. For Designer or AutoMap, replace Express with the product name.
Purpose
Key
Uninstall info
Software\Microsoft\Windows\CurrentVersion\Uninstall\WebWorks ePublisher Express x64 -> UninstallString, DisplayVersion
Install root / working dir
Software\WebWorks\ePublisher\<ver> -> TargetDir, workingDirectory
Product exe path
Software\WebWorks\ePublisher Express\<ver> -> ExePath, Path, Version
Quick Checklist for a Clean Enterprise Rollout
  1. Pre-provision .NET 4.7.2+ (always); add Java if users generate PDF / Eclipse / Oracle / Java Help output or consume DITA-XML input, and Ghostscript if users publish Word or FrameMaker documents containing vector or PostScript graphic facets (Section 3).
  2. Push the 64-bit installer elevated with /S (plus /D= if relocating) (Section 1).
  3. Verify exit code 0.
  4. Have each user complete one-time activation with the Contract ID, email, and machine name (Section 4).
  5. For upgrades: /S /UPDATE with 2025.1+ installers (Section 2.1), or uninstall then install with older installers (Section 2.3). The all-products script in Section 2.4 covers both install and upgrade.
  6. Before decommissioning, have users Unregister to free seats before uninstalling, or ask WebWorks Support to release seats if already uninstalled (Section 5).

References
  • NSIS Documentation: command-line options (/S, /D, /NCRC, uninstaller _?=) and silent installer behavior.
Last modified date: 2026-06-14