跳转至主要内容

晴雨技术笔记

预装 Appx 应用

杏川铭心 杏川铭心
最后编辑于 2025年12月5日

缘起

之前用一个比较老的红米笔记本,上面被我装了 Windows 10 LTSC 2019。LTSC 嘛,都知道,UWP 软件除了设置一个都没有。于是折腾半天把 Appx 全部下下来装上了。

不过那个时候我正好还在研究 RDP,因此创建了一个新用户。然后就发现问题了……

Add-AppxPackage 命令安装的 Appx 软件,乍一看没什么,不过当你切换了用户的时候就露馅了,刚刚安装好的这些软件一个都没有。

因为 Appx 本质是商店软件,哪怕是免费软件背后也有相应的授权机制,单纯的安装一个 Appx 只会把这个软件绑定到当前用户上,切换了这些软件就不显示了。

这也是为什么安装 Appx 应用很神奇的不需要管理员权限,如果简单的拿类似 DPKG/APT 这种模式来思考的话肯定想不明白。

不过与此同时我们也发现,系统自带的软件不管在哪个用户里登录都会出现。可能你会觉得系统自带的应用和别的应用不一样,但是刚才我们已经从 LTSC 中发现,除了“设置”是真的不一样外,别的所有自带软件都只是普通的商店软件。

那么这些软件是如何做到对每一个用户都可用呢?

原理

原理比你想象中的很可能要简单得多。

在把一个 Appx 包注册为预装软件之后,系统就会在某个用户第一次登录系统的时候,把所有这些软件装一遍。

对没错,就是这么的简单粗暴,就是自动装一遍这些“预装”软件……

Windows 8.x/10 有一个很经典的“别来无恙啊”的闪来闪去的界面,11 改成了一堆蓝色的球飘来飘去,你以为这个界面只是好看吗?其实就是 Windows 在后台偷偷装这些软件!

事实上 Windows 8.x 在这个地方很诚实,下面的小字写的就是“正在安装应用”。不知道为什么 10 改了……

预配 Appx

微软官方不管这个流程叫“预装”,叫“预配”。

这个流程会修改 Windows 系统本身,因此需要管理员权限。

Add-AppxProvisionedPackage -Online -FolderPath "C:\Appx" -SkipLicense
Add-AppxProvisionedPackage -Online -PackagePath "C:\Appx\1.appx" -SkipLicense

记得把路径替换成你的实际路径。

注意 -Online 这个参数,不能省略,因为尽管这个命令看起来很像 Appx 模块里面的一个命令,由于涉及修改 Windows 本身,它其实是 Dism 模块里的, -Online 这个参数代表要操作的 Windows 映像是当前正在运行的映像。

如果采用文件夹模式,那么非常简单,把你的 Appx 一股脑全部丢进去就好了。

文件模式比较复杂,如果有依赖的话需要用 -DependencyPackagePath 这个参数指定依赖项,不推荐用。

另一个需要关注的是 -SkipLicense 这个参数,由于前面已经说过,Appx 作为商店应用是会涉及到授权问题的,要么指定许可证,要么指定跳过。由于 License.xml 这个许可证文件不 开放获取,因此这里指定跳过许可证,只要你确保你的 Appx 都是免费应用就不会有问题。

在付费/需要授权的软件上使用 -SkipLicense 会损坏系统!

这样的话,下次新建用户登录的时候,就会在“剑阁峥嵘而崔嵬”之后看到这些软件了!

当然,因为是 Dism 模块,直接拿 DISM.exe 操作也是可以的:

DISM.exe /Online /Add-ProvisionedAppxPackage /FolderPath:C:\Appx /SkipLicense
DISM.exe /Online /Add-ProvisionedAppxPackage /PackagePath:C:\Appx\1.appx /SkipLicense

结语

我当初为什么要脑子一抽让我每次都写这么一个牛魔结语啊!

有什么好结语的又不是上课

  • 特别提醒:

    评论看到就会回,但是不保证速度,有的时候站长忘记看的话就会出现审核好几天也没有动静的情况……

    如果等不及的话,可以加QQ,同样看到就会通过!

杏川铭心
杏川铭心

QQ: 3146654817,欢迎友好交流 :P 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

Previous Post

SELinux 

Next Post

No newer posts

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注