Windows Developer Day - MSIX and Advanced Installer
前面一篇我们介绍了 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 感兴趣,可以进行更深入的研究。
Windows Developer Day - MSIX and Advanced Installer的更多相关文章
- Windows安装包制作指南——Advanced Installer的使用
		
1. 前言 最近需要制作windows的安装包,据说Advanced Installer比较强大,遂拿它来制作安装包.在网上少量资料以及官网简约文档中摸索前进,总算是制作出可用的安装包,在此记录,仅供 ...
 - 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解
		
关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
 - Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer  关于Newtonsoft.Json,LINQ to JSON的一个小demo  mysql循环插入数据、生成随机数及CONCAT函数  .NET记录-获取外网IP以及判断该IP是属于网通还是电信  Guid的生成和数据修整(去除空格和小写字符)
		
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
 - 使用Advanced Installer 13.1打包发布 Windows Service服务程序
		
原文: 使用Advanced Installer 13.1打包发布 Windows Service服务程序 项目中需要用到一个定时推送案件状态的需求,本人小菜一只,在同事建议下要写成一个windows ...
 - Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer
		
Advanced Installer :Free for 30 days. All features. 下载地址:https://www.advancedinstaller.com/download. ...
 - Windows Developer Day Review
		
北京时间 3 月 8 日凌晨 1 点钟,今年的第一次 Windows Developer Day 正式召开. 因为时间太晚看不了直播,我也是第二天早上在公司看的重播.整个会议过程有很多值得去研究 ...
 - Advanced Installer
		
Advanced Installer是一款功能强大.可生成符合 MS Windows 认证的 Windows Installer 的 MSI 安装包制作工具,具有友好的图形用户界面,直观而且非常简单的 ...
 - [.Net Tools] 超強大的封裝工具 Advanced Installer
		
原文:[.Net Tools] 超强大的封装工具Advanced Installer 日前在网路上晃到这家公司的产品http://www.advancedinstaller.com/,就直接下载并且安 ...
 - 使用Advanced Installer 自动部署 Arcgis Engine Runtime 10.0
		
原文:使用Advanced Installer 自动部署 Arcgis Engine Runtime 10.0 目前采用Arcgis9.2 + c#(vs2008)作为程序开发平台,是一个不错的搭配. ...
 
随机推荐
- bzoj 3576[Hnoi2014]江南乐 sg函数+分块预处理
			
3576: [Hnoi2014]江南乐 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 1929 Solved: 686[Submit][Status ...
 - SpringMVC+FreeMarker实现静态资源文件自动添加版本号(md5)
			
近日切换java开发,开始学习springframework.在实现静态资源文件自动计算版本号的实例时,因为不熟悉框架,走了不少弯路,好在最终解决了问题.这里写篇文章记录一下实现,也希望对大家有些用处 ...
 - sphinx初识
			
sphinx(SQL Phrase Index),查询词组索引. 定义:Sphinx是一个全文检索引擎. 特性: 1.高速索引 (在新款CPU上,近10 MB/秒); 2.高速搜索 (2-4G的文本量 ...
 - java字符串以及字符类型基础
			
介绍一下java字符集和字符的编码方式, 首先要区分一下字符集和字符编码.所谓的字符集 类似于unicode,GB2312,GBK,ASCII等等.因为一开始只有26个英文字母需要 编一下号.所有用下 ...
 - 项目中常用的19条MySQL优化
			
声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单 ...
 - UVA - 12333 字典树+大数
			
思路:用字典树将前40个数字记录下来,模拟大数加法即可. AC代码 #include <cstdio> #include <cmath> #include <algori ...
 - Git 用户名和邮箱
			
用户名邮箱的作用 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions统计就是按邮箱来统计的. 查看用 ...
 - URL末尾处的斜杠“/”
			
在输入网址的时候,比如输入"http://www.xxx.com/",此URL中末尾的斜杠是至关重要的.因为在这种情况下,浏览器能安全的添加斜杠.而像"http://ww ...
 - MyBatis框架概述
			
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设 ...
 - 【前端】Vue2全家桶案例《看漫画》之六、图片阅读页
			
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_6.html 项目github地址:https://github.com/shamoyuu/ ...