coder / coder/coder-desktop-windows
Uninstall does not terminate running desktop app process, blocking reinstall
- Dominant language
- C#
- Stars
- 26
- Forks
- 12
- Avg merge
- 6h 50m
- Merged PRs (30d)
- 1
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:
1. The new instance calls `AppInstance.FindOrRegisterForKey("Coder.Desktop.App")`
2. It finds the old (zombie) instance, so `mainInstance.IsCurrent` is `false`
3. It calls `RedirectActivationToAsync` to the old instance
4. The old instance's `OnActivated` receives a `Launch` activation kind, which hits the unhandled `default` case
5. The warning `activation for "Launch", which is unhandled` is logged and nothing else happens
6. The new instance exits, and the app appears to never start
## Steps to Reproduce
1. Install Coder Desktop and launch it (the app runs in the system tray)
2. Uninstall via Control Panel → "Uninstall a program"
3. Observe in Task Manager that `Coder Desktop` and `Coder VPN Service` background processes are still running
4. Reinstall Coder Desktop and launch it
5. The app never appears — no tray icon, no window
6. Check the logs for: `[WRN] activation for "Launch", which is unhandled`
## Expected Behavior
- The uninstaller should terminate the running `Coder Desktop.exe` process before removing files
- The VPN service should be fully stopped and removed
- After reinstall, the app should launch normally
## Suggested Fix
Add a [`WixCloseApplication`](https://wixtoolset.org/docs/schema/util/closeapplication/) 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`:
```csharp
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
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in Installer/Program.cs and review the MSI project’s existing ServiceInstaller lifecycle and WixExtension.Util usage. Build or run the uninstall and reinstall flow with Coder Desktop running, then verify that both desktop and VPN processes are stopped during uninstall and that the app launches normally after reinstall.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- build-system, desktop
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 65/100