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

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

注意

IT 专业人员(管理员)可以控制使用 ms-appinstaller URI(统一资源标识符)方案(协议)。 若要在网络中启动 ms-appinstaller,请将组策略 EnableMSAppInstallerProtocol (/windows/client-management/mdm/policy-csp-desktopappinstaller) 设置为启用(请参阅策略 CSP - DesktopAppInstaller)。 有关更多信息,请参阅从网页安装 Windows 10 应用

应用安装程序文件位置

.appinstaller 文件可托管在 HTTP 端点或 UNC 共享文件夹等共享位置,并包含用于查找要安装的应用包的路径。 用户从共享位置安装应用,并启用定期检查新更新功能。

配置项目,使其适用于正确的 Windows 版本

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

重要

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

创建包

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

为此,请使用 Visual Studio 中的“创建应用包”向导,并执行以下步骤。

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

    导航为“创建应用包”的上下文菜单

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

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

    显示“创建包”对话框窗口

    仅当项目 TargetPlatformMinVersion 设置为正确版本的 Windows 10 时,才会启用“启用自动更新”

  3. 通过“选择和配置包”对话框,可以选择支持的体系结构配置。 如果选择捆绑包,它将生成单个安装程序,但如果你不想要捆绑包,并且更喜欢每个体系结构一个包,也可以为每个体系结构生成一个安装程序文件。 如果不确定要选择哪个体系结构,或者想要详细了解各种设备使用的体系结构,请参阅应用包体系结构

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

    显示包配置的“创建应用包”窗口

  5. 如果在步骤 2 中选中了“启用自动更新”,将显示“配置更新设置”对话框。 可以在这里指定“安装 URL”和进行更新检查的频率。

    使用发布位置配置配置配置“更新设置”窗口

  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>