前面一篇我們介紹了 Adaptive Cards 的基礎知識,而在 Windows Developer Day 的 Modern Application Experience 環節,還有一個需要劃重點的知識點:MSIX & Advanced Installer。 下麵是 WDD 的展示部分: MSI ...
前面一篇我們介紹了 Adaptive Cards 的基礎知識,而在 Windows Developer Day 的 Modern Application Experience 環節,還有一個需要劃重點的知識點:MSIX & Advanced Installer。
下麵是 WDD 的展示部分:
MSIX
如 WDD 上 Kevin Gallo 所述,MSIX 要實現的是一個完備的容器化解決方案,它繼承了 UWP 幾乎所有的重要特性和優點,可以應用到所有 Win32,WPF,Windows Forms 和 UWP 應用里。
重要的是 MSIX 打包格式 MSIX Packaging SDK 已經在 GitHub 開源了:GitHub Microsoft/msix-packaging
Microsoft 官方的 MSIX Packaging SDK 描述:
The MSIX Packaging SDK project is an effort to enable developers on a variety of platforms to pack and unpack packages for the purposes of distribution from either the Microsoft Store, or their own content distribution networks.
可以看出,它是一個跨平臺 SDK,可以讓多平臺的開發者使用去打包和解包,為了分發到 Microsoft Store 或 開發者自己的內容分髮網絡。
項目中包含了可以解包 .msix .appx 文件的跨平臺 API 支持:
關於這個 SDK 的依賴項,安裝環境要求和每個平臺 make 命令對應的文件,大家可以在 GitHub 詳細查看。從描述信息看,項目支持在 Windows,Mac,Linux 上編譯,另外還支持在 Windows 上為 Android 平臺編譯。
Advanced Installer
概述
官方地址:Advanced Installer Express Edition
Advanced Installer 是一個由社區力量開發的工具,在 WDD 上發佈了 Advanced Installer Express 版本。它是一個免費工具,可以讓你手頭的傳統桌面應用變得現代化,創建成 .appx 文件包,也就是上面說的 Modern Application Experience. 創建後的 .appx 文件可以發佈到應用商店,就像 UWP 能做的一樣。
Advanced Installer 具有以下幾個特點:
- 轉換簡易--它可以監控操作系統中的 MSI/EXE 安裝程式,方便的使用 Advanced Installer 轉換為 APPX 和 MSI/EXE 包;
- 集成虛擬機--它可以自動啟動一個虛擬機鏡像,執行後把結果返回到正在使用的宿主機;
- 專用 UI--學習成本低,可以完全的控制 APPX 的生成選項,操作體驗很像 Visual Studio 的 Manifest 編輯器;
- 集成 VS--VS 的解決方案可以直接方便的使用集成在 VS 中的 Advanced Installer 生成 APPX 包;
- Desktop Bridge 的補充--它覆蓋了 Desktop Bridge 所有缺失的特性;
其中集成 VS 非常有意義,對於開發過程中 CI(continuous integration)的支持提供了重要前提。另外,Advanced Installer 對於 TFS、Jenkins、TeamCity 都集成了插件的支持。如果大家有興趣,可以在官方的 CI 頁面下載對應插件使用:Installer Continuous Integration
另外,對於 Desktop Bridge 的補充,對於使用過 Desktop Bridge 的開發者們很重要,引用官方說明如下:
1. Convert any installation, no matter if it installs silently or not.
2. Generate a conversion project: reload, edit and rebuild your APPX package in seconds.
3. Build APPX and MSI/EXE packages from the same project, continue serving your Windows 7 users.
4. Built-in Visual Studio integration for debugging and build automation.
5. You do not need the matching Docker image anymore; you can use any virtual machine. Hyper-V and VMware come with built-in management support.
6. Detection of high-level constructs, like file type associations or firewall rules and mapping those entries accordingly in the AppXManifest file.
7. It's all GUI based, so no more problems with discovering command line switches or typos.
8. Your application can be launched with an argument (i.e., shortcut arguments).
9. Your package can contain multiple applications.
10. One-click digital signature support for sideloaded packages.
實際操作
在官方下載打開後,可以看到首頁的操作選項:
- Desktop Bridge Project -- 可以新建一個項目,把桌面應用轉換為 APPX 應用,配置 UWP 應用的各種特性;
- UWP Appx -- 可以導入一個 APPX 包,重新對它進行各個配置項的調整;
- Convert Desktop App -- 可以監控系統中的桌面應用,進行 APPX 的轉換;
我用一個簡單的 Windows Form EXE 來進行測試,看一下轉換的引導部分:
到這裡我們新建的項目中的 Windows Form EXE 就成功 Build 為 APPX 包了,接下來是 Advanced Installer 的主要編輯部分,我們可以對以下部分進行編輯:
- Product Information -- 產品通用信息,包括產品名、版本號、數字簽名、升級策略等
- Universal Windows -- UWP 應用特性,如各尺寸磁貼、啟動屏幕、應用許可權等,和 Visual Studio 的 Manifest 很相似
- Resources -- 需要附加的資源,還包括註冊表操作、文件打開關聯、附加的程式集等
- Package Definition -- 安裝包定義,包括預設的安裝位置、安裝許可權等
- Requirements -- 安裝包對系統配置的要求
- User Interface -- 安裝過程中各個窗體的配置
- Syetem Changes -- 設置環境變數,註冊 COM 組件
需要註意的點:
Run in VM 操作,對於 Windows OS 的版本要求是:Enterprise 版本。因為我目前還是專業版,所以暫不體驗這個功能。
重點看一下應用程式的數字簽名部分:
為了讓轉換後的 APPX 可以直接在系統安裝,需要設置數字簽名,這裡我使用了一個已有的 UWP 應用的 PFX 數字簽名文件。如果大家有認證過的數字簽名證書,也可以拿來用。
來看一下我轉換成功後的程式目錄:
- BuildUwpAppXSetupFiles -- 這個目錄存放的是 APPX 文件
- Setup Files -- 這個目錄存放的是 MSI 安裝包,如前面所說,Advanced Installer 會同時生成 APPX 和 MSI 安裝包
- APPXDemo.aip -- Advanced Installer 的項目文件,可以打開繼續編輯
接下來看看 UWP APPX 的安裝:
安裝成功,正常啟動後:
MSIX 和 Advanced Installer 的使用介紹就到這裡,因為沒有 Enterprise 操作系統,所以沒有測試 VM 功能,大家如果對 Advanced Installer 感興趣,可以進行更深入的研究。