使用 Visual Studio 创建应用安装程序文件

从 Windows 10 版本 1803 和 Visual Studio 2017、Update 15.7 开始,可以将旁加载的应用配置为使用.appinstaller文件接收自动更新。 Visual Studio 支持启用这些更新。

应用安装程序文件位置

.appinstaller 文件可以托管在一个共享位置,如 HTTP 终结点或 UNC 共享文件夹,并包含用于查找要安装的应用包的路径。 用户从共享位置安装应用并启用对新更新的定期检查。

配置项目 - 以正确的 Windows 版本为目标

你可以在创建项目时配置 TargetPlatformMinVersion 属性,也可以稍后从项目属性中进行更改。

重要

仅当Windows 10版本 1803 或更高版本时TargetPlatformMinVersion,才会生成应用安装程序文件。

创建包

若要通过旁加载分发应用,必须创建应用包 (.appx/.msix) 或应用捆绑包 (.appxbundle/.msixbundle) 并将其发布到共享位置。

要执行该操作,请使用 Visual Studio 中的创建应用序包向导,并执行以下步骤。

  1. 右键单击项目,然后选择 “应用商店 ->创建应用包”。

    Context menu with navigation to Create App Packages

    此时会显示 “创建应用包 ”向导。

  2. 选择 “我想创建用于旁加载的包”。启用自动更新

    Create Your Packages dialog window shown

    只有在项目的 TargetPlatformMinVersion 设置为正确的 Windows 10 版本时,才启用启用自动更新

  3. 选择和配置包对话框中可以选择支持的体系结构配置。 如果选择捆绑包,将生成一个安装程序;如果不想要捆绑包,而是希望为每个体系结构生成一个程序包,它还会为每个体系结构生成一个安装程序文件。 如果你不确定该选择哪种体系结构,或者想了解有关各种设备使用哪种体系结构的详细信息,请参阅应用包体系结构

  4. 配置任何其他详细信息,例如版本编号或包输出位置。

    Create App Packages window with package configuration shown

  5. 如果在步骤 2 中选中了启用自动更新,此时会显示配置更新设置对话框。 在该页面中,可以指定安装 URL 和更新检查频率。

    Configure Update Settings window with publish location configuration

  6. 当你的应用成功打包后,将出现一个对话框,显示包含你的应用包的输出文件夹位置。 输出文件夹包含旁加载应用所需的所有文件,包括可用于宣传你的应用的 HTML 页面。

发布包

要使应用程序可用,必须将生成的文件发布到指定位置:

发布到共享文件夹 (UNC)

如果要通过通用命名约定 (UNC) 共享文件夹发布程序包,请将应用包输出文件夹和安装 URL(请参阅步骤 6 了解详细信息)配置为相同的路径。 向导将在正确的位置生成文件,用户将从同一路径获取应用和后续更新。

发布到 Web 位置 (HTTP)

要发布到 Web 位置,需要将内容发布到 Web 服务器的访问权限,确保最终 URL 与向导中定义的安装 URL 相匹配(请参阅步骤 6 了解详细信息)。 一般情况下,使用文件传输协议 (FTP) 或 SSH 文件传输协议 (SFTP) 上传文件,但还有一些其他的发布方法,如 MSDeploy、SSH 或 Blob 存储,具体视你的 Web 提供商而定。

要配置 Web 服务器,你必须验证用于所使用的文件类型的 MIME 类型。 下面的示例为 Internet Information Services (IIS) 的 web.config

<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".appx" mimeType="application/vns.ms-appx" />
      <mimeMap fileExtension=".appxbundle" mimeType="application/vns.ms-appx" />
      <mimeMap fileExtension=".appinstaller" mimeType="application/xml" />
    </staticContent>  
  </system.webServer>  
</configuration>