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甚至更老系統上的軟體而言,升級近似完全重寫。
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的場景,歷史真是一個輪迴。