列出所有使用winget安装的软件包

问题描述 投票:0回答:5

有没有办法只列出专门使用 winget 命令安装的软件包?

winget list

似乎显示了机器上安装的所有软件包。

我正在更换我的计算机,我想获取我使用 winget 安装的所有软件包的列表,以将其安装在新计算机上。这可能吗?

windows powershell windows-store-apps winget
5个回答
4
投票

不可以,WinGet 无法显示已安装的软件包。

列表的输出与“Windows 应用程序和功能”来自同一来源。按来源过滤只是一项请求,用于显示指定来源的多个来源中可用的软件包。

已要求进行增强,以仅过滤给定源中可用的包的结果。


3
投票

要通过 winget 将显示输出缩小到那些

可用
的包,请使用以下命令:

(winget list) -match ' winget$'
不幸的是,这

与您实际通过winget安装的

不一样,
Demitrius Nelon致敬:

  • v1.4.10173

    winget
    版本开始,没有
    没有
    方法可以获取此信息。

  • GitHub 问题 #1155

    提出了未来的增强功能 winget list

    
    


0
投票

顺便说一句,我从未使用 WinGet 在这台电脑上安装过任何东西,所以很高兴 WinGet 现在显示

与 WinGet

兼容的应用程序,即使它们没有随 WinGet 一起安装。


WinGet 使用版本:1.5.441-预览版

列出来源 = Winget 的应用程序:

winget list --source "winget"

这会在终端中为您提供一个过滤列表,其源为“Winget”。据我所知,任何可以与存储库中的 ID 匹配的应用程序都会被列出,无论它最初是如何安装的(很好!)。

小提示,您可以通过将输出管道传输到文件来导出此列表,例如:

winget list --source "winget" > "C:\temp\__MyOutput.txt"


导出WinGet程序的JSON清单

winget export -o "C:\temp\__ListApps.txt"

这将导出一个 JSON 清单,可以使用 import 命令直接导入该清单(示例如下)。将“C: emp__ListApps.txt”更改为您想要的任何内容。您可以使用一些其他命令选项:

https://learn.microsoft.com/en-us/windows/package-manager/winget/export


导入WinGet程序的JSON清单

winget import -i "C:\temp\__ListApps.txt"

使用它导入该清单以进行自动安装。将“C: emp__ListApps.txt”更改为您想要的任何内容。其他信息:

https://learn.microsoft.com/en-us/windows/package-manager/winget/import

还有很多查询功能,因此您可以根据需要过滤列表,请在此处查看 WinGet 文档:
https://learn.microsoft.com/en-us/windows/package-manager/winget/list


0
投票

但是,此命令显示 winget 可以更新的应用程序列表,无论最初是通过 winget 还是其他方式安装的。

winget update

也许这是一个有用的部分答案?


0
投票

在 PowerShell 中运行:

$winget_packages = ((winget list) -match ' winget$' | Select-String -Pattern "(?<= {2,})(?!\d+\.\d+)\S+(?= {2,})") | foreach {$_.Matches.Value} $winget_script = (echo '@echo off winget install ' ($winget_packages -replace "$", " ") ) $winget_script | Set-Content install_winget_packages.bat -NoNewLine

本质上,它的作用是获取带有“winget”源的已安装程序列表^1。然后,它将文本前后加上两个或多个非版本号 (X.X+) 的空格,并将匹配的值放入 
winget_packages

^2。

最后,它将 

winget install

放在前面,在末尾添加一个空格,并将其全部写入 .bat 文件,并折叠换行符。

1:正如 

@DemitriusNelon

指出的那样,这不是您实际使用 winget 安装的那些,但我认为这不是什么大问题,因为如果源可用,我通常宁愿它们是这样。在我不希望这样的情况下。我手动把那对夫妇拿出来。 2:如果

package name is so long that there aren't two space but not long enough that it doesn't produce the error characters ΓǪ. 会失败

© www.soinside.com 2019 - 2024. All rights reserved.