Windows Developer Day - MSIX and Advanced Installer

来源:https://www.cnblogs.com/shaomeng/archive/2018/03/15/8545237.html
-Advertisement-
Play Games

前面一篇我們介紹了 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 感興趣,可以進行更深入的研究。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 複製大佬的,侵權請聯繫我主動刪除 1.js/css合併 在之前的crud例子中,我們引入js/css腳本的方式和平常的web開發一樣 [javascript] view plain copy <script src="~/Scripts/jquery-1.8.2.min.js"></script> ...
  • 1、如何讓發佈的C#的DLL類庫中的方法帶有註釋說明 一個類庫讓第三方引用時,預設情況下生成類庫時不攜帶註釋,所以別人引用這個類庫時就不是很方便理解類方法的作用和每個參數的含義,若是能攜帶方法的說明註釋就好了。 具體設置是 項目 屬性-生成,將“XML文檔文件”選中即可。 ...
  • 生詞解釋:Diagnostics[,daɪəg'nɑstɪks] n.診斷學 ...
  • 我們都知道ORM全稱叫做Object Relationship Mapper,也就是可以用object來map我們的db,而且市面上的orm框架有很多,其中有一個框架 叫做dapper,而且被稱為the king of ORM。 一:為什麼選擇Dapper 1. 性能優越: 其實在各大網站上,我們大 ...
  • 最近在玩微軟的Desktop Bridge項目,遇到瞭如下幾個坑: ...
  • 摘要 考慮我們為什麼要選擇.NET Core? 因為它面向的是高性能伺服器開發,拋卻了 AspNet 的臃腫組件,非常輕量,加上微軟的跨平臺戰略,對 Docker 的親和性,對於開發人員也非常友好,所以整體環境來說是健康發展的,未來技術決策時 .Net Core 也有很大的優勢。那既然.NET Co ...
  • 串口的定義,請自行瞭解. C#操作串口通訊在.Net強大類庫的支持下,只需要三個步驟: 1 創建 2 打開 3 發送/接受 1 創建: 1 串口通訊需用用到的命名空間如下: using System.IO.Ports; using System.IO; using System.IO.Ports; ...
  • 備忘,或者留給暫未接觸但需要瞭解的人。 C#在一個進程內傳參數方法那是相當多,但是涉及到程式之間傳參數就不是那麼方便了(當然socket,記憶體共用等方式屬於另一類,此處不討論),我們的C或者C#,亦或者Java等在Main的函數入口處都會有一個參數Arg或者Args就是留出來方便自己被第三方軟體調用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...