-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Summary
Uninstalling Coder Desktop via the Control Panel "Uninstall a program" wizard completes successfully, but the Coder Desktop.exe process (and the VPN service background process) remain running in Task Manager. This causes reinstallation to silently fail — the app never launches again.
Root Cause
The MSI installer has no mechanism to close the running desktop app process during uninstall. The ServiceInstaller manages the Windows service lifecycle (StopOn = InstallUninstall_Wait, RemoveOn = Uninstall_Wait), but there is no corresponding WixCloseApplication or custom action to terminate the user-space desktop app.
After uninstall, the old Coder Desktop.exe process continues running and holds the AppInstance singleton key (Coder.Desktop.App via AppInstance.FindOrRegisterForKey). On reinstall and relaunch:
- The new instance calls
AppInstance.FindOrRegisterForKey("Coder.Desktop.App") - It finds the old (zombie) instance, so
mainInstance.IsCurrentisfalse - It calls
RedirectActivationToAsyncto the old instance - The old instance's
OnActivatedreceives aLaunchactivation kind, which hits the unhandleddefaultcase - The warning
activation for "Launch", which is unhandledis logged and nothing else happens - The new instance exits, and the app appears to never start
Steps to Reproduce
- Install Coder Desktop and launch it (the app runs in the system tray)
- Uninstall via Control Panel → "Uninstall a program"
- Observe in Task Manager that
Coder DesktopandCoder VPN Servicebackground processes are still running - Reinstall Coder Desktop and launch it
- The app never appears — no tray icon, no window
- Check the logs for:
[WRN] activation for "Launch", which is unhandled
Expected Behavior
- The uninstaller should terminate the running
Coder Desktop.exeprocess before removing files - The VPN service should be fully stopped and removed
- After reinstall, the app should launch normally
Suggested Fix
Add a WixCloseApplication element (from WixExtension.Util) to the MSI project targeting Coder Desktop.exe. This will gracefully close the running app process during uninstall/upgrade before files are removed. For example in Installer/Program.cs:
project.Include(WixExtension.Util);
project.WixSourceGenerated += doc =>
doc.FindFirst("Package").AddElement(
WixExtension.Util.ToXName("CloseApplication"),
"Target=Coder Desktop.exe; CloseMessage=yes; RebootPrompt=no");Created on behalf of @uzair-coder07