From 17b17bcce310ad64ab49dee7b4df5a4b004210ff Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 6 Oct 2026 07:51:06 -0400 Subject: [PATCH] Windows packaging: Start Menu/Add-Remove icon, no console window, correct description The MSI Icon id had no .ico/.exe extension, which Windows Installer needs for advertised shortcuts and ARPPRODUCTICON, so both showed a blank icon. Release builds of the desktop app are now GUI-subsystem (no console window; the CLI stays a console program), the shortcut/summary description names what EffectCraft does, and packaging-lint rejects an Icon id without an extension. Found in printcraft#57. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/packaging-lint.yml | 4 ++++ apps/effectcraft/src/main.rs | 2 +- packaging/windows/effectcraft.wxs | 10 +++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/packaging-lint.yml b/.github/workflows/packaging-lint.yml index 17797b9d..8c6210c4 100644 --- a/.github/workflows/packaging-lint.yml +++ b/.github/workflows/packaging-lint.yml @@ -47,6 +47,10 @@ jobs: - name: XML, desktop entry, AppStream, Flatpak manifest run: | xmllint --noout packaging/windows/effectcraft.wxs packaging/macos/*.plist* packaging/linux/*.xml* + # Windows Installer needs Icon ids ending in .ico or .exe, or shortcuts show a blank icon. + if grep -oE '"$RUNNER_TEMP/ai.storyteller.effectcraft.metainfo.xml" appstreamcli validate --no-net --explain "$RUNNER_TEMP/ai.storyteller.effectcraft.metainfo.xml" diff --git a/apps/effectcraft/src/main.rs b/apps/effectcraft/src/main.rs index 3f310846..84cdbebb 100644 --- a/apps/effectcraft/src/main.rs +++ b/apps/effectcraft/src/main.rs @@ -4,7 +4,7 @@ //! //! `--control ` (or `EFFECTCRAFT_CONTROL_PORT`) starts a localhost JSON-lines control server; //! see `effectcraft_ui_egui::control` for the methods. - +#![cfg_attr(all(target_os = "windows", not(debug_assertions)), windows_subsystem = "windows")] #![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)] // Built everywhere so its tests run on every platform; only Linux AppImages use it. diff --git a/packaging/windows/effectcraft.wxs b/packaging/windows/effectcraft.wxs index a973bb3a..5a70002b 100644 --- a/packaging/windows/effectcraft.wxs +++ b/packaging/windows/effectcraft.wxs @@ -17,15 +17,15 @@ Scope="perMachine" Compressed="yes" Language="1033"> - + - - + + @@ -45,8 +45,8 @@ + Description="EffectCraft motion graphics and visual effects" WorkingDirectory="INSTALLFOLDER" Advertise="yes" + Icon="EffectcraftIcon.ico" IconIndex="0" />