Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 01:05
· 8 commits to main since this release
  • Add HostSystem.IsDarkMode and HostSystem.IsHighContrast for detecting operating-system dark theme and accessibility
    high-contrast modes across Windows (registry and SystemParametersInfoW), macOS (defaults), and Linux (gsettings and
    desktop environments)
  • Add PathUtilities.DownloadsDirectoryPath, PathUtilities.GetDownloadsDirectory(), and
    PathUtilities.TryGetDownloadsDirectory(...) to resolve the current user's standard Downloads directory across Windows
    (native SHGetKnownFolderPath with FOLDERID_Downloads and user-shell-folder fallbacks), Linux (XDG_DOWNLOAD_DIR),
    and macOS/Unix
  • Add HostSystem.PreventSleep(bool keepDisplayOn = false) returning an IDisposable token to inhibit system sleep and
    optionally keep displays active across Windows (SetThreadExecutionState), macOS (caffeinate), and Linux (systemd-inhibit)
  • Add HostPowerStatus, HostSystem.IsOnBatteryPower, HostSystem.BatteryChargePercentage, HostSystem.GetPowerStatus(),
    and HostSystem.TryGetPowerStatus(...) for cross-platform battery level, AC/battery power state, and charging detection
  • Add HostSystem.OpenTerminal(...) and HostSystem.OpenInTerminal(...) (and asynchronous variants) to open interactive
    host terminal windows and run commands across Windows (preferring Windows Terminal wt.exe with cmd.exe fallback),
    macOS (Terminal.app via open and AppleScript), and Linux (x-terminal-emulator, gnome-terminal, konsole,
    xfce4-terminal, xterm)
  • Add HostDiskStatus, HostSystem.GetAvailableFreeSpace(...), HostSystem.TryGetAvailableFreeSpace(...),
    HostSystem.GetDiskStatus(...), and HostSystem.TryGetDiskStatus(...) to query drive capacity, free disk space,
    file system format, and drive type across Windows (GetDiskFreeSpaceExW and DriveInfo) and Unix mount points
  • Use strongly typed InstallerScope (PerMachineOrUser, PerUser, PerMachine) and PathRegistration (None,
    Register, UserDefaultNo, UserDefaultYes) enums on WindowsInstallerOptions instead of raw string configuration
  • Add HostSystem.OpenUrl URI overloads and generic synchronous/asynchronous and Open helpers for directories, files,
    URLs, and raw shell-execute fallback targets
  • Add cross-platform unified file associations via FileAssociation and FileAssociations on StageKitBuild,
    automatically configuring Windows Explorer context menu / Open With registration in WiX installers,
    CFBundleDocumentTypes in macOS Info.plist, and MimeType associations, Exec file arguments (%F), and
    AppStream mediatype metadata in Linux desktop application bundles
  • Add WindowsInstallerOptions to Fallout to configure Windows installer options (including
    ContextMenuOpenWithFileAssociations as a HashSet<FileAssociation>, SignToolPath, Authenticode signing,
    InstallerScope and PathRegistration enums, shortcut toggles DefaultDesktopShortcut and DefaultStartMenuShortcut, and
    single-file payload) alongside WiX installer context menu registration
  • Enforce a configurable macOS minimum runtime version in the generated installation script, defaulting to macOS 13.0
  • Emit current AppStream developer metadata, including a configurable developer ID, for Linux application bundles
  • Normalize AppStream summaries by removing trailing periods
  • Add option to stop configured running application instances before installation
  • Add InstallerPathRegistration modes for optional or enforced WiX PATH registration, with user/system scope handling,
    upgrade preference restoration, uninstall cleanup, and checked or unchecked user defaults
  • Isolate WiX intermediate outputs by installer name to prevent incremental builds from reusing another version's MSI
  • Keep WiX shortcut registry state in the selected user or machine installation scope
  • Stop the WiX installer from overriding a chosen installation directory with the remembered one, which silently
    redirected wizard and INSTALLFOLDER= command-line choices back to the previous directory
  • Restore the WiX shortcut preferences on silent and basic-UI installations, which never run the wizard and so recreated
    shortcuts the user had removed
  • Scope the WiX PATH entry and remembered directory by the installation context Windows Installer resolved (ALLUSERS)
    rather than by the wizard's INSTALLSCOPE, so a per-user installation writes the user PATH instead of failing with an
    access denied error while trying to write the system PATH
  • Delete the WiX installer registry key on uninstall so nothing is left behind
  • Keep the WiX "Start program after install" checkbox working after a major upgrade instead of showing it inert, and
    check it by default
  • Default silent per-user WiX installations to the user programs directory so unprivileged installs succeed without
    requiring elevation or failing against Program Files
  • Forward Company, Copyright, RepositoryUrl, and WindowsIconFile from the Windows publish pipeline to the WiX
    installer build
  • Disable the WiX installation scope selector during maintenance or while a previous installation is detected, since
    Windows Installer keeps a product in the context it was first installed in
  • Uninstall directly from the WiX start menu shortcut, which now carries the application icon, instead of opening
    maintenance mode that ARPNOMODIFY disables
  • Mark the WiX shortcut components transitive so their conditions are re-evaluated on reinstall
  • Record the description, keywords (from project package tags), and copyright in the WiX package summary information
  • Authenticode-sign every executable and library in the WiX payload instead of only the entry executable, through an
    InstallerPayloadToSign item that can be redefined to narrow the set
  • Honour a preset InstallerPathRegistration in the WiX installer project instead of always overwriting it
  • Add the StageKit demo icon to its window and taskbar entry
  • Add the PublishAot build parameter (--publish-aot), defaulting to false, to support Native AOT ahead-of-time
    compilation across publishing, single-file packaging, and runtime restore operations in Fallout
  • Add macOS Developer ID code signing and notarization support for application bundles (.app) and packages (.dmg,
    .pkg) via xcrun notarytool and stapler, supporting keychain profiles (--mac-keychain-profile), Apple ID
    credentials (--mac-apple-id, --mac-password, --mac-team-id), App Store Connect API keys (--mac-api-key-path,
    --mac-api-key-id, --mac-api-issuer-id), signing identities (--mac-signing-identity), and programmatic options on
    MacAppBundleOptions, while retaining ad-hoc code signing (codesign --sign -) as the fallback when notarization or
    identity is not configured