PrintToVeraeTimeStamp/platform/windows/wix/README.md
George Lambert b72324edc4 feat: commercial installer scaffold — WiX tray MSI skeleton + notarize checklist
Non-elevated tray shortcuts wxs; NOTARIZE-CHECKLIST; backlog scaffold section.
2026-10-13 22:25:50 -04:00

4.5 KiB
Raw Blame History

Windows WiX tray presence (skeleton)

standard-readme compliant

Non-elevated per-user WiX MSI skeleton for Start Menu + Startup → verae-tray.ps1.

This is not the full commercial Print Stamp MSI (printers, Program Files, Authenticode, elevated custom actions). Day-to-day tray presence without WiX remains ../scripts/build-tray-startmenu.ps1. Full product install remains NSIS (../installer-windows.nsi). Commercial gaps: docs/COMMERCIAL-INSTALLER-BACKLOG.md.

Install

Requires WiX Toolset on a Windows host (or CI Windows runner). Without candle/light (or WiX v4 wix build), no MSI is produced — use the PowerShell Start Menu stub instead.

WiX v3 (this skeleton’s XML):

REM Add candle.exe + light.exe to PATH, e.g.:
REM set PATH=%PATH%;%ProgramFiles(x86)%\WiX Toolset v3.14\bin

WiX v4+ (dotnet tool install --global wix): adapt namespaces / Package element; authoring here is WiX v3.

Stage tray scripts from this repo before building:

set WIXDIR=platform\windows\wix
set STAGE=%WIXDIR%\Stage
mkdir %STAGE% 2>nul
copy /Y platform\windows\scripts\verae-tray.ps1 %STAGE%\
copy /Y platform\windows\scripts\common.ps1     %STAGE%\

Usage

What the package does

Item Behavior
Install scope perUser, InstallPrivileges=limited (no UAC)
Files %LocalAppData%\Verae\Tray\verae-tray.ps1 (+ common.ps1)
Start Menu Programs\Verae\Verae Tray.lnk → PowerShell STA + tray script
Startup Startup\Verae Tray.lnk (same idea as install-tray-startup.ps1)
IPP Unchanged — tray only uses GET /status / GET /queue

What it does not do

Elevated Program Files install, printers, scheduled helper, Authenticode, NSIS key wizard parity, machine-wide Start Menu under ProgramData.

Build (WiX v3 candle / light)

From repo root on Windows:

set WIXDIR=platform\windows\wix
set STAGE=%WIXDIR%\Stage
set OUT=%WIXDIR%\out
set VER=0.3.6

mkdir %STAGE% 2>nul
mkdir %OUT% 2>nul
copy /Y platform\windows\scripts\verae-tray.ps1 %STAGE%\
copy /Y platform\windows\scripts\common.ps1     %STAGE%\

candle.exe -nologo -out %OUT%\ ^
  -dProductVersion=%VER% ^
  -dStageDir=%CD%\%STAGE% ^
  %WIXDIR%\VeraeTrayShortcuts.wxs ^
  %WIXDIR%\VeraeTrayShortcutsFragment.wxs

light.exe -nologo -out %OUT%\VeraeTray-%VER%-peruser.msi ^
  %OUT%\VeraeTrayShortcuts.wixobj ^
  %OUT%\VeraeTrayShortcutsFragment.wixobj

Notes:

  • Set VER from internal/job.HelperVersion (see docs/PACKAGING.md), or pass -dProductVersion= explicitly. The .wxs defaults to 0.3.6 when unset (HelperVersion at scaffold time).
  • Product Id="*" generates a new ProductCode per build; UpgradeCode is fixed for major-upgrade of this tray presence package only.
  • Skeleton is UI-less (silent-friendly). For WixUI_Minimal, uncomment UIRef / WixUILicenseRtf in VeraeTrayShortcuts.wxs, add License.rtf, and pass -ext WixUIExtension to light.

Silent install (per-user, no elevation):

msiexec /i VeraeTray-0.3.6-peruser.msi /qn VERAE_IPP_ADDR=127.0.0.1:8631

Uninstall via ARP (Verae Tray (presence)) or msiexec /x {ProductCode} /qn.

Files in this folder

File Role
VeraeTrayShortcuts.wxs Per-user Product + file components
VeraeTrayShortcutsFragment.wxs Start Menu + Startup shortcut fragment
README.md This file

Relation to other Windows paths

Path Role
../scripts/verae-tray.ps1 Runtime tray (source staged into MSI)
../scripts/install-tray-startup.ps1 WiX-free Startup shortcut
../scripts/build-tray-startmenu.ps1 WiX-free Start Menu + Startup
../installer-windows.nsi Elevated full product setup.exe
wix/ (this folder) Per-user tray shortcut MSI skeleton

A shipping-grade elevated MSI still needs a separate WiX product that mirrors NSIS: verae-print.exe, helper, printers, ARP, Authenticode, silent properties, and CI.

Contributing

Questions and packaging bugs: open an issue or PR against the PrintToVeraeTimeStamp tree. PRs accepted for WiX authoring that keep per-user / non-elevated tray scope separate from the full elevated product MSI. Do not commit certs, passwords, or signed binaries.

License

UNLICENSED © Verae