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
@@ -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() ]