本文中的最佳實務幫助你打造優秀的 Windows 應用程式,觸及並讓全球約 15 億多元的 PC 用戶感到滿意。 本文分成下列各節:
- 使用者體驗:本節中的指引可協助您改善應用程式的外觀、風格和可用性。
- 效能和基本概念:本節中的指引可協助您改善應用程式的效能和資源使用率。
- 作業系統/硬體最佳化:本節中的指引可協助您針對各種硬體設定最佳化封裝和分發。
- 應用程式探索和管理:本節中的指引可讓使用者更輕鬆地探索、安裝、更新和解除安裝您的應用程式。
- 協助工具:本節中的指引可協助您建立無障礙且包容的體驗。
- 安全性和隱私權:本節中的指引可協助您降低安全性風險,並符合使用者的隱私權需求。
使用者體驗(UX)
Windows 11 提供了 Windows 作業系統的視覺演進,改善了 Windows 的外觀、感覺和可用性。 研究顯示,使用者對 Windows 應用程式有很高的期待:
- 他們預期 Windows 應用程式能夠使用種類齊全的輸入。
- 他們預期今後裝置上的設計和互動模式都具有原生的外觀和質感。
- 他們預期支援新式視窗化工作流程和殼層整合點。
若應用程式遵循 Windows 風格和標準的 Windows 行為時,使用者不需要重新學習互動模式。 這種一致性可讓使用者更輕鬆地使用您的應用程式。 一個看起來很棒的應用程序可以給人留下良好的第一印象,但一個也易於使用並幫助用戶實現目標的應用程序會給人留下深刻的印象。
Windows 11 是基於 Windows 11 設計原則建構而成。 在建置應用程式時遵循這些指導方針,有助於滿足客戶對出色應用程式體驗的期望。 在考慮將最新和建議的 Windows 應用程式 UI/UX 模式合併到 Windows 應用程式中時,請專注於以下五個領域:
- 版面配置
- 介面互動
- 視覺化風格
- 視窗行為
- Shell 接口點
WinUI 3 透過其通用控制項提供許多這類體驗和風格的內建支援。 如果您無法使用 WinUI 3,請考慮模擬我們的 設計工具組 和 WinUI 資源庫中示範的樣式。
版面配置
Windows 應用程式會依照各種符合使用者需求的設定組態執行。 跨各種維度、裝置、視窗大小、DPI 設定和縮放設定測試應用程式的窗格和頁面。 即使調整為小型維度的大小,您的應用程式也應該如預期般運作。
DPI 意識
WinUI 應用程式會自動根據其執行的每個顯示器進行比例調整。 其他 Windows 程式設計技術 (Win32、WinForms、WPF 等) 不會自動處理每個監視器的 DPI 縮放。 如果不額外支援技術上的每個顯示器的DPI縮放,應用程式可能會出現模糊或尺寸不正確的情況。 如需詳細資訊,請參閱 Windows 上的高 DPI 桌面應用程式開發。
響應式版面設計
使用回應式設計技術,最佳化不同視窗大小的應用程式頁面。 請遵循移動瀏覽或捲動的指導方針,以確保無論應用程式視窗有多小,使用者都總是能存取您的內容。
介面互動
Windows 使用者可以選擇各種不同的輸入裝置與您的應用程式互動,而 Windows 具有人們習慣使用的特定系統體驗。 若您的應用程式遵循這些體驗,您的使用者將能夠可靠地使用您的應用程式。 當您的應用程式不遵循這些慣例時,使用者可能會感到困惑或令人沮喪。
對象上的指令
使用物件上命令 ,例如操作功能表、 撥動命令,以及鍵盤快速鍵。 Windows 11 可改善滑鼠右鍵操作功能表的行為,因此如果您的應用程式建立操作功能表,請參閱最新的操作功能表整合指引。 WinUI 文字控制項會自動公開剪下、複製和貼上命令,但其他控制項可能需要額外的工作才能支援這些命令。
文字互動
每當應用程式中有文字時,使用者都希望他們可以選取並複製它。 如果文字是可編輯的,他們也會預期可以剪下和貼上。 為使用者提供一致的快速鍵,可以讓他們更有效率地完成工作。 確保使用者能使用鍵盤、滑鼠或觸控板、觸控和筆執行這些操作。
平移和捲動
應用程式的 UI 很少會完全適合於無需捲動的單一頁面。 即使只有少數UI元素,使用者也可以自由調整應用程式視窗的大小,導致一些UI元素被隱藏。 請確保你的應用程式介面能正確支援捲動與平移(使用鍵盤、滑鼠或觸控板、觸控與筆),讓使用者能存取可能移出可見視窗區域的 UI 元素。
視覺化風格
Windows 11 的建構基礎是 Windows 11 設計原:不費力、冷靜、個人、熟悉和完整 + 一致。 遵循這些原則的體驗,能帶來優秀的 Windows 使用者體驗。
材質: Acrylic 和 Mica
Acrylic 和 Mica是視覺材料 ,可為互動式 UI 控制項提供不同的「遮蔽」視覺樣式。 使用 壓克力 將半透明樣式套用至暫時性表面,例如內容選單、彈出式視窗,以及使用者可以輕鬆關閉的其他元素。 使用Mica 為如標題列等持久的 UI 表面添加細緻的自適應色調。
如需壓克力和雲母材質的詳細資訊,請參閱 您可以執行哪些動作,讓您的應用程式在 Windows 11 上表現出色。
深色與淺色主題
深色和淺色主題可讓使用者依照視覺喜好來調整應用程式。 Windows 11 更新色調,避免使用純白和純黑,達到更柔和的視覺效果,也使色彩更顯愉悅。 WinUI 預設支援切換深色和淺色主題 (請參閱 XAML 主題資源)。 針對 Win32 應用程式,請參閱支援 Win32 應用程式中的深色和淺色主題。 (Win32 應用程式中的標題列不會自動適應深色主題。請務必遵循文章中的 標題列指引 )。
已重新整理的 UI 元素
Windows 11 幾何圖形 支援新式應用程式體驗。 結合逐漸圓潤的邊角、嵌套元素和一致的邊距,創造出柔和、寧靜和平易近人的效果,突顯目標的一致性和使用便捷性。
視覺效果和行為變更均已內建於 WinUI 3 之中。 盡量使用 WinUI 3,利用 Windows 開發團隊已經做過的工作。 如果你無法使用 WinUI 3,可以考慮模擬 設計工具包 和 WinUI 圖庫中示範的樣式。
捷徑功能表
操作功能表是使用者使用滑鼠右鍵按一下或點選並按住動作來叫用的快捷功能表,以顯示與使用者正在互動的控制項內容相關的命令功能表。 使用者預期操作功能表會在 Windows 各處保持一致的外觀和行為。 盡可能使用平台提供的內容功能表,使其與系統的其餘部分保持一致。
圖解和印刷樣式
Windows 11 已更新圖示 (「Segoe Fluent Icons」)、改善動畫圖示的支援,以及新的 UI 字型 (「Segoe UI Variable」)。 盡可能使用這些新圖示和字體,以便在 Windows 11 上保持一致。 新的字型帶來更柔和的幾何,使文字更容易辨讀。
如需 Windows 上圖示和排版的詳細資訊,請參閱 您可以 執行哪些動作,讓您的應用程式在 Windows 11 上表現出色。
視窗行為和風格
應用程式運行在 Windows 提供的框架中。 使用者期望內建的 Windows 外觀與行為能在不同應用程式視窗間保持一致。 若要確保您的應用程式在 Windows 11 上的外觀和功能符合使用者預期,請考慮支援此處列出的功能。
視窗排列配置
Windows 11 大幅提升了視窗快照功能,而「快照版面」選單是新功能,幫助使用者發掘並使用視窗快照的強大功能。 使用 [貼齊版面配置] 功能表,在不同的貼齊版面配置中測試您的應用程式,並確保您的應用程式支援不同的貼齊大小,例如 1/2、1/3 和 1/4 畫面。
如果應用程式預設未顯示 [貼齊版面配置] 功能表,請參閱 支援 Windows 11 傳統型應用程式的貼齊版面配置,瞭解啟用此功能的一些步驟。
標題列和標題按鈕
使用者可操作標題欄與標題按鈕(最小化、最大化、關閉)來調整大小、移動及關閉應用程式視窗。 穩定的體驗能幫助人們順利使用你的應用程式。 請參閱 Windows 應用程式標題列以瞭解適用於 Windows 的標題列和標題按鈕設計。
您可以使用 Windows App SDK API 來整合應用程式內容與 WinUI 3、.NET、WinForms 和 WPF 應用程式中的標題列。
圓角
在大多數情況下,您的應用程式視窗在 Windows 11 上預設為圓角。 如果您自訂應用程式視窗,而且缺少圓角,請參閱 在 Windows 11 的應用程式中套用圓角, 以了解一些您可以做到的事情。 您也應該避免自訂視窗框線和陰影,這可能會導致系統無法將視窗的角落變為圓形。
Shell 接口點
Windows Shell 整合可讓使用者從您的應用程式中受益,即使它沒有在前景執行或在螢幕上可見。 當您的應用程式與 Windows 良好整合時,它就會成為使用者與其他應用程式工作流程的一部分,並協助建立順暢的體驗。
即時通知
快顯通知是顯示在使用者畫面底部和通知中心的 Windows 通知。
- 個人化、可操作,並確保通知對使用者有用。 為您的用戶提供他們想要的東西,而不是您想讓他們知道的東西。
- 避免嘈雜的通知。 應用程式中斷次數過多會導致使用者關閉應用程式的這個重要通訊管道。
- 回應使用者的意圖。 選取通知後,應隨即啟動應用程式並呈現與通知相關的內容。 唯一的例外是使用者選取了與快速回覆等背景任務關聯的通知按鈕。
- 提供一致的通知中心體驗。 清除舊通知,保持通知中心整齊有序。
如需快顯通知的詳細資訊,請參閱通知設計基本概念。
效能和基本原理
Windows 使用者會預期 Windows 應用程式展現卓越的效能和基礎要素。 當您設計和建置應用程式時,請記住針對記憶體使用量、耗電量、回應能力、可靠性以及對長期永續性的影響進行最佳化。 分配時間來測試和測量應用程式的基本原理和效能,可確保您的使用者擁有一流的體驗。
遵循本節中的最佳實務,可協助您滿足客戶對這些準則的期望。
-
- 減少前景記憶體使用量。
- 最小化背景工作。
- 在程式在背景執行時釋出資源。
- 確保您的應用程式不會洩漏記憶體。
-
- 為選用功能啟用「按需付費」。
- 確定任何快取的大小都符合效率原則。
- 以符合磁碟效率的方式實作新的體驗。
- 盡可能最佳化個別二進位檔的大小。
-
- 不要在背景喚醒 CPU 或使用系統資源。
-
- 定義重要的互動案例,並新增 ETW 事件加以測量。
- 根據與使用者期望相關聯的互動類別來設定目標。
如需詳細資訊,請參閱 效能和基本概觀。 本文回答諸如「什麼是應用程式效能及其重要性」和「我可以使用哪些工具來測量 Windows 應用程式效能?」它還連結到案例研究、相關部落格、支援社群,以及有關效能工程如何透過減少您的應用程式對地球的影響來與永續叉的資訊。
作業系統和硬體最佳化
您可以透過多種方式建置、封裝和傳遞 Windows 應用程式。 本節中的最佳做法可協助您跨硬體組態最佳化應用程式的這些層面。
MSIX 應用程式連結和 Azure 虛擬桌面
若要讓您的應用程式在企業環境中以最佳方式執行,請新增 MSIX 應用程式附加的支援。
MSIX 應用程式連結可讓您將 MSIX 應用程式交付至實體和虛擬機器。 此功能專門適用於 Azure 虛擬桌面 (AVD),這是在雲端上執行的桌面和應用程式虛擬化服務。 搭配 AVD 使用 MSIX 應用程式連結可協助您改善使用者的登入時間,並降低企業的基礎結構成本。
Arm 上的 Windows
Windows 可以在 Arm 裝置上執行。 Arm 電腦的優點在於電池壽命較長,並提供行動數據網路的整合式支援。 這類電腦也提供絕佳的應用程式相容性,並可讓您執行現有的 x86 和 x64 應用程式而無需修改。
為了達到最佳效能,請透過打造完整 Arm 版本或優化程式碼庫中最能享受原生效能的部分,讓應用程式充分發揮節能的 Arm 處理器架構。 如需這些技術的詳細資訊,請參閱 Arm 上的 Windows 和 Arm64EC 適用於 Arm 上的 Windows 11 應用程式。
推送通知
推播通知 可讓您以效能最佳化的方式將資訊從雲端服務傳送至應用程式。 推播通知包括原始通知、徽章通知,以及從雲端服務傳送的快顯通知。
- 使用推播通知來喚醒應用程式或用戶端,而不是始終保持其運行以優化使用者裝置上的效能。
- 不要使用通知管道發送廣告。
- 尊重
retry-after標頭 – 此做法可保護服務並確保通知傳遞成功。 - 從系統中移除過期或撤銷的通道。 Windows 通知服務 (WNS) 不會處理過期或撤銷通道的要求。
- 請避免突然向 WNS 發出大量的請求。 這種模式可能會導致回應受到限制。
- 請利用
MS-CV標頭。 此標頭有助於端到端可追蹤性和診斷。 - 請設置備份機制,以因應通知無法運作的情況。
- 使用 Azure 通知中心 (ANH)。 ANH 可讓您存取參與功能,例如設定目標對象、排程通知和廣播通知。 如果您目前是僅使用 Windows 的開發人員,使用 ANH 可讓您在未來輕鬆地將通知基礎結構轉換至其他平台。
應用程式探索和管理
可靠的安裝、更新和卸載體驗是一致、高品質使用者體驗的重要組成部分。 下列最佳實務有助於確保您的應用程式在使用者探索和管理應用程式時留下良好的印象:
應用程式探索
- 在 Microsoft Store 上列出您的應用程式,可讓您的應用程式更容易被使用者探索。
- 如果你在多個通路上架設應用程式(例如網站和 Microsoft Store),就要在所有通路間使用一致的應用程式身份與更新機制。
- 透過 Microsoft Store 散發您的應用程式,以便使用者更容易探索。 請注意,Windows 使用者會透過 Windows 套件管理員 WinGet 存取市集應用程式。 如果您未發佈至 Microsoft Store,仍然可以透過 WinGet存放庫讓人們輕鬆在 WinGet 上探索您的應用程式。
安裝和解除安裝
- 支援個別使用者安裝。 這種支援使用戶能夠更輕鬆地安裝並避免 UAC 提示。
- 請確定應用程式安裝流程沒有錯誤、資訊清楚,並且審慎考慮到檔案的管理。 應用程式安裝流程不應該留下任何暫存檔。
- 盡可能避免要求提高權限進行安裝和要求作業系統重新啟動。
- 支援無訊息安裝。 此支援對於企業環境中的應用程式可管理性非常重要。
- 確保您的應用程式列在「應用程式 ->已安裝的應用程式」清單中。
- 請考慮使用 MSIX 確保使用者享有順暢的安裝、更新和解除安裝體驗。 MSIX 會自動移除應用程式二進位檔和資料。 如需瞭解已封裝應用程式如何處理檔案和登錄項目,請參閱瞭解如何在 Windows 上執行已封裝傳統型桌面應用程式。
- 對於未封裝的應用程序,請確保用戶可以通過“設置”中的 “應用程序 ->已安裝的應用程序 ”列表輕鬆卸載您的應用程序。 當使用者卸載您的應用程式時,請確定也移除了「開始」功能表項目、檔案、目錄、登錄專案和暫存檔案。 請考慮為使用者提供在解除安裝應用程式時保留資料的選項。
- 請確定在解除安裝期間,您的應用程式會移除所有二進位檔和應用程式資料。 使用者建立的內容應儲存在如
Documents等位置,這樣即使應用程式被解除安裝,使用者仍可保留這些內容。 - 避免安裝或更新可能需要重新啟動的系統二進位檔。
- 與 RestartManager 整合,在每次作業系統更新之間儲存和還原狀態。
更新
- 支援更新機制,讓您的應用程式在使用者方便時重新啟動。 考慮使用 Windows 應用程式 SDK 重新開機 API 來管理 WinUI 3 應用程式的行為。
- 請確定您的更新機制只會下載需要更新的已變更基本元件。 這種方法最大限度地減少了所需的網路頻寬。
- 提供更新和修復應用程式的方法。 請考慮 MSIX,自動管理更新修復。 如需詳細資訊,請參閱自動更新和修復應用程式。
- 請考慮採用基於推播通知的更新,或在應用程式啟動時或重啟時檢查是否有可用的更新。
其他資源
無障礙
無障礙的 Windows 應用程式能為盡可能多的人提供豐富且 包容的體驗 。 這種包容性也延伸到身心障礙者(包括暫時與永久)、個人偏好、特定工作風格或情境限制(如共用工作空間、開車、烹飪、眩光等)。
事實上, 世界衛生組織對身心障礙的定義並非個人特徵,而是個人無法順利與周遭實體和數位世界之間互動。
無障礙性對人員和企業都有益
無障礙性是一項責任
全世界有超過 10 億人具有某種形式的身心障礙。 然而,只有十分之一的人能夠獲得充分參與我們的經濟和社會所需的輔助技術。 通常,殘疾人的失業率是普通人失業率的兩倍。 而身心障礙——無論是情境性的、暫時性的還是永久性的——都可能在任何時候影響我們任何人。
無障礙性是一項商機
根據 Microsoft 無障礙方法資料工作表:在工作場所積極採行最佳做法以雇用和支援身心障礙者的包容性組織,其績效優於同業且更能吸引和留任頂尖人才。 千禧世代佔全球勞動力的75%,通常會選擇反映其價值觀的雇主。 多元與包容是其中最受重視的價值觀。
納入無障礙功能
將協助工具納入您的 Windows 應用程式可最大限度地提高使用者參與度、提高產品滿意度並鼓勵產品忠誠度。 主動設計和實作可存取的體驗,通常會降低長期的開發和維護成本。
如需建置無障礙 Windows 應用程式的詳細指引,請參閱 Windows 11 和 Windows 10 的無障礙功能。
無障礙測試
無障礙深入解析是一套功能強大的工具,可讓開發人員測試其應用程式和服務的無障礙性。 請使用以下工具來測試無障礙:
- 在 Windows 的 Accessibility Insights 中進行檢查。 檢查無障礙樹以找出容易解決的問題,例如標籤中的提示、角色設定錯誤,以及其他相關問題。
- 在 Windows 無障礙深入解析中的事件監控 · 無障礙深入解析。 如需事件監視的詳細資訊,請參閱 支援 UI 自動化控制項類型。
- 在您的 PR 或 CI/CD 中執行 Accessibility Insights 自動檢查。 如需詳細資訊,請參閱 axe-pipelines-samples。
- 修復您發現的所有錯誤,因為它們都會對可訪問性產生直接影響。
安全性與隱私權
不安全的應用程式可能成為攻擊者執行惡意活動的切入點。 即使您的應用程式沒有安全性錯誤,不良行為者也可以利用您的應用程式透過網路釣魚和其他形式的社會工程來發起攻擊,從而違反安全性和隱私權界限。 本節中的最佳做法可協助您降低與安全性和使用者隱私權相關的風險。
安全性指導方針
- 所有開發作業都請遵循安全性開發生命週期。
- 威脅建模可協助您避免安全性漏洞。
- 使用安全的程式庫、語言和工具可徹底減少實作上的漏洞。
- 安全預設能防止因使用者錯誤而產生的安全問題。
- 請勿要求系統管理權限來安裝您的應用程式。
- 在理想情況下,您的應用程式應同時支援系統管理安裝和個別使用者安裝,
- 使用 MSIX 封裝 是達成此目標的其中一種方式。
-
請勿要求系統管理權限來執行您的應用程式。
- 如果某些功能需要系統管理許可權, 請考慮將它們分成 自己的進程,以減少受攻擊面。
- 使用有保證記憶體安全的語言,例如 C#、JavaScript 或 Rust,特別是對於解析不受信任的資料等有風險的程式碼路徑。
- 使用編譯器和工具組提供的所有安全性防護功能 (請參閱適用於 Visual C++ 的 Microsoft Visual C++ 中的安全性功能)。
- 請一律使用您選擇的語言或架構標準程式庫進行密碼編譯和處理其他攸關安全性的程式碼。 不要試圖建立自己的。
- 以數位方式簽署應用程式的所有元件,包括安裝程式及任何既有的解除安裝程式。 也要簽署所有構成應用程式的 EXE、DLL 和其他可執行檔案。
- 數位簽章可讓使用者驗證應用程式的真實性,並允許企業系統管理員使用 Windows Defender 應用程式控制來保護裝置安全,
- 使用 MSIX 封裝是達成此目標的其中一種方式。
- 請確定所有網路通訊都採用安全傳輸方式進行,例如 SSL。
- 提供護欄或其他防護機制,有助於保護使用者免於意外執行有害動作,甚至是在攻擊者脅迫的狀況下。
- 簡單的「您確定要執行 X? 是/否」對話框通常無效,因為使用者習慣於按一下「是」。
由於各種原因,大部分的新式應用程式會收集和使用大量資料,包括個人資料。 使用資料的三項常見理由是遙測、產品改良和創造營收,但使用者和監管機構愈來愈重視這些做法對隱私權的影響。 他們期望應用程式在收集和使用資料方面應具備透明度和控制權。 請使用下列秘訣來滿足使用者的隱私權需求。
隱私權指導方針
- 請確定您的應用程式提供正確的隱私權原則。 理想狀況下,提供一份為一般讀者(你的用戶)撰寫的摘要文件,以及一份長篇法律政策(為你的律師撰寫)。
- 熟悉您所在應用程式所屬市場的隱私法規。 確保您的應用程式符合或超過任何揭露、使用權、刪除請求及其他隱私要求。
- 收集完成應用程式體驗所需的最少個人資料。
- 不要「以防萬一」收集資料。收集所有資料的理由是合理的,例如為了提升客戶體驗或促進變現。
- 在收集和儲存個人資料之前,請務必徵得使用者的同意。 為使用者提供一種簡單的方法來在未來恢復他們的決定。 請避免使用「暗黑模式」,例如在同意對話方塊中將「是」按鈕設計得比「否」按鈕更大或更顯眼。
- 請參考相關法規,以確定特定資料類型所需的具體揭露與同意。 例如,某些地區可能允許使用者檢視、變更或刪除您所儲存的資料。
- 如果您必須透過網路傳輸資料,請一律使用安全連線,例如透過 TLS 的連線。
- 避免將個人資料儲存在集中位置,例如網站。 如果必須儲存個人資料,請將儲存資料量減到最少,僅維持絕對必要的儲存時間長度,並確實對資料進行安全加密。
- 確認您使用的任何第三方程式庫或 SDK 也具有良好的隱私權做法。 這種擔憂不僅限於廣告 SDK——任何連接網路的函式庫都可能影響你應用程式用戶的隱私。