coder / coder/coder-desktop-windows

Uninstall does not terminate running desktop app process, blocking reinstall

Đang mở Phù hợp với người mới
#166 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
C#
Star
26
Fork
12
Merge trung bình
6 giờ 50 phút
Pull request đã merge (30 ngày)
1

Mô tả

## 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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu trong Installer/Program.cs và xem xét vòng đời ServiceInstaller hiện có của dự án MSI cũng như việc sử dụng WixExtension.Util. Xây dựng hoặc chạy quy trình gỡ cài đặt và cài đặt lại khi Coder Desktop đang chạy, sau đó xác minh rằng cả các tiến trình desktop và VPN đều được dừng trong quá trình gỡ cài đặt, đồng thời ứng dụng khởi chạy bình thường sau khi cài đặt lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
csharp
Lĩnh vực
build-system, desktop
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
65/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.