从源代码通过 MSIX Core 创建 MSIX 包
MSIX Core 将 MSIX 部署引入到选定的早期版本的 Windows。 可以通过 MSIX Core 安装程序使用 ClickOnce 创建应用程序。 这将允许用户下载 setup.exe 并通过 MSIX Core 安装程序安装 MSIX 应用。
为了让你的应用准备好使用 MSIX Core 安装程序进行启动,你需要在 Web 服务器上托管应用包。 本部分详细介绍了如何在 Azure、Internet Information Services (IIS) 和 Amazon Web Services (AWS) 上设置 Web 应用。
要使用此选项,必须拥有 Azure 订阅。 要获取订阅,请参阅 Azure 帐户页面。
要开始,请转到 Azure 门户页,然后执行以下步骤:
- 单击“创建资源”。
- 单击“Web”,然后选择“Web 应用”。
- 在“实例详细信息”下,创建唯一的应用名称,并为应用选择适当的设置。 例如,需要在“代码或 Docker 容器”与“运行时堆栈”之间进行选择。 否则,所有其他设置均保留默认值。
- 单击“创建”并完成向导。
- 创建 Web 应用后,选择此应用。
- 在“开发工具”下,单击“应用服务编辑器”。
- 在编辑器中,有一个默认 hostingstart.html 文件。 右键单击文件资源管理器的空白区域,然后选择“上传文件”以开始上传应用包。
- 再次右键单击文件资源管理器面板的空白区域,然后选择“新建文件”以创建新文件。 将文件命名为所要的默认 HTML 页面的名称。
将名为 Web.config 的新文件添加到 Web 应用。 打开 Web.config 文件,然后将以下 XML 添加到文件。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<!--This is to allow the web server to serve resources with the appropriate file extensions-->
<staticContent>
<mimeMap fileExtension=".appx" mimeType="application/appx" />
<mimeMap fileExtension=".msix" mimeType="application/msix" />
</staticContent>
</system.webServer>
</configuration>
IIS 是可选的 Windows 功能。 要安装 IIS,请执行以下操作:
- 单击“启动”,然后搜索“打开或关闭 Windows 功能”。
- 选择 "Internet Information Services"。
- 此外,请确保安装 ASP.NET 4.5 或更高版本。 在“Windows 功能”对话框中,展开“Internet Information Services” ->“万维网服务” ->“应用程序开发功能”,然后选择大于或等于 ASP.NET 4.5 的 ASP.NET 版本。
- 单击“确定”以开始安装。
需要 Visual Studio 2017(或更高版本)和 Web 开发工具。 如果已安装 Visual Studio 2017 或更高版本,请确保已安装 ASP.NET 和 Web 开发工作负载。 否则,请从此处安装 Visual Studio。
以管理员身份启动 Visual Studio,并使用空项目模板创建新的 Visual C# Web 应用程序项目。
- 在“解决方案资源管理器”中,右键单击根项目并选择“属性”。
- 在属性中,选择 "Web" 选项卡。
- 在“服务器”部分中,从下拉菜单中选择“本地 IIS”,然后单击“创建虚拟目录”。
添加要分发到 Web 应用程序的应用包:
- 在“解决方案资源管理器”中,右键单击项目节点。
- 选择“添加” ->“新建文件夹”,并将文件夹命名为 "packages"。
- 要将应用包添加到文件夹,请右键单击包文件夹,然后选择“添加” ->“现有项”。 浏览到应用包位置。
根据需要创建 HTML 页面或任何其他 Web 应用。 添加新 setup.exe 的链接。
从解决方案资源管理器中打开 "Web.config" 文件,并在 <配置> 元素内添加以下 XML。
<system.webServer>
<!--This is to allow the web server to serve resources with the appropriate file extensions-->
<staticContent>
<mimeMap fileExtension=".appx" mimeType="application/appx" />
<mimeMap fileExtension=".msix" mimeType="application/msix" />
</staticContent>
</system.webServer>
要使用此选项,必须具有 AWS 成员资格。 有关详细信息,请参阅 AWS 帐户详细信息。
Amazon Simple Storage Service (S3) 是一种 AWS 产品/服务,用于收集、存储和分析数据。 S3 存储桶是托管 Windows 10 应用包和网页以便进行分发的便捷方法。
- 登录到 AWS。 在“服务”下找到 "S3"。
- 选择“创建存储桶”,然后输入网站的“存储桶名称”。 按照对话框提示来设置属性和权限。 要确保可从网站分发 Windows 10 应用程序,请为存储桶启用“读取”和“写入”权限,然后选择“授予对此存储桶的公共读取访问权限”。 单击“创建存储桶”以完成此步骤。
- 完成后,将 MSIX 包和网页上传到 S3 存储桶。
使用 S3 浏览器等 Web 服务接口添加新的“默认 HTTP 头”。
- 导航到“工具”并选择“默认 HTTP 头”。
- 在“默认 HTTP 头”对话框中,单击“添加”。
- 在“添加新的默认 HTTP 头”对话框中,指定存储桶名称、文件名、标头名称和标头值,然后单击“添加新标头”。
- 存储桶名称:msix-packages
- 文件名:*.msix
- 标头名称:Content-Type
- 标头值:application/msix
备注
AWS 具有一些你必须遵循的严格准则。 例如,存储桶名称必须是唯一的,因此,如果使用上面的示例,则需要更改存储桶名称。
查找应用程序 ClickOnce setup.exe。 这指的是 Git 项目的克隆,通过 Visual Studio 项目进行构建和发布。
请确保已按照说明在 Visual Studio 中克隆、生成和发布 MSIX Core 解决方案。 有关参考,可在此处找到 GitHub 项目
导航到发布 setup.exe 文件的目录,然后运行以下命令:
.\setup.exe -url=<location of your msix in the webservice>
例如
.\setup.exe -url="https://appinstallerdemo.azurewebsites.net/MSIXCore/msixmgrWrapper.application?https://appinstallerdemo.azurewebsites.net/MSIXCore/notepadplus.msix#"
由于上一步创建了新的 setup.exe,因此需要再次对应用进行签名,以验证你是否是应用程序的受信任的发布者并建立应用程序的完整性。 可以使用 SignTool 并提供证书。
现在,可以通过其网站上的链接或下载按钮指向新的 setup.exe。 MSIX Core 面向 Windows 10 版本 1703 及更早版本上的用户。 应用安装程序是 Windows 1709 或更高版本上的 MSIX 包的理想安装过程。 应用安装程序针对使用者端的磁盘空间进行了优化,可以直接从 HTTP 位置安装应用。 MSIX Core 将检测使用者是否在 Windows 1709 或更高版本上,并将其重定向到应用安装程序。
在 Microsoft Edge 上,可以调用 getHostEnvironmentValue() 方法,返回值中的 os-build 字段将指定用户的 OS 版本。 然后,可以提示安装过程使用 MSIX Core(适用于 Windows 10 版本 1703 及更早版本)或应用安装程序(适用于 Windows 10 版本 1709 及更高版本)。
用户只需从开发人员的网页下载并运行 setup.exe。
- 如果在用户运行 setup.exe 时尚未安装 MSIX Core 安装程序,则用户会看到 ClickOnce 提示,然后单击“安装”以安装 MSIX Core 安装程序。 安装程序会自动启动并显示在开发人员查询字符串中指定的 MSIX 包的安装屏幕,以便用户可以安装应用。
- 如果在用户运行 setup.exe 时已安装 MSIX Core 安装程序,则 MSIX Core 安装程序会自动启动并显示在查询字符串中指定的 MSIX 包的安装屏幕,以便用户安装应用。