Win8 Metro应用不通过应用程序商店部署——旁加载

目前不通过应用程序商店部署Metro应用的方法有2种,一种是开发许可证部署(有点类似于WP手机的开发者账号越狱),另一种是旁加载。本文主要讲述旁加载的使用

你可以通过使用 Windows PowerShell(R) 或 部署映像服务和管理 (DISM) 平台添加业务线 (LOB) 基于 Windows(R) 运行时的应用程序 至 Windows(R) 映像。LOB 基于 Windows 运行时的应用程序 在 Windows® 应用商店 过程中无需被认证或安装,但他们必须使用被关联至一个受信任根证书的证书进行签名。添加并非来自 Windows 应用商店 的 基于 Windows 运行时的应用程序 被称为 旁加载

要安装并非业务线一部分的 基于 Windows 运行时的应用程序,必须使用 Windows 应用商店。

Dism.exe 和 Windows PowerShell 命令仅仅添加、列出并删除 基于 Windows 运行时的应用程序,你无法使用它们安装只能在桌面运行的传统应用程序。

应用程序签名请求

你可以安装未由 Windows 应用商店 签名的 LOB 基于 Windows 运行时的应用程序。LOB 基于 Windows 运行时的应用程序 必须使用密码签名,并且只能被安装在信任签名证书的计算机上。

有关应用程序的签名方法和证书的使用的详细信息,请参阅应用程序打包工具

Windows 8 旁加载要求

在向 Windows 映像添加旁加载的 LOB 基于 Windows 运行时的应用程序 时:

  • 必须启用“允许安装所有受信任的应用程序”组策略设置。

在能够运行旁加载 LOB 基于 Windows 运行时的应用程序 之前:

  • 必须激活一个旁加载产品密钥,或将电脑加入一个 Active Directory 域,该域必须启用了“允许安装所有受信任的应用程序”组策略设置。
    你可以通过将电脑加入一个域,在 Windows® 8 企业版或 Windows Server® 2012 上启用旁加载。要在任何其他版本的 Windows 上,或在未加入域的 Windows 8 企业版电脑上启用旁加载,必须使用一个旁加载产品激活密钥。

在电脑满足所有旁加载要求之前,“开始”菜单中的应用程序磁贴将在右下角出现一个 "X",表明存在一个问题,妨碍了应用程序的运行。

要为旁加载设置组策略
  1. 打开组策略编辑器 (gpedit.msc)。例如,在一台运行 Windows 8 的计算机上,从“开始”屏幕,键入 Edit Group Policy,单击“设置”,然后从搜索结果中选择“编辑组策略”设置。

  2. 在左边窗格的“本地计算机策略”下面,单击以展开“计算机配置”“管理模板”“Windows 组件”、然后是“应用程序包部署”

  3. 双击“允许安装所有受信任的应用程序”设置。

  4. “允许安装所有受信任的应用程序”窗口中,单击“启用”,然后单击“确定”

设置组策略以允许受信任的应用程序更新下列注册设置: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Appx\AllowAllTrustedApps = 1

添加应用程序

可以使用 add-appxpackage PowerShell cmdlet 基于每个用户安装一个应用程序包 (.appx)。这些应用程序必须为每个用户添加,但可以随用户漫游到多台电脑上。可给每个用户添加的 LOB 应用程序数量是没有限制的。

向一个用户帐户添加 LOB 应用程序
  • 在 Windows 8 或 Windows Server 2012 计算机上的 Windows PowerShell 提示符处,添加一个 .appx 文件包。在添加应用程序的时候,应包含任何要求的依赖性应用程序包。例如,键入:

    add-appxpackage C:\app1.appx –DependencyPath C:\winjs.appx

    有关详细信息,请参阅 Windows PowerShell 中的应用程序安装 Cmdlets

设置 LOB 应用程序

安装在 Windows 映像中的 基于 Windows 运行时的应用程序 被称为 已设置的 应用程序。已设置的应用程序被存放在映像中,并且计划为 Windows 映像的每个用户在首次登录的时候安装。当你在使用 DISM 应用程序设置命令部署映像前,启动到审计模式的时候,可以将这些应用程序添加到 Windows 映像。有关审计模式的详细信息,请参阅审核模式概述

已设置的应用程序是指定了电脑的,并且不会随用户漫游。在一个映像中,你只能安装 24 个已设置的应用程序。

在一个已经部署的 Windows 映像中,你应当代以使用 Windows PowerShell 中的 Add-AppxPackage cmdlet.如果你确实在有活动用户的已部署的 Windows 映像中使用 DISM 应用程序设置命令,你应当在运行命令前从映像注销所有用户。

要更新一个已设置的应用程序,你必须删除已设置的应用程序,然后部署应用程序的新版本。然后将在每个用户下次登录的时候应用程序更新。

向一个 Windows 映像添加已设置的 LOB 应用程序
  1. 使用部署映像服务和管理 (DISM) 命令行工具或 PowerShell cmdlets 来添加没有 Windows 应用商店证书的 LOB 应用程序。例如,在高级命令提示符下键入:

    DISM /Online /Add-ProvisionedAppxPackage /PackagePath:C:\App1.appx /SkipLicense

    或者在 Windows PowerShell 提示符下,键入:

    Add-AppxProvisionedPackage -Online -FolderPath C:\Appx

    有关详细信息,请参阅 应用程序包 (.appx) 服务命令行选项DISM Cmdlet。有关 DISM 支持的平台的信息,请参阅 DISM 支持的平台

note备注

计算机并不一定要在安装已设置的 LOB 应用程序前加入一个域,或有一个激活的旁加载产品密钥。但是,这些应用程序直到计算机满足这一旁加载要求的时候,才会运行。有关详细信息,请参阅如何自定义“开始”屏幕

清单应用程序

你可以列出安装在脱机或联机 Windows 映像上的 LOB 基于 Windows 运行时的应用程序,并获取有关程序包的额外信息。

为每个用户帐户列出 LOB 应用程序
  • 你可以为计算机上的一个特定用户帐户安装一系列现代 LOB 基于 Windows 运行时的应用程序。你必须打开有管理员特权的 Windows PowerShell,为当前用户以外的其他用户列出程序包。例如,在 Windows PowerShell 提示符下键入:

    Get-AppxPackage -AllUsers
  • 你可以为一个特定的用户安装一系列程序包。你必须打开有管理员特权的 Windows PowerShell,为当前用户以外的其他用户列出程序包。例如,在 Windows PowerShell 提示符下键入:

    Get-AppxPackage -Name Package1 -User domain\username
  • 你也可以获取包含有如程序包 ID 之类信息的 AppX 程序包清单。例如,在 Windows PowerShell 提示符下键入:

    Get-AppxPackageManifest -Package Package1
  • 如果你不知道程序包的全名,则可以使用管道来为 AppX 程序包获取清单。例如,在 Windows PowerShell 提示符下键入:

    (Get-AppxPackage -Name "*WinJS*" | Get-AppxPackageManifest).package.applications.application.id
列出在 Windows 映像中设置的 LOB 应用程序
  • 你可以获取在 Windows 映像中配置的一系列程序包,它们将通过使用 Dism.exe 或 Windows Powershell 为每个新用户安装。例如,在 Windows PowerShell 提示符下键入:

    Get-AppxProvisionedPackage -Path c:\offline

    或者在命令提示符下,键入:

    DISM.exe /Image:C:\test\offline /Get-ProvisionedAppxPackages

有关详细信息,请参阅如何获取映像或组件的清单

删除应用程序

你可以删除一个应用程序的单独实例,或删除应用程序的配置设置。

为每个用户帐户删除 LOB 应用程序
  1. 你可以仅为当前的用户删除一个单独的应用程序。例如,在命令提示符下键入:

    Remove-AppxPackage Package1
在一个 Windows 映像中删除已配置的 LOB 应用程序
  • 当删除已配置应用程序的时候,该应用程序对当前用户已删除,并且不会为新的用户帐户安装。如果计算机上有其他活动的用户帐户,应用程序将不会从那些帐户删除。

    例如,在高级 Windows PowerShell 提示符下键入:

    Remove-AppxProvisionedPackage -Online -PackageName MyAppxPkg

    或者在命令提示符下,键入:

    DISM.exe /Online /Remove-ProvisionedAppxPackage /PackageName:microsoft.app1_1.0.0.0_neutral_en-us_ac4zc6fex2zjp