面向次世代的Windows App SDK 近況


  • 前言

本篇文章梳理了WinUI 3, Project Reunion和Windows App SDK之間的關系,並詳細介紹了如何創建Windows App SDK 1.0版中支持的Unpackaged App。

  • Windows App SDK 1.0

Project Reunion作為面向次世代Windows App Development的統一工具集。在2021年11月,第三個穩定版正式以1.0的版本號發布的同時,改名部果斷出手,以全新的名稱Windows App SDK迎接2022年以及Windows 11。

在某軟推薦UWP開發者遷移到Windows App SDK之后,曾有一波“放棄”UWP的新聞。其實在經歷了WPF,Silverlight,UWP這些長得挺像(XAML)的UI框架后,開發者升級到Windows App SDK和WinUI 3並不是一件很困難的事情。畢竟這湊齊了XAML的四樣寫法,寫代碼的事,能叫放棄么?空氣中頓時充滿了快活的味道……
下面談談Windows App SDK中繞不開的WinUI 3,WinUI 3作為Windows App SDK中最為核心和關鍵的部分,即下一代Windows desktop app開發的原生UI框架,包括托管C#和非托管的C++以及Win32 API。可以理解為某軟對過去二十年desktop開發技術的反思和集大成者。
隨着版本的迭代,當前WinUI 3的定位較早先有了一些變化。和WinUI 2專門為UWP服務不同,WinUI 3現在不想和UWP扯上關系。

早先預覽版中對UWP的支持描述已蹤跡難尋,可以理解為縮小了支持的范圍,集中精力Make Desktop Great Again!根據當前版本的使用體驗,有兩點值得注意。首先就1.0的版本而言,仍有諸如CameraCaptureUI,InkCanvas和PrintManager等在UWP時代頗為實用的組件沒有替代品。其次就是Win10 1809+的版本限制,可以想象對跑在Win7甚至更老系統上的軟件而言,升級近似完全重寫。

  • Unpackaged App

Windows App SDK 1.0非常有意思的一點,既是對Unpackaged App的支持。和之前無責任猜測的不同,這次對Unpackaged App的支持非常徹底,使用起來也很方便。Unpackaged App不再通過MSIX格式打包上傳商店,而是徹底回歸到.exe或者.msi的安裝方式。
接着我們用VS 2022來創建久違了的exe程序。除了VS 2022以外,我們需要額外安裝Windows App SDK runtime and MSIX packages

下載完成解壓后,根據電腦的環境選擇對應的安裝文件。例如我是64位的Win11系統,就選擇WindowsAppSDK-Installer-x64,雙擊后會自動完成安裝。

 在完成以上准備后,在VS2022中創建Blank App, Packaged(WinUI 3 in Desktop)工程。經歷過UWP DesktopBridge創傷的同學可能會發現,即使是Packaged App,也不再需要額外的Packaging Template工程了。簡潔單一的解決方案界面讓人心情愉悅很多。

 然后讓我們鼠標右鍵選擇編輯工程文件,在工程文件編輯窗口中,添加WindowsPackageType節點並設置為None。

<WindowsPackageType>None</WindowsPackageType>

 最后一步則是在開始Debug的下拉列表中,選擇Unpackaged啟動配置文件。至此我們的第一個使用Windows App SDK的exe程序就做好了。點擊開始Debug的按鈕或按下F5即可成功運行。

 

 故名思意Unpackaged App我們可以直接在Output目錄,或者Publish目錄通過雙擊exe運行。如下圖所示,在成功發布之后,即可復制整個publish目錄到其他Win10 1809+的機器上運行。

 

美中不足當前版本會在pulish目錄包含大量的Dll文件。同時運行exe程序的機器也需要安裝Windows App SDK Runtime。恍惚間又回到了二十年前在XP安裝.NET Runtime的場景,歷史真是一個輪回。

這是我們邁出體驗Windows App SDK 1.0的一小步,也同時祝願這是某軟為Make Desktop Great Again所構築的堅實起點,為Windows及許許多多沉默的桌面開發者跨出再塑輝煌的一大步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM