使用 DISM 管理 Windows 应用
前言
如果你的应用程序包名、或者文件路径中含有空格,请将空格改为连接符(
-)或下划线(_)DISM 需要以管理员身份运行
Windows PE 4.0、Windows Server 2012 服务器核心安装选项或任何低于Windows 8和Windows Server 2012的 Windows 版本的 Windows 系统都不支持DISM 支持使用长路径(UNC 路径)表示(详情请参阅:Windows 系统中的文件路径格式 | Microsoft Learn),例如:
1
Dism.exe /Image:\\?\C:\ /?
关于参数
- 如果仅有
/Image:<系统盘盘符>:或/Online参数,则代表另一个参数不可用 [/<参数 1> | /<参数 2>]中括号代表多选一的必选参数,例如:代表这两个参数只能二选一,如果我选择前面的的参数,则为1
[/Image:<系统盘盘符>: | /Online]
/Image:<系统盘盘符>:{</参数 1>[</参数 1>] | </参数 2>[</参数 2>]}花括号代表可以多选的可选参数,花括号内的中括号代表多选一的必选参数,花括号外的中括号为可选,例如:沟槽的微软,文档越写越乱,这还得自己改一遍1
/Add-ProvisionedAppxPackage {/FolderPath:<app_folder_path> [/SkipLicense] [/CustomDataPath:<custom_file_path>]} /PackagePath:<main_package_path> {/DependencyPackagePath:<dependency_package_path>} {[/LicensePath:<license_file_path>] [/SkipLicense]} {[/CustomDataPath:<custom_file_path>]} {[/Region:<region>]}
- 如果你是为挂载的映像添加,请将
<系统盘盘符>:替换为挂载路径,如C:\Temp\Mount(相当于要挂载的镜像的系统盘根目录,即Windows文件夹的上层目录) /Image:参数仅允许在 PE 下使用,或对挂载的镜像使用;/Online参数仅允许对当前正在运行的系统(联机映像)使用
所有的操作都需要管理员身份,执行前请二选一执行以下操作:
- 按下 WIN + X 以打开“高级菜单”,选择“终端管理员”,“Windows PowerShell (管理员)”或“命令提示符(管理员)”
- 按下 WIN + Q 或 WIN + S 以打开“Windows 搜索”,输入
wt.exe(终端)、cmd.exe(命令提示符)或powershell.exe(Windows PowerShell),选择最佳匹配结果并点击“以管理员身份运行”
/Get-Help /?
获取帮助
语法:
1 | Dism.exe /Image:<系统盘盘符>: /? |
1 | Dism.exe /Image:<系统盘盘符>: /Get-Help |
1 | Dism.exe /Online /? |
1 | Dism.exe /Online /Get-Help |

/Get-ProvisionedAppxPackages
获取映像中为每个用户安装的应用程序包的相关信息
语法:
1 | Dism.exe /Image:<系统盘盘符>: /Get-ProvisionedAppxPackages |
1 | Dism.exe /Online /Get-ProvisionedAppxPackages |

/Add-ProvisionedAppxPackage
将一个或多个应用程序包添加到映像
若应用到未进入 OOBE 的系统或挂载的映像,每个现有的或新的用户配置文件都将注册该应用;如果将应用添加到联机映像,则在当前用户下次登录之前,将不会为此用户注册应用
若系统不联网,则需要使用 /LicensePath 参数来指定许可证,否则会无法打开应用程序;如果为 UUP 集成的,可以在 UUP 的 UUPs\Apps 文件夹下找到 License.xml(每个应用都有对应的许可证,不可混用)
语法:
1 | Dism.exe /Add-ProvisionedAppxPackage {/FolderPath:<已解包的应用程序包路径> [/SkipLicense] | /PackagePath:<应用程序包路径> [/DependencyPackagePath:<应用程序包运行时路径>] [/LicensePath:<许可证路径> | /SkipLicense]} |
其他参数及注解
/CustomDataPath:<自定义数据文件路径>可跟在/FolderPath或/PackagePath的/SkipLicense或/LicensePath的参数后[/Region:"<区域>"]可跟在/FolderPath或/PackagePath的命令最末尾处- 使用 /Region 指定必须在其中预配应用包( .appx 或 .appxbundle)的区域。 区域参数可以是:
·All,指示应为所有区域预配应用
· 以分号分隔的区域列表, 区域将采用 ISO 3166-1 Alpha-2 或 ISO 3166-1 Alpha-3 代码形式; 例如,可以将美国指定为“US”或“USA”(不区分大小写),如果未指定区域列表,则只有在将包固定到“开始”菜单布局时,才会对其进行预配
- 使用 /Region 指定必须在其中预配应用包( .appx 或 .appxbundle)的区域。 区域参数可以是:
/DependencyPackagePath:<应用程序包运行时路径>只能跟在/PackagePath的参数后,指定该应用程序包需要的应用程序包运行时,所需运行时在应用程序包内的AppxManifest.xml中列出,参数可叠加/LicensePath:<许可证路径>可跟在/FolderPath或/PackagePath的参数后,所需的许可证应为.xml,/SkipLicense可跟在/FolderPath或/PackagePath的参数后,在其他方案中使用可能会损坏映像
假如,我的系统盘盘符为 C,应用程序包放在 D:\Appx 下,应用程序包名为 Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe.Appx,没有许可证文件,则我的命令如下
1 | Dism.exe /Image:C: /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe.Appx /SkipLicense |
抑或是
1 | Dism.exe /Online /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe.Appx /SkipLicense |

其他示例
完整示例:
1 | Dism.exe /Add-ProvisionedAppxPackage /FolderPath:D:\Appx\UnpackedAppx /CustomDataPath:D:\Appx\CustomData\CustomData.xml /LicensePath:D:\Appx\License\License.xml /Region:"All" |
1 | Dism.exe /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Appx.appx /DependencyPackagePath:D:\Appx\Runtime\Framework-1.appx /DependencyPackagePath:D:\Appx\Runtime\Framework-2.appx /SkipLicense /Region:"US;GB" |
/FolderPath:
1 | Dism.exe /Image:C: /Add-ProvisionedAppxPackage /FolderPath:D:\Appx\UnpackedAppx /CustomDataPath:D:\Appx\CustomData\CustomData.xml /LicensePath:D:\Appx\License\License.xml |
1 | Dism.exe /Online /Add-ProvisionedAppxPackage /FolderPath:D:\Appx\UnpackedAppx /SkipLicense |
/PackagePath:
1 | Dism.exe /Image:C: /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Appx.appx /DependencyPackagePath:D:\Appx\Runtime\Framework-1.appx /DependencyPackagePath:D:\Appx\Runtime\Framework-2.appx /LicensePath:D:\Appx\License\License.xml |
1 | Dism.exe /Image:C: /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Appx.appx /SkipLicense |
1 | Dism.exe /Online /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Appx.appx /Region:"All" /SkipLicense |
1 | Dism.exe /Online /Add-ProvisionedAppxPackage /PackagePath:D:\Appx\Appx.appx /LicensePath:D:\Appx\License\License.xml /Region:"US;GB" |
/Remove-ProvisionedAppxPackage
从映像中删除应用程序包的预配,并不会注册到创建的新用户帐户
语法:
1 | /Remove-ProvisionedAppxPackage /PackageName:<应用程序包全名称> |
若我的应用程序包全名称为 Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbewe,则命令如下
1 | Dism.exe /Image:C: /Remove-ProvisionedAppxPackage /PackageName:Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe |
抑或是
1 | Dism.exe /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe |

- 在 PowerShell 中使用 Remove-AppxPackage 命令,为已注册应用程序包的每个用户删除应用程序,以便从映像中完全删除该应用程序
- 若尚未将应用程序包注册到任何用户配置文件,则
/Remove-ProvisionedAppxPackage选项将完全删除应用程序包,而非仅删除预配
疑难解答
如果遇到 错误: 0xc1570118 的报错,则可能是由于目标应用程序包已安装导致
