如何你但願你的 WPF 程序可以以 Windows 的保護機制保護起來,不被輕易反編譯的話,那麼這篇文章應該能幫到你。git
MSIX 是微軟於去年的 Windows 開發者日峯會 上推出的全新應用打包解決方案。其目的是取代舊式的軟件打包方式,可用於 Win3二、WindowsForm 、 WPF 和 UWP 等應用程序,該打包方式將支持 Windows7 和 Windows8.x。而且讓咱們的程序不會輕易反編譯。github
本文,咱們將嘗試如何使用 MSIX 來打包咱們的 DotNetCore 3.0 WPF 應用程序。windows
咱們打開 VS2019,新建一個基於 DotNetCore 3.0 的 WPF 項目。固然,你也可使用 CLI 來進行建立,命令爲 dotnet new wpf安全
接着,咱們在當前的解決方案中建立一個 Windows Application Packaging Project 項目,以下圖所示:bash
而後,設置咱們的項目名稱,以下圖所示:架構
最後,點擊 crate 。此時會彈出一個窗口,讓你選擇你的程序包運行的目標版本和最低版本,這裏咱們按需選擇便可,個人選擇以下圖所示:app
項目建立完畢後,項目中會有以下文件:工具
熟悉 UWP 開發的朋友應該對這個項目內容都很熟悉了,這裏就不作過多解釋。ui
右鍵當前項目的 Application 項,而後會有一個 Add Reference 選項卡,點擊它,此時會出來一個列表,列出當前解決方案中,咱們可進行打包發佈的項目,以下圖所示:code
這裏,咱們就選擇咱們以前建立的一個 WPF 項目 WPF1,對它進行打包。
進行上述操做以後,咱們能夠嘗試右鍵該項目,選擇 Build 操做,若是不出意外的話,會出現以下圖的錯誤:
因爲 MSIX 目前僅支持 DotNetCore 3.0 Self-Contained 的方式進行打包,這意味發佈的包不只包含咱們的應用程序,還會包含完整的 .NET Core 運行時。這種方式可能會使咱們的包更大,可是更顯著的優勢是咱們能夠部署到任何機器上,不管目標機器是否安裝了 .NET Core 3.0 的運行時,尤爲是當你打算將你的程序經過 Microsoft Store 進行分發。因此咱們須要解決上述說的問題。
右鍵咱們的主程序項目解決方案文件 XX.csproj,在 PropertyGroup 節點下添加一個 RuntimeIdentifiers 節點,以下所示:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWPF>true</UseWPF> <!--添加以下節點--> <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers> </PropertyGroup> </Project>
修改完畢後,從新編譯咱們的主程序。而後再選擇咱們的打包程序,右鍵執行 Deploy,能夠成功的將咱們的主程序部署到咱們的本身機器上。
此外,咱們能夠右鍵打包程序,點擊 Store 選項卡中的 Create App Packages。以下圖所示:
這裏爲咱們的應用程序選擇 x64 架構。而後執行 Create 便可。若是一切正常的話,會生成一個發佈目錄。會出現以下圖所示的界面:
注:咱們要依據咱們的目標平臺來選擇正確的架構方式。若是執行失敗,請確保你的架構方式選擇正確,不要選擇 Neutral 方式。
到時候,咱們只須要將咱們的這個發佈目錄發佈給目標用戶便可,同時,咱們也能夠將咱們應用發佈到應用商店。
衆所周知,傳統 WPF 程序如何直接打包發佈時很容易被反編譯的。咱們但願咱們的軟件可以被保護起來,不那麼被反編譯,因此可使用 MSIX 能夠嘗試一下。
使用 MSIX 是一種更安全有效的發佈方式,可以確保咱們的應用程序和客戶系統更加安全。這種方式的部署能將咱們的應用程序以沙箱的方式運行,因此安裝和卸載都很乾淨,不會出現各類反三觀的 流氓行爲,若是咱們的應用不走商店分發的話,咱們也能夠將咱們的程序包發給用戶,而後經過使用微軟在應用商店提供的打包工具 MSIX Packaging Tool 來進行安裝咱們的應用程序,一樣合適很方便的。
此外,咱們也可使用它來更新咱們已經發布的應用程序,感興趣的朋友能夠參考文末相關連接,這裏就不作介紹了。