# 安裝版、應用程式套件和可攜版，解除安裝差在哪

同樣是解除安裝軟體，有的會開啟一套解除安裝精靈，有的在 Windows 設定裡點一下就消失，還有的根本沒有解除安裝按鈕。先看這份軟體是怎麼放進電腦的，再找對應的移除入口。直接刪除一個桌面捷徑，只是把入口刪掉了。

## 安裝程式、應用程式套件和可攜目錄，分別管理什麼

傳統安裝程式通常會登記解除安裝入口，安裝程式檔案，也可能建立服務、啟動項目和檔案關聯。封裝的應用程式由 Windows 的套件管理機制處理。可攜軟體一般把程式放在一個目錄裡，但它是否把設定也放在那裡，要看軟體自己的實作。

| 這份軟體的形態 | 先從哪裡移除 | 不代表什麼 |
| --- | --- | --- |
| EXE 或 MSI 安裝程式安裝 | Windows 已安裝的應用程式、控制台或廠商解除安裝入口 | 刪除程式目錄不等於撤銷服務與登記 |
| Windows 管理的應用程式套件 | 開始功能表或已安裝的應用程式的解除安裝入口 | 市集歷程記錄還在不代表仍安裝 |
| 解壓縮後直接執行的可攜版 | 廠商的可攜版說明 | 一個目錄能執行不代表從未寫入外部資料 |

[微軟的解除安裝指南](https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98)列出了開始功能表、設定和控制台入口。實際能用哪一個取決於目前軟體。安裝來源也不能代替安裝形態判斷。用 WinGet 安裝過的程式仍可能由原廠解除安裝程式負責移除。

## 解除安裝前，確認自己正在用的是哪一份

同名軟體可能同時有使用者安裝、全機安裝、可攜版或預覽版。在已安裝清單裡先核對名稱、版本和發行者，再從目前執行的程式查看檔案位置。更新後的版本、不同安裝範圍和舊捷徑混在一起時，僅憑圖示相同很容易刪錯對象。

以 VS Code 為例，安裝程式版和解壓縮的 ZIP 版有不同移除方式。[VS Code 的官方解除安裝說明](https://code.visualstudio.com/docs/setup/uninstall)分別給出了路徑。刪除 ZIP 版的程式目錄也不自動等於清除使用者設定和擴充功能。解除安裝完成後如果它仍能開啟，核對開啟的路徑是不是另一份安裝，不要急著認定剛才的解除安裝失敗。

## 可攜版的資料是否隨目錄一起走，要讀軟體說明

VS Code 的 [Portable Mode](https://code.visualstudio.com/docs/editor/portable)可以在 ZIP 版旁邊建立 `data` 目錄，把使用者資料和擴充功能放在可攜目錄裡。這與一般 ZIP 版預設使用使用者目錄不是同一種設定。搬移或移除時，先看有沒有啟用該模式，再確認裡面儲存的設定、擴充功能和工作狀態是否還需要。

其他可攜軟體可能仍寫入 AppData、登錄、啟動項目。不能把 VS Code 的實作推廣到所有免安裝軟體。軟體有自己的解除安裝或清理說明時按那個說明處理。沒有說明時，先保留不確定的外部資料。資料夾名稱帶著品牌不代表它只屬於這份程式。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-windows-app-installation-types-zh-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-windows-app-installation-types-zh.webp" width="1360" height="454" loading="lazy" alt="確認這份軟體由誰管理">
  </picture>
  <figcaption>安裝形態決定移除機制。個人資料與共用內容仍要分別判斷。</figcaption>
</figure>

## WinGet 提供入口，不把解除安裝變成同一種動作

在終端機裡先查看已安裝對象，再按實際項目選擇。下面第一行只列出資訊，第二行會執行解除安裝。只有確認 ID 和目標以後才執行。範例中的 ID 要替換成目前清單裡的完整 ID。

```powershell
winget list
winget uninstall --id Vendor.ExampleApp --exact
```

[WinGet 解除安裝文件](https://learn.microsoft.com/en-us/windows/package-manager/winget/uninstall)說明它也能辨識一些不是由 WinGet 安裝的應用程式。`--purge` 主要對應可攜套件的處理，不能把它理解成所有軟體的個人資料都能一鍵徹底清空。官方解除安裝程式要求操作或重新啟動時，讓它完成。介面彈出來只是開始解除安裝。

## 程式消失和個人資料保留，是兩個結果

瀏覽器書籤、編輯器擴充功能、聊天記錄、資料庫和軟體產生的工作檔案，可能按設計留在個人目錄裡。解除安裝前先用軟體的匯出或備份功能儲存需要的內容，再確認匯出的複本可以開啟。市集的購買或下載歷程屬於帳戶記錄，也不是本機安裝清單。

解除安裝後重新整理已安裝清單，檢查原程式路徑與處理程序，再看資料是否按你的選擇保留。背景處理程序要核對路徑與歸屬，不要按名稱批次結束。公用執行階段程式庫和同廠軟體共用元件留給仍在使用它們的程式。不能把刪到空當成解除安裝成功的唯一標準。

具體程式解除安裝報錯看[解除安裝失敗排查](/tw/windows/blog/windows-uninstall-fails)，想處理留下的資料看[解除安裝後的目錄判斷](/tw/windows/blog/what-apps-leave-after-uninstall)。這兩步要放在確認安裝對象以後做。


Canonical: https://mole.fit/tw/windows/blog/windows-app-installation-types
