使用 DISM 旁加载应用

可以使用 PowerShell 或部署映像维护和管理 (DISM) 旁加载业务线 (LOB) 通用 Windows 应用。 Windows 应用包括:

通常,只能通过 Microsoft Store 获取 Windows 应用。 可将 LOB Windows 应用提交到 Microsoft Store,并向企业外部的客户提供这些应用。 但是,你也可以开发仅在企业内部使用的 Windows 应用,并通过一个称作“旁加载”的过程将其添加到你所管理的 Windows 设备。 旁加载的应用不必要经过认证或通过 Microsoft Store 安装。

若要旁加载应用,需要具备以下知识:

如何? 说明

了解旁加载的概念

介绍有关旁加载应用的一些基本概念。

根据旁加载要求配置电脑

描述在运行不同 Windows 版本的设备上旁加载应用所要满足的要求。 包括如何使用组策略来配置要旁加载应用的企业电脑。

配置用于开发 Microsoft Store 应用的电脑

介绍如何在电脑中配置不会过期的开发人员许可证。 该电脑可用于开发要添加到企业设备的 Microsoft Store 应用或企业应用。

添加应用

介绍如何旁加载你开发的应用。

为应用添加多种语言

介绍如何准备多语言映像,登录到映像,安装任何所需的应用资源包(包括语言),然后使用“复制配置文件”来捕获映像。

盘点应用

介绍如何列出安装在企业设备或脱机 Windows 映像中的 LOB 应用。

删除应用

介绍如何删除应用的单个实例,或删除应用的预配设置。

了解旁加载的概念

Windows 应用的设计及其用户交互方式与 Windows 桌面应用程序不同。 若要详细了解 Windows 应用,请参阅什么是 Microsoft Store 应用?

无法旁加载从 Microsoft Store 下载的应用。 若要安装不属于业务线的 Windows 应用,必须使用 Microsoft Store。 有关详细信息,请参阅管理从客户端对 Microsoft Store 的访问

在运行时,可以基于用户通过脚本将未由 Microsoft Store 签名的 LOB Windows 应用旁加载或添加到企业电脑中。 企业还可以在映像中预配这些应用,以便将其注册到在电脑上创建的每个新用户配置文件中。 基于用户或者在映像中旁加载应用的要求相同,但用于添加、获取和删除应用的 Windows PowerShell cmdlet 不同。 本主题将提供这两种方法的步骤。

需要先配置好电脑,才能旁加载未由 Microsoft Store 签名的 LOB Windows 应用,具体请参阅根据旁加载要求配置电脑

为企业开发 LOB Windows 应用时

未由 Microsoft Store 签名的 LOB Windows 应用必须以加密方式签名。 这些应用只能安装在信任签名证书的计算机上。

有关如何为应用签名和使用证书的详细信息,请参阅应用打包工具

但是,可以使用开发人员许可证将开发中的应用添加到电脑。 有关测试开发中应用的详细信息,请参阅获取开发人员许可

可以使用组策略为已加入域的电脑配置不会过期的开发人员许可证,以支持应用开发。 配置电脑后,无需连接到 Internet 即可获取或续订许可证。 有关详细信息,请参阅配置用于开发 Microsoft Store 应用的电脑

根据旁加载要求配置电脑

在设备满足所有旁加载要求之前,“开始”菜单中的应用磁贴将在右下角显示一个“X”,表示某个问题会导致该应用无法运行。

在某些情况下,这些要求包括使用旁加载产品密钥来提供将应用直接部署到设备(无需通过公共 Microsoft Store 安装)时所需的使用权利。

必须先根据以下条件配置设备,才能添加和运行未由 Microsoft Store 签名的旁加载 LOB Windows 应用:

  1. 对于已加入工作组的设备,必须:

    这适用于:

    • Windows 10 企业版
    • Windows 8.1 企业版
    • Windows 8 企业版
    • Windows Embedded 8.1 Industry Enterprise
    • Windows 8.1 Pro Update
  2. 对于要加入 Active Directory 域的设备,必须:

    这适用于:

    • Windows 10 企业版
    • Windows 8.1 企业版
    • Windows 8 企业版
    • Windows Embedded 8.1 Industry Enterprise
    • Windows 8.1 Pro Update
    • Windows Server 2016 技术预览版
    • Windows Server 2012 R2 更新
    • Windows Server 2012
  3. 对于需要旁加载产品密钥的设备,无论这些设备是已加入域还是工作组的成员,都必须:

    这适用于:

    • Windows 10 专业版
    • Windows RT 8.1
    • Windows 8.1 专业版
    • Windows RT
    • Windows 8 专业版
    • Windows Embedded 8.1 Industry Pro
  4. 对于某些 Windows Embedded 8 Industry 设备,无论这些设备是已加入域还是工作组的成员,都不再需要旁加载产品密钥。 对于这种情况,必须:

    • 在设备上启用“允许安装所有受信任的应用程序”组策略设置

    有关在 Windows Embedded 8 Industry 上进行旁加载的详细信息,请参阅有关在 Windows Embedded 8 Industry 上安装通用 Windows 8 应用的企业指南

    这适用于:

    • Windows Embedded 8.1 Industry Pro Update
    • Windows Embedded 8.1 Industry Enterprise Update

使用组策略来配置要旁加载应用的企业电脑

  1. 在所选的电脑上,对于要将下面指定的组策略设置应用到的基于域的组策略对象 (GPO),打开组策略管理编辑器。

    注意

    此过程中提供的步骤假设你具备组策略设计和操作的基础知识。 若要管理基于域的组策略, 需要连同远程服务器管理工具按需功能一起安装组策略管理控制台。 有关组策略的详细信息,请参阅组策略初学者指南组策略技术中心

  2. 依次展开“计算机配置”、“管理模板”、“Windows 组件”、“应用包部署”

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

  4. 在“允许安装所有受信任的应用”窗口中,依次单击“已启用”、“确定”

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

激活旁加载产品密钥

  1. 使用管理员特权打开命令提示符,并键入以下命令以添加旁加载产品密钥:

    Slmgr /ipk <sideloading product key>
    

    其中 <sideloading product key> 是用于在计算机上启用旁加载的 25 位数密钥。

  2. 键入以下命令激活旁加载密钥:

    slmgr /ato ec67814b-30e6-4a50-bf7b-d55daf729d1e
    

    注意

    激活 GUID 与旁加载产品密钥不同。 激活 GUID 始终是 ec67814b-30e6-4a50-bf7b-d55daf729d1e。

配置用于开发 Windows 应用的电脑

可以在电脑中配置不会过期的开发人员许可证。 配置电脑后,无需连接到 Internet 即可获取或续订许可证。 你的计算机必须是域的成员,并且正在运行以下操作系统之一:

  • Windows 10 企业版
  • Windows 8.1 企业版
  • Windows 8 专业版

注意

若要在 Windows 8 Pro 设备上启用旁加载,必须使用旁加载产品激活密钥。 有关详细信息,请参阅根据旁加载要求配置电脑

在企业电脑中配置开发人员许可证

  1. 在所选的电脑上,对于要将下面指定的组策略设置应用到的基于域的组策略对象 (GPO),打开组策略管理编辑器。

    注意

    此过程中提供的步骤假设你具备组策略设计和操作的基础知识。 若要管理基于域的组策略, 需要连同远程服务器管理工具按需功能一起安装组策略管理控制台。 有关组策略的详细信息,请参阅组策略初学者指南组策略技术中心

  2. 依次展开“计算机配置”、“管理模板”、“Windows 组件”、“应用包部署”

  3. 双击“允许在不安装开发人员许可证的情况下开发 Windows 应用”设置

  4. 在“允许在不安装开发人员许可证的情况下开发 Windows 应用”窗口中,依次单击“已启用”、“确定”

  5. 双击“允许安装所有受信任的应用”设置

  6. 在“允许安装所有受信任的应用”窗口中,依次单击“已启用”、“确定”

将组策略设置为允许在不安装开发人员许可证的情况下开发 Windows 应用会更新 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Appx\AllowDevelopmentWithoutDevLicense = 1 注册表项。

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

添加应用

可通过两种方式添加应用。 用户可以添加一个应用包,使应用仅供该用户使用。 或者,可以在 Windows 映像中安装应用,这样,Windows 映像的每个用户可以在首次登录时使用该应用,如果已创建用户帐户,则他们还可以在下次登录时使用该应用。 第二种情况称为预配应用包。

添加应用包

可以使用 add-appxpackage PowerShell cmdlet 基于用户安装应用包(.appx 或 .appxbundle)。 可为每个用户添加的 LOB 应用数量没有限制。

将 LOB 应用添加到用户帐户

  • 在 Windows PowerShell 中,添加一个 .appx(或 .appxbundle)文件包。 添加应用时请包含所有必需的依赖项应用包。 例如,键入:

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

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

将预配的 LOB 应用添加到 Windows 映像

安装在 Windows 映像中的应用称为预配的应用。 预配的应用暂存在映像中,并已计划为在 Windows 映像的每个用户首次登录时安装,如果已创建用户帐户,则也可以在下次登录时安装。

在使用 DISM 应用预配命令部署映像之前,可以在启动进入审核模式时将这些应用添加到 Windows 映像。 有关审核模式的详细信息,请参阅审核模式概述

预配的应用特定于电脑,不会随用户漫游。 在一个映像中只能安装 24 个预配的应用。

在已部署的 Windows 映像中,应该改用 PowerShell 中的 Add-AppxPackage cmdlet。 如果你确实要对具有活动用户的已部署 Windows 映像使用 DISM 应用预配命令,应在运行命令之前将其他所有用户从映像中注销,使你自己是唯一一个已登录的用户。

将预配的 LOB 应用添加到 Windows 映像

  • 在未安装 Microsoft Store 许可证的情况下,使用部署映像维护和管理 (DISM) 命令行工具或 PowerShell cmdlet 添加 LOB 应用。 例如,在权限提升的命令提示符下键入:

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

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

    Add-AppxProvisionedPackage -Online -FolderPath C:\Appx -SkipLicense
    

    有关详细信息,请参阅 DISM 应用包(.appx 或 .appxbundle)维护命令行选项DISM Cmdlet。 有关 DISM 支持的平台的信息,请参阅 DISM 支持的平台

注意

在安装预配的 LOB 应用之前,计算机不必要加入域或具有已激活的旁加载产品密钥。 但是,只有在计算机满足此项旁加载要求之后,应用才会运行。 有关详细信息,请参阅自定义开始屏幕

将预配的 LOB 应用添加到 Windows 映像后更新该应用

若要更新预配的应用,需要为已登录到预配了该应用的 Windows 映像的每个用户更新该应用:

将预配的 LOB 应用更新到 Windows 映像

  1. 在未安装 Microsoft Store 许可证的情况下,使用 PowerShell 更新 LOB 应用。 必须为已登录到运行 Windows 映像的电脑的每个用户执行此操作。 例如,如果你安装了应用的原始版本 1.0.0.0,现在需要将其更新到版本 1.0.0.1,那么,请在 PowerShell 会话中键入:

    Add-AppxPackage -Path App1_1.0.0.2 -DependencyPath C:\appx\WinJS.appx
    

    其中 c:\appx\WinJS.appx 是依赖项包的路径。

  2. 更新应用后,可以验证已更新应用的版本。 在 PowerShell 会话中键入:

    Get-AppxPackage | Out-GridView
    

为应用添加多种语言

准备多语言映像,登录到映像,安装任何所需的应用资源包(包括语言),然后使用“复制配置文件”来捕获映像。

为应用准备多语言映像

  1. 在 C:\unattend.xml 中创建包含以下内容的 unattend.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
        <settings pass="specialize">
            <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <CopyProfile>true</CopyProfile>
                <RegisteredOrganization />
                <RegisteredOwner />
            </component>
        </settings>
        <cpi:offlineImage cpi:source="catalog:d:/desktop/x86 clgs/install_windows vista ultimate.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
    </unattend>
    

    注意

    有关设置语言以及从 Microsoft Store 安装更新的信息,请参阅更改应用中使用的语言

  2. 在干净的映像中通过 OOBE 登录到本地管理员用户帐户。

    重要

    将特定的语言添加到 Windows 应用时,还需要像对 Windows 应用所做的那样,针对相同的语言将语言包添加到 Windows

  3. 将所需语言添加到当前用户的语言首选项列表中。

  4. 使用 Microsoft Store 帐户(MSA 帐户)安装应用更新

    1. 使用 MSA 帐户登录到 Microsoft Store。

      注意

      仅 Microsoft Store。 不要将本地帐户转换为 MSA。

      如果没有 MSA 帐户,可以在没有 Microsoft Store 帐户的情况下更新应用。

    2. 检查更新并安装新的语言资源包。

    3. 从 Microsoft Store 注销并删除 MSA 帐户。

  5. 打开权限提升的命令提示符并运行:

    Sysprep.exe /generalize /oobe /reboot /unattend:C:\unattend.xml
    
  6. 应会看到电脑启动进入 OOBE。 在运行“复制配置文件”之前添加的任何语言此时应会出现。

在不使用 Microsoft Store 帐户(MSA 帐户)的情况下安装应用更新

  1. 电脑完成安装后,以管理员身份打开命令提示符。

  2. 运行 Start ms-windows-store:Updates

  3. 你将看到 Microsoft Store“更新”页。 应会看到显示了等待安装的更新。

  4. 点击“安装”以安装更新

盘点应用

可以列出脱机或联机 Windows 映像中安装的 LOB 应用,并获取有关包的其他信息。

列出每个用户帐户的 LOB 应用

  1. 可以获取计算机上为特定用户帐户安装的 Windows 应用列表。 必须使用管理员特权打开 PowerShell 才能列出除当前用户以外的用户的包。 例如,在 PowerShell 提示符下键入:

    Get-AppxPackage -AllUsers
    
  2. 可以获取为特定用户安装的包列表。 必须使用管理员特权打开 PowerShell 才能列出除当前用户以外的用户的包。 例如,在 PowerShell 提示符下键入:

    Get-AppxPackage -Name Package1 -User domain\username
    
  3. 还可以获取应用包 (.appx) 的清单,其中包含包 ID 等信息。 例如,在 PowerShell 提示符下键入:

    Get-AppxPackageManifest -Package Package1
    
  4. 如果你不知道某个应用包 (.appx) 的完整名称,可以使用管道获取该应用包的清单。 例如,在 PowerShell 提示符下键入:

    (Get-AppxPackage -Name "*WinJS*" | Get-AppxPackageManifest).package.applications.application.id
    

列出 Windows 映像中预配的 LOB 应用

  • 可以使用 Dism.exe 或 PowerShell 获取 Windows 映像中预配的、要为每个新用户安装的包列表。 例如,在 PowerShell 提示符下键入:

    Get-AppxProvisionedPackage -Path c:\offline
    

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

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

有关详细信息,请参阅使用 DISM 盘点映像或组件

删除应用

可以删除应用的单个实例,或删除应用的预配设置。

删除每个用户帐户的 LOB 应用

  • 只能删除当前用户的单个应用。 例如,在命令提示符处键入:

    Remove-AppxPackage Package1
    

删除 Windows 映像中预配的 LOB 应用

  • 删除某个预配的应用后,将不会为新用户帐户安装该应用。 对于当前已登录的用户以及在计算机上处于活动状态的其他用户帐户,不会从这些帐户中删除该应用。 需要为这些现有应用卸载该应用。

    例如,若要从 Windows 映像中删除预配的 LOB 应用 MyAppxPkg,请在权限提升的 PowerShell 提示符下键入:

    Remove-AppxProvisionedPackage -Online -PackageName MyAppxPkg
    

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

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

Windows PowerShell 中的应用安装 Cmdlet

DISM 应用包(.appx 或 .appxbundle)服务命令行选项

应用打包工具

AppX 模块 Cmdlet

更改应用中使用的语言

DISM Cmdlets

DISM 支持的平台

有关在 Windows Embedded 8 Industry 上安装通用 Windows 8 应用的企业指南

获取开发人员许可证

组策略初学者指南

组策略技术中心

自定义开始屏幕

管理从客户端对 Microsoft Store 的访问

Microsoft 批量许可

适用于 Windows 8.1 的远程服务器管理工具

什么是 Microsoft Store 应用?