發佈你的第一個 Windows 應用程式

你已經開發了 WPF、WinForms 或 WinUI 3 應用程式——現在你需要把它交到使用者手中。 本指南將完整介紹從完成版本到正式發佈應用程式的全程,涵蓋兩種最常見的發行情境:發佈到 Microsoft Store(建議)以及設定 直接下載 發行版。

小提示

Microsoft Store 是大多數開發者的推薦路徑。 它負責程式碼簽署、更新傳遞與發現,且是接觸 Windows 用戶最省力的方式。 當你有特定商業、企業或發行需求,而商店不符合時,直接下載是正確的選擇。

步驟一:選擇你的分發路徑

你的發佈路徑決定了你的程式碼簽署成本、更新機制、使用者如何發現你的應用程式,以及企業如何部署它。

選擇你的Windows應用程式的分發路徑,有詳細比較。 簡言之:

  • Microsoft Store — 大多數應用程式都推薦使用。 免費簽名、內建更新、廣泛的可搜尋性,以及值得信賴的安裝體驗。 需免費開發者帳號——請於 storedeveloper.microsoft.com 註冊。
  • 直接下載 —— 適合擁有自有商店的商業獨立軟體供應商、企業營運應用程式或包含商店不允許內容的應用程式。 你負責簽署、主持和更新。

大多數新的獨立應用程式都很適合 Store。 如果你不確定,就從那裡開始。

步驟 2:設定程式碼簽章

如果你要將 MSIX 套件發佈到 Microsoft Store: 就跳過這個步驟。 Microsoft 會在認證過程中自動重新簽發你的套件。

如果你要提交 Win32 MSI/EXE 安裝程式給 Microsoft Store:,提交前仍需簽署安裝程式。 安裝程式及其 PE 檔案必須以憑證簽署,並連結至 Microsoft 受信任根程式 中的 CA。 自簽憑證則不被接受。 請參閱 MSI/EXE 的應用程式套件要求。

如果你是直接分發: 你需要一份可信的程式碼簽署憑證。 未簽名應用程式和自簽名應用程式會觸發強烈的 SmartScreen 警告,部分企業環境會完全封鎖這些警告。

適用於Windows應用程式開發者的Code簽署選項有完整的比較。 快速指引:

  • 美國、加拿大、歐盟或英國組織 / 美國或加拿大個人:Azure 工件簽署(前稱可信簽署) — 約每月9.99美元,無需硬體令牌,可整合CI/CD管線。 這是 Microsoft 推薦的非商店發行選項。
  • 美國/加拿大以外的個人開發者,或不符合Azure工件簽名資格者:來自 DigiCert 或 Sectigo 等憑證授權機構的 OV 證書——通常每年 150–300 美元。

備註

簽署應用程式是良好首次體驗的必要條件。 新簽字應用程式在建立聲譽前仍會顯示 SmartScreen 警告,但警告比未簽名應用程式輕微得多。 開發者可以參考 SmartScreen 聲譽 ,了解早期用戶會看到什麼。

步驟三:打包你的應用程式

你如何打包應用程式取決於你使用的應用程式框架。

WinUI 3

使用 Windows 應用程式 SDK 專案範本製作的 WinUI 3 應用程式預設是已打包成 MSIX 。 當你在 Visual Studio 建置解決方案時,輸出會是一個 .msix 或 .msixbundle 檔案,準備提交給商店或直接發佈。

如果你想發佈一個未封裝的 WinUI 3 應用程式(不含 MSIX 包裝),請參見 「發佈未封裝的 WinUI 3 應用程式」。 未封裝的應用程式需要在使用者的電腦上安裝 Windows 應用程式 SDK 執行階段(可透過執行階段安裝程式另外安裝,或透過自含式部署隨附)。 PublishSingleFile支援 Windows 應用程式 SDK 1.5 及以上版本中未封裝、自包含的應用程式 — 詳情請參見單檔案 EXE 要求。

WPF 與 WinForms

WPF 與 WinForms 專案預設不會產生 MSIX。 您有幾個選項:

選項A:Windows 應用程式封裝專案(MSIX)
在 Visual Studio 的解決方案中新增一個 Windows 應用程式封裝 Project。 這會將你的應用程式包裝在 MSIX 套件中,提供套件身份、商店資格,以及基於應用程式安裝程式的更新。 這是推薦的商店提交方式。

→ 使用單一專案 MSIX 打包您的桌面應用程式

選項 B: dotnet publish (獨立的 EXE)
對於直接下載的發行,dotnet publish 搭配 --self-contained 會產生包含 .NET 執行環境的獨立 EXE — 使用者無需單獨安裝.NET。

dotnet publish -c Release -r win-x64 --self-contained true

這會產生一個適合壓縮、散布或在安裝程式中包裝的檔案資料夾。 它不直接符合商店資格。

選項 C:依賴框架的發佈
如果你願意要求使用者安裝正確的 .NET 執行時期,可以省略 --self-contained。 輸出較小,但有執行時依賴性。

商店提交流程透過 合作夥伴中心進行。

步驟一覽:

  1. 建立開發者帳號 — 免費。 請於 storedeveloper.microsoft.com 報名。 這個帳戶是永久的。
  2. 保留您的應用程式名稱 — 在提交前,請先在合作夥伴中心認領您的應用程式名稱。 這個名字在開發過程中會被保留給你。
  3. 建立並打包你的應用程式 — 建立符合商店需求的 MSIX 套件。 對於商店提交,MSIX/AppX 套件不需要 CA 信任的簽章——Microsoft 會在認證後用 Microsoft 憑證重新簽署套件。 如果你使用 MSI 或 EXE 安裝程式在商店外發佈,Windows 安全功能建議且預期使用 Authenticode 簽名。
  4. 建立你的投稿 — 上傳你的包裹,提供店鋪資訊(描述、截圖、分類、年齡分級),並設定價格。
  5. Certification — Microsoft審查你的申請是否符合政策。 新應用程式通常需要幾個工作天取得認證。
  6. 發佈 — 一旦認證,你的應用程式會顯示在商店中並開放給用戶。

建立您的應用程式送出
→ 應用程式套件需求

步驟 4b:直接分發(替代路徑)

如果你是在商店外發佈應用程式,你有多種包裝和主機選項。

MSIX 與應用程式安裝程式(.appinstaller)

隨附附 .appinstaller 檔的 MSIX 套件支援自動更新檢查。 當使用者從 .appinstaller 檔案安裝應用程式時,Windows 會定期檢查你指定的新版本網址,並主動提出更新。

這很重要

ms-appinstaller URI 協定(允許直接從網頁連結安裝)自 2023 年 12 月起因安全考量被預設停用。 使用者必須下載.appinstaller或.msix檔案並手動開啟。
→ 發行功能的現況

ClickOnce(WPF 與 WinForms)

ClickOnce 是一種內建於 Visual Studio 的 .NET 部署技術,支援 WPF 和 WinForms 應用程式的自動更新。 使用者從託管清單安裝,ClickOnce 則透明地處理更新檢查。

ClickOnce 不支援 WinUI 3 應用程式 ——建議改用 MSIX 搭配 .appinstaller 。

→ ClickOnce 的安全與部署

EXE 安裝程式

使用像 WiX Toolset 或 Inno Setup 這類工具製作的傳統 EXE 安裝程式對使用者來說既熟悉又容易製作。 這些都是許多 Windows 應用程式中已建立的社群工具。 請注意,EXE 安裝程式要求你自行實作更新機制。

託管你的下載

常見的直接下載主機選項:

  • GitHub Releases — 免費、有版本化,且能良好整合自動化建置流程。 適合開源及小型商業應用程式。
  • 你自己的網站 ——完全掌控下載頁面、分析數據和支付流程。 如果你的應用程式成長,你需要穩定的儲存空間和 CDN 容量。
  • 第三方商店 ——有些開發者會透過像 itch.io 這樣的商店來發行與遊戲相關的應用程式。

winget 用於提高可發現性

將您的應用程式提交到 Windows 封裝管理員 社群倉庫,即可透過 winget install 安裝應用程式。 這對於偏好命令列工具的開發者和重度使用者特別有價值。 提交是針對社群清單庫的拉取請求,且是免費的。

步驟 5:設定自動更新

讓使用者持續使用最新版本,減輕支援負擔,並確保安全修正能迅速送達。

分配路徑 更新機制
Microsoft Store(MSIX) 自動 — 商店會在背景中分發更新
Microsoft Store (MSI/EXE 安裝程式) 手動 — 應用程式或安裝程式負責更新;商店不會推送更新給現有用戶
MSIX + .appinstaller 內建 — Windows 會檢查你在排程中指定的 URL
ClickOnce 內建 — 啟動時會檢查更新
EXE 安裝程式或自包含的執行檔 EXE 需手動實施

對於沒有內建更新機制的 EXE 或自成一格的部署,Velopack 是一個社群工具,為.NET應用程式加入自動更新與安裝功能。 它不是 Microsoft 的產品——請根據你自己的需求來評估它。

步驟 6:管理新應用程式的 SmartScreen

每個新應用程式——不論它的簽名有多好——在首次下載時都會觸發 SmartScreen 警告,直到累積足夠的下載歷史為止。 這是預期中的,也很正常。 以下是如何妥善處理的方法:

  • 每份授權書都要簽字。 未簽名的應用程式會顯示更嚴重的「Windows 保護你的電腦」封鎖。 簽名應用程式會顯示較柔和的「未識別應用程式」警告,使用者可以較輕鬆地繞過。
  • 對早期使用者設定期望。 告訴測試者和早期採用者該期待什麼。 在發佈公告中簡單說明(「你可能會在首次執行時看到 SmartScreen 提示——這是新應用程式的正常現象;點選「更多資訊」再點「Run anyway」),可以避免混淆和安裝被放棄。
  • 要有耐心。 聲譽會隨著下載量自然累積。 消費者端點沒有手動提交流程來加速。

→ SmartScreen 對開發者的聲譽 說明完整的聲譽模型、使用者在各階段看到的內容,以及企業政策考量。

下一步是什麼

一旦你的應用程式發布,你可以:

  • 監控應用程式健康狀況與評分 — 合作夥伴中心提供商店應用程式的崩潰分析、用戶評分及評論管理
  • 以分階段推出管理新版本 — 商店支援在正式發佈前,先向一定比例的用戶推出新版本
  • 設定遙測 — 考慮整合像 Azure 應用程式 Insights 或其他分析 SDK 的崩潰與使用分析服務,以了解你的應用程式的使用方式
  • 回應用戶回饋 — 合作夥伴中心會顯示商店評論;對於直接下載的應用程式,可以考慮使用回饋管道(GitHub Issues、專用電子郵件或社群論壇)