从 IIS 服务器分发 Windows 10 应用
本教程演示如何设置 IIS 服务器、如何验证 Web 应用程序是否可以托管应用包、如何有效地调用和使用 App Installer。
使用 App Installer 应用程序,开发人员和 IT 专业人员可通过将 Windows 10 应用程序托管在自己的内容分发网络 (CDN).上,从而分发 Windows 10 应用程序。 对于不希望或不需要将应用程序发布到 Microsoft Store、但仍希望利用 Windows 10 打包和部署平台的企业而言,这种方法非常实用。
设置
若要成功完成本教程,需要具备以下先决条件:
- Visual Studio 2017
- Web 开发工具和 IIS
- Windows 10 应用包 - 你要分发的应用包
可选:GitHub 上的初学者项目。 如果你不需要使用应用包,但仍希望了解如何使用此功能,这些内容将对你大有帮助。
步骤 1 - 安装 IIS 和 ASP.NET
Internet Information Services 是一项 Windows 功能,可通过“开始”菜单进行安装。 在“开始”菜单中搜索“启用或关闭 Windows 功能”。
查找并选择“Internet Information Services”以安装 IIS。
注意
无需选择 Internet Information Services 下面的所有复选框。 仅选择当你选中“Internet Information Services”时已选择的选项就足够了。
另外还需要安装 ASP.NET 4.5 或更高版本。 要安装该软件,请依次打开“Internet Information Services”-“万维网服务”-“应用程序开发功能”。>> 选择一个高于或等于 ASP.NET 4.5 的 ASP.NET 版本。
步骤 2 - 安装 Visual Studio 2017 和 Web 开发工具
安装 Visual Studio 2017(如果尚未安装)。 如果已安装 Visual Studio 2017,请确保已安装以下工作负载。 如果安装中不存在工作负载,请使用 Visual Studio 安装程序(从“开始”菜单中找到)进行安装操作。
在安装过程中,请选择 ASP.NET 和 Web 开发 以及你需要的任何其他工作负载。
安装完成后,启动 Visual Studio 并创建一个新项目(“文件”->“新建项目”)。
步骤 3 - 生成 Web 应用程序
以管理员身份启动 Visual Studio 2017,并使用空白项目模板创建一个新的 Visual C# Web 应用程序项目。
步骤 4 - 使用 Web 应用程序配置 IIS
在“解决方案资源管理器”中,右键单击该根项目并选择“属性”。
在 Web 应用程序属性中,选择“Web”选项卡。在“服务器”部分中,从下拉菜单中选择 “本地 IIS”,然后单击“创建虚拟目录”。
步骤 5 - 将应用包添加到 Web 应用程序
添加你要分发到 Web 应用程序的应用包。 如果你没有可用的应用包,则可使用 GitHub 上提供的初学者项目包中的应用包。 应用程序包用于签名的证书 (MySampleApp.cer) 也在 GitHub 上随示例一同提供。 在安装应用程序之前,必须先将证书安装到设备上(步骤 9)。
在初学者项目 Web 应用程序中,新文件夹已添加到名为 packages 的 Web 应用程序中,其中包含要分发的应用包。 若要在 Visual Studio 中创建文件夹,请在解决方案资源管理器中右键单击项目节点,并选择“添加”-“新建文件夹”>并将其命名为 packages。 若要将应用包添加到文件夹,请右键单击 packages 文件夹,然后选择“添加”-“现有项目...”>,然后浏览到应用包位置。
步骤 6 - 创建网页
此示例 Web 应用程序使用了简单的 HTML。 可根据需要随意生成 Web 应用程序。
右键单击解决方案资源管理器的根项目,选择“添加”->“新项目”,然后从“Web”部分添加新的 HTML 页面。
创建 HTML 页面后,在解决方案资源管理器中右键单击该 HTML 页面,然后选择“设为起始页”。
双击 HTML 文件可在代码编辑器窗口中打开它。 在本教程中,我们仅使用在网页中成功调用 App Installer 应用程序来安装 Windows 10 应用程序所必需的元素。
在网页中包含以下 HTML 代码。 要成功调用 App Installer,关键是使用 App Installer 向操作系统注册的自定义方案:ms-appinstaller:?source=
。 有关更多详细信息,请查看下面的代码示例。
注意
确保在自定义方案之后指定的 URL 路径与 VS 解决方案的 Web 选项卡中的项目 URL 相匹配。
<html>
<head>
<meta charset="utf-8" />
<title> Install Page </title>
</head>
<body>
<a href="ms-appinstaller:?source=http://localhost/SampleWebApp/packages/MySampleApp.msixbundle"> Install My Sample App</a>
</body>
</html>
步骤 7 - 为应用包 MIME 类型配置 Web 应用程序
从解决方案资源管理器中打开 Web.config 文件,并在 <configuration>
元素内部添加以下行。
<system.webServer>
<!--This is to allow the web server to serve resources with the appropriate file extension-->
<staticContent>
<mimeMap fileExtension=".appx" mimeType="application/appx" />
<mimeMap fileExtension=".msix" mimeType="application/msix" />
<mimeMap fileExtension=".appxbundle" mimeType="application/appxbundle" />
<mimeMap fileExtension=".msixbundle" mimeType="application/msixbundle" />
<mimeMap fileExtension=".appinstaller" mimeType="application/appinstaller" />
</staticContent>
</system.webServer>
注意
在最新 Microsoft Web 技术 .NET Core 网站上。 使用 .NET Core ASP 的内部版本会忽略 web.config 静态内容 mimeMap。 因此,你必须正确配置将要托管 MSIX 安装的 .NET Core 网站,还需要在 Startup.cs 文件中修改 Configure 方法。 有关详细信息,请参阅 .NET Core 文档。
步骤 8 - 为 App Installer 添加环回豁免
由于网络隔离,App Installer 等 Windows 10 应用程序受到限制,只能使用 IP 环回地址,例如 http://localhost/. 使用本地 IIS 服务器时,必须将 App Installer 添加到环回豁免列表中。
若要执行此操作,请以管理员身份打开命令提示符,然后输入以下命令:
CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.desktopappinstaller_8wekyb3d8bbwe
若要验证应用程序是否已添加至豁免列表,请使用以下命令,显示环回豁免列表中的应用程序:
CheckNetIsolation.exe LoopbackExempt -s
你应该能够在列表中找到 microsoft.desktopappinstaller_8wekyb3d8bbwe
。
完成对通过 App Installer 进行的应用程序安装的本地验证之后,可以使用以下命令,删除你在本步骤中添加的环回豁免:
CheckNetIsolation.exe LoopbackExempt -d -n=microsoft.desktopappinstaller_8wekyb3d8bbwe
步骤 9 - 运行 Web 应用程序
通过单击 VS 功能区上的运行按钮,生成并运行 Web 应用程序,如下图所示:
将有一个网页在浏览器中打开:
单击该网页中的链接,以启动 App Installer 应用程序,并安装 Windows 10 应用包。
对问题进行故障排除
特权不足
如果在 Visual Studio 中运行 Web 应用程序时显示错误,例如“您没有足够的特权访问计算机上的 IIS 网站”,则需要以管理员身份运行 Visual Studio。 关闭 Visual Studio 的当前实例,再以管理员身份重新打开它。
设置起始页
如果运行 Web 应用程序会导致浏览器在加载时出现 HTTP 403.14 - 禁止访问错误,这是因为 Web 应用程序没有已定义的起始页。 请参考本教程中的步骤 6,了解如何定义起始页。