Windows 10 UWP 44 of N: MSIX 應用程式封裝工具 Part 2 - MSIX Packaging tool 編輯MSIX 檔案

介紹MSIX Packaging tool 的編輯功能喔!

前言

上一篇文章最後有包裝了 x64,x86版本的CPU-Z軟體使用MSIX。讓我們看看打包好的MSIX一些設定!這邊會包含UWP的一些開發知識,所以需要先了解一下關於UWP的開發流程喔!


接著我們繼續看看MSIX Packaging Tool的其他功能!如果使用編輯MSIX就會看到一下的畫面。

預設編輯畫面

這個介面就是採用 Master-Detail的設計,主要分類功能在左邊的選單細節在右邊的畫面。先是來看Package information的細項可以發現在先前打包的相關資訊!這邊可以看到有個Manifest file的部分,這個如果是寫過UWP的開發人員就會知道是當初UWP必須需要宣告才能使用相關API的檔案,按下Open file就可以看到完整的app.manifest檔案!

manifest file

如果要支援更舊的Windows 就需要使用MSIX Core的功能,選取 Add support for MSIX Core to this package.的選項就可以看到需要針對系統版本!

然後我們來看左邊由尚屬下來第三個選項 Capabilities的部分

這邊就基本上跟 Visual Studio 2019 打開 app.manifest 一樣的介面~使用了MSIX就會擁有所謂的 App ID 的概念在應用程式!這樣可以讓系統或是開發人員提供識別度並且可以針對不同應用程式的隱私權進行設定。如下圖是 Windows 10 設定內的隱私選單內

右邊下方能夠存取Camera權限的應用程式,如果是傳統應用程式(沒有 Application ID)則是會在該選項更下方的介面如下圖

這邊就只能一次性是否讓傳統桌上型程式使用Camera!如果要針對應用程式就會需要 App ID的概念喔,使用MSIX封裝就可以不需要修改應用程式就能夠支援有 App ID。

然後選擇 Virtual registry的介面就是如下圖,這邊就是讓應用程式能夠存取到 Registry這邊使用虛擬的註冊表可以讓系統解除該應用程式的時候部會有殘留的設定在系統。可以使用 Import 來把寫好的註冊表檔 ( .reg )直接匯入

然後可以看到最後的選項 Package files,這邊如下圖

這邊MSIX使用了VFS(Virtual file system)的功能所以MSIX包裝後的應用程式安裝且執行路徑並不會是在 C:\Program Files 或是 C:\Programe Files (x86)!

最後這邊有個去年才推出的功能 Services report

這個功能就是讓MSIX也可以安裝 Windows Services,如果有些應用程式需要用到Windows Services且想使用MSIX進行封裝就可以使用最新版本的MSIX Packaging Tool且安裝的Windows 10必須要在 Windows 10 2004版本之後的才能夠使用喔。關於Windows Service on MSIX可以參考此連結 (Converting an installer with services - MSIX | Microsoft Docs

 

建立 MSIX Bundle檔案

開發環境

  • Windows 10 latest
  • Windows 10 SDK latest

接下來來整合MSIX的不同指令架構( x64, x86, ARM, ARM64)的組合包。使用MSIX的好處也像很多不同架構處理器平台可以針對CPU架構來支援並且安裝最適合的版本在該裝置上。接者我們來看看該怎樣合併不同架構的MSIX檔案八~

我先把CPUZ的X64以及X86的MSIX檔案放在一個空白的資料夾,然後把X86以及X64的MSIX檔案放進去該資料夾,然後使用 MakeAppx.exe這個檔案會跟 Windows 10 Sdk綁再一起!所以要先安裝Windows 10 Sdk建議安裝最新版本的Sdk。然後使用以下指令

makeappx.exe bundle /d "C:\Users\<username>\Downloads\PackageTemp" /p "C:\Users\<username\Downloads\PackageTemp\<bundle package name with .msixbundle>"

這樣就是把兩包MSIX(X64, X86)包裝再一起。接著就看要步要走上架到Microsoft Store還是要自己Host的方式拉~


總結

MSIX在微軟目前的設計是可以跨平台的請參考Github ( GitHub - microsoft/msix-packaging: MSIX SDK ) ,在Project reunion 中的一環。等後續Project reunion可以玩的時候就再來看看如何整合先關的方式讓Windows app能又更加現代化的功能!現今的Mobile app都有很多特性,而Windows當初設計並沒有設計這些特性(比如來說:串流安裝、強制只能使用最新版本APP、支援框架(PSF)、延伸套件(Extension)…等)MSIX能提供的功能以及支援的平台可以參考 => ( Supported platforms - MSIX | Microsoft Docs ) 之後來實際做幾個.NET app並且使用MSIX封裝來看看實際使用情境。

 

***以上Code以及說明都有可能隨著Windows 10 的版本以及Visual Studio 版本有所調整!***

參考資料 Microsoft Docs,Windows Blogs for developer

下次再分享Windows 10 的新技術拉~