Files
punktfunk/packaging/winget/unom.PunktfunkHost.installer.yaml
T
enricobuehler 4114dfeff7 fix(winget): the Log switch used |LOGPATH|, which winget never substitutes
Second field report on 0.20.0's winget path, and independent of the conflict
abort in 37781a61: an INTERACTIVE install through UniGetUI dies before the
wizard with Inno's "Error creating log file: The filename, directory name, or
volume label syntax is incorrect."

`<LOGPATH>` is winget's own token and the only spelling it replaces — the
schema this manifest declares says so verbatim ("<LOGPATH> token can be included
in the switch value so that winget will replace the token with user provided
path"). We shipped `|LOGPATH|`, which is not a token, so winget passed the
literal string to Inno; `|` is not legal in a Windows filename, and Inno refuses
before doing anything else.

Worse than the conflict abort in two ways: it is not confined to silent installs
— it fires in EVERY mode for any caller that requests a log — and UniGetUI
requests one by default, so a GUI user cannot install at all. Confirmed against
the live source, which is serving the broken switch to everyone right now:
  curl -s https://winget.punktfunk.unom.io/packageManifests/unom.PunktfunkHost
  → "Log": "/LOG=\"|LOGPATH|\""

Guarded by the suite that exists for exactly this class of defect (a wrong
response shape does not fail loudly — winget just says "no package found"). The
new check accepts an absent Log switch, requires <LOGPATH> when present, and
rejects any |TOKEN| spelling. Mutation-verified: restoring |LOGPATH| fails the
check naming the offending value, and the corrected manifest passes 29/29.

⚠ Fixing the template does NOT fix the live catalogue: it is derived from the
manifest trio attached to each release, so the corrected switch only reaches
users when a release carries it.
2026-07-27 10:28:59 +02:00

61 lines
3.3 KiB
YAML

# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json
#
# Installer manifest for the Windows host (packaging/windows/punktfunk-host.iss -> Inno Setup 6).
#
# The host is a machine-wide, elevated install: it registers a SYSTEM service, installs the
# pf-vdisplay + gamepad drivers, and opens firewall ports. There is no per-user scope.
PackageIdentifier: unom.PunktfunkHost
PackageVersion: 0.19.2
InstallerType: inno
Scope: machine
# PrivilegesRequired=admin in the .iss -> Setup raises its own UAC prompt.
ElevationRequirement: elevatesSelf
# Windows 11 22H2 floor: pf-vdisplay is built against IddCx 1.10 with no runtime downgrade, so on
# anything older the device fails to start with Code 10 (see the MinVersion gate in the .iss).
MinimumOSVersion: 10.0.22621.0
InstallModes:
# interactive keeps the FULL wizard — every task checkbox, the web-console password page, and the
# VB-CABLE notice text. `winget install unom.PunktfunkHost --interactive`.
- interactive
- silent
- silentWithProgress
InstallerSwitches:
# Spelled out rather than relying on winget's built-in `inno` defaults, so the unattended
# behaviour is reviewable here. No /MERGETASKS: a silent install deliberately takes the SAME
# task defaults the wizard shows, so the product does not differ by install channel. The
# disclosures the wizard puts on screen are carried by Agreements/InstallationNotes in the
# locale manifest instead.
#
# To opt out of individual tasks, callers use Inno's ! negation via --override, e.g.
# winget install unom.PunktfunkHost --override "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /MERGETASKS=!gamestream"
# Task names: installdriver, installgamepad, installaudiocable, installhdrlayer,
# gamestream, allowpublicfw, startservice, trayicon
Silent: /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
SilentWithProgress: /SILENT /SUPPRESSMSGBOXES /NORESTART /SP-
# <LOGPATH> is winget's OWN token and the only spelling it substitutes (see the schema this file
# declares: "…<LOGPATH> token can be included in the switch value so that winget will replace the
# token with user provided path"). It was written |LOGPATH| — not a token, so winget passed the
# literal string through and Inno rejected it: `|` is not legal in a Windows filename, giving
# "Error creating log file: The filename, directory name, or volume label syntax is incorrect."
# That aborted the install in EVERY mode, interactive included, for any caller that asks for a
# log — UniGetUI does so by default, which is how it was reported.
Log: /LOG="<LOGPATH>"
# Inno writes its ARP entry under <AppId>_is1; this is what correlates an installed host with the
# package for `winget list` / `winget upgrade`. Must track AppId in the .iss.
ProductCode: '{7C9E6A52-1F4B-4E8D-A3C7-2B5D8F1E0A93}_is1'
# Inno upgrades in place (UsePreviousAppDir=yes) — do not uninstall first, that would run the
# [UninstallRun] service/driver teardown between versions.
UpgradeBehavior: install
Installers:
- Architecture: x64
InstallerUrl: https://git.unom.io/unom/punktfunk/releases/download/v0.19.2/punktfunk-host-setup-0.19.2.exe
InstallerSha256: 96964117125BFD5AC4556987DAFAA3966A4A57BBC29C838803857852D595BF4D
ManifestType: installer
ManifestVersion: 1.6.0