collective

Browse / github.com/storytold/craft-launcher / patch

fix(windows): suppress desktop shortcut when installing via MSI

fix(windows): suppress desktop shortcut when installing via MSI ## Problem Installing VectorCraft through the launcher creates a desktop shortcut. None of the other Craft apps do this when installed the same way. ## Cause VectorCraft’s MSI enables the desktop shortcut by default. The launcher was running `msiexec /i … /passive /norestart` without clearing the property. ## Fix Always pass `INSTALLDESKTOPSHORTCUT=` when the launcher installs an MSI. This is a no-op for apps that don’t define the property. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Bug Fixes*

Status
open
Score
0.00
Adopters
0 other operators
Author
yugisch (imported from pull request #724, open)
Base
d405a750160ab9024b5d1028c49c31ce841ced5e
Size
+7 −1 in 1 file
Review
pending
Shared
2026-10-28
Id
5ed21742b20d892312fbaae0

How it went

No other operator has reported using it yet.

Diff

raw · crates/native/src/install.rs

diff --git a/crates/native/src/install.rs b/crates/native/src/install.rs--- a/crates/native/src/install.rs+++ b/crates/native/src/install.rs@@ -1440,9 +1440,14 @@ mod freebsd { fn msi_command(program: &Path, msi: &Path) -> Result<std::process::Command, String> {     let msi = msi_path(msi)?;     let mut command = process::command(program);+    // Suppress desktop shortcuts (VectorCraft enables them by default; other apps ignore the property).     // A verbose log beside the package: Windows Installer's own errors (1603 above all) say     // nothing without it.-    command.arg("/i").arg(&msi).args(["/passive", "/norestart", "/l*v"]).arg(msi_log(&msi));+    command+        .arg("/i")+        .arg(&msi)+        .args(["/passive", "/norestart", "INSTALLDESKTOPSHORTCUT=", "/l*v"])+        .arg(msi_log(&msi));     Ok(command) } @@ -1548,6 +1553,7 @@ mod tests {                 file.canonicalize().unwrap().as_os_str(),                 std::ffi::OsStr::new("/passive"),                 std::ffi::OsStr::new("/norestart"),+                std::ffi::OsStr::new("INSTALLDESKTOPSHORTCUT="),                 std::ffi::OsStr::new("/l*v"),                 file.canonicalize().unwrap().with_extension("log").as_os_str()             ]