coder / coder/coder-desktop-windows

Uninstall does not terminate running desktop app process, blocking reinstall

Ouverte Adaptée aux débutants
#166 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
C#
Étoiles
26
Forks
12
Merge moyen
6 h 50 min
PR mergées (30 j)
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

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp
Domaine
build-system, desktop
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
65/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.