Winget 是 Windows 官方提供的包管理工具,在 Win11 和新版 Win10 中提供,仅有命令行版本。
但是这个工具是预装在系统中的,官方未提供便携版的可执行文件下载,也就没法把 winget 复制到其它电脑中使用,更无法内嵌在自己的软件中分发。官方提供的唯一安装方式是 UWP 安装包 Microsoft.DesktopAppInstaller.msixbundle。
强行复制系统中的 winget.exe 所在文件夹到其它电脑也无法正常使用。
目前发现 UnigetUI 的安装目录中有 winget-cli 文件夹,复制出来可以作为便携版的 winget 正常使用。但是一直依赖 UnigetUI 也不是好办法。
所以想问问网友,是否知道什么渠道能下载到便携版的 winget,或者怎么自行编译得到 winget 可执行文件?
我有两个使用场景需要便携版:
- 放在 U 盘中,插在别人的电脑上运行(我是公司 IT 人员),快速安装软件;
- 随自己开发的脚本分发,作为依赖项的一部分。
这两个场景都是便携版更好,安装到用户电脑的话有种乱塞捆绑软件的嫌疑。如果用户的电脑是旧版 Win10 / LTSC / Server 的话,是没有预装 winget 的
Aalivexy
(安来Aalivexy)
4
那你应该将Microsoft.DesktopAppInstaller.msixbundle作为依赖项,自动安装DesktopAppInstaller,而不是使用独立的winget.exe吧?
安装 DesktopAppInstaller 也需要一两分钟的时间,能节约下来更好(目前用的是从 UniGetUI 里提取的 winget-cli,确实可用,说明技术上是能做到的)
另一个原因是个人不太喜欢往别人的电脑里装软件,有种往别人家墙上钉钉子的侵入感
Aalivexy
(安来Aalivexy)
6
并且winget.exe可能也对DesktopAppInstaller内的组件有依赖,你直接复制出来winget没法使用已经能说明问题了,实际负责安装的可能不是winget而是DesktopAppInstaller的一部分(我猜测),另外部分winget来源的软件可能对winget已在PATH中有假设。
另外一个问题是,你要使用非官方的自编译winget,还会有杀毒软件的问题,u盘内未数字签名的可执行程序请求管理员权限、访问网络下载二进制执行,这样做非常可能会被判定为病毒,不受控的环境下基本没法这么做(受控环境装个Microsoft.DesktopAppInstaller.msixbundle就是了)
比较神奇的是 UniGetUI 里的那个 winget-cli 是有微软签名的,说明这不是 UniGetUI 自己编译的,而是他们从某种渠道获取的 winget 便携版?

Aalivexy
(安来Aalivexy)
8
如果一定要这么做,你可以试试根据unigetui的exe、dll列表从你的系统/microsoft store提取可执行文件,我看到的unigetui使用的winget-cli就是直接二进制塞到仓库里的,并没有什么CI之类的,这玩意是手动更新的(所以unigetui也默认用系统的winget)
感谢各位分享,最后自己找到了个简单粗暴的办法:从官方的 Microsoft.DesktopAppInstaller.msixbundle 中直接提取现成的可执行文件。
- 下载 msixbundle 安装包:winget-cli - GitHub;
- 后缀名改成
.zip,用压缩软件打开,解压其中的 AppInstaller_x64.msix;
- msix 的后缀名改成
.zip,再次解压,就好了……这就是便携的 Winget……
- 删掉无关文件,只保留以下 winget 必要的文件:
AppInstallerBackgroundTasks.dll
concrt140_app.dll
Microsoft.Management.Configuration.dll
Microsoft.Web.WebView2.Core.dll
msvcp140_1_app.dll
msvcp140_2_app.dll
msvcp140_app.dll
resources.pri
vcamp140_app.dll
vccorlib140_app.dll
vcomp140_app.dll
vcruntime140_1_app.dll
vcruntime140_app.dll
WindowsPackageManager.dll
WindowsPackageManagerServer.exe
winget.exe
- 得到以上 Winget 便携程序
4 个赞
一个离谱的方法:U盘里备一个Xbox的安装包和一个便携版的BCUninstaller,安装好Xbox之后它会提醒你补充Microsoft Store和应用安装程序,应用安装程序就是winget。最后再用BCUninstaller把Xbox和Microsoft Store卸载就行了(手动滑稽)