我在 Windows 11 上的 Maui .NET8 工作负载被丢弃,所以现在我正在按照故障排除指南尝试完全删除 MAUI 并重新开始:
https://learn.microsoft.com/en-us/dotnet/maui/troubleshooting?view=net-maui-8.0
我已经删除了工作负载和 sdk 安装程序,我们被告知使用 reg query 列出需要卸载的剩余 .msi 文件:
reg query HKLM\SOFTWARE\Microsoft\Windows\currentversion\uninstall\ -s -f manifest
这带来了十个条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{3ACEC80F-60DF-459A-B4FE-079248AFBDF8}
InstallSource REG_SZ C:\ProgramData\dotnet\workloads\microsoft.net.sdk.ios.manifest-8.0.100.msi.arm64\17.0.8490\
DisplayName REG_SZ Microsoft.NET.Sdk.iOS.Manifest-8.0.100 (arm64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{580344D0-D2F4-4040-AF23-A4A5537A2317}
InstallSource REG_SZ C:\ProgramData\dotnet\workloads\microsoft.net.sdk.tvos.manifest-8.0.100.msi.arm64\17.0.8490\
DisplayName REG_SZ Microsoft.NET.Sdk.tvOS.Manifest-8.0.100 (arm64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{886369C4-3176-4986-99A2-A2F2D3076AC8}
InstallSource REG_SZ C:\ProgramData\dotnet\workloads\microsoft.net.sdk.macos.manifest-8.0.100.msi.arm64\14.0.8490\
DisplayName REG_SZ Microsoft.NET.Sdk.macOS.Manifest-8.0.100 (arm64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{96863CEC-64BA-46DD-834B-88532D98AAE6}
InstallSource REG_SZ C:\ProgramData\dotnet\workloads\microsoft.net.sdk.maccatalyst.manifest-8.0.100.msi.arm64\17.0.8490\
DisplayName REG_SZ Microsoft.NET.Sdk.MacCatalyst.Manifest-8.0.100 (arm64)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{D2EFF3EE-756E-47E6-AF62-C01ECE07795B}
InstallSource REG_SZ C:\ProgramData\dotnet\workloads\microsoft.net.sdk.android.manifest-8.0.100.msi.arm64\34.0.52\
DisplayName REG_SZ Microsoft.NET.Sdk.Android.Manifest-8.0.100 (arm64)
然后我们被指示使用以下形式的命令卸载每个
msiexec /x {3ACEC80F-60DF-459A-B4FE-079248AFBDF8} /q IGNOREDEPENDENCIES=ALL
但是,msiexec 会拒绝这样做,因为语法不正确。因此,在阅读了 msiexec 文档(顺便说一下,它似乎已经过时),加上大量的谷歌搜索后,我尝试了
msiexec /uninstall /package {3ACEC80F-60DF-459A-B4FE-079248AFBDF8} IGNOREDEPENDENCIES=ALL
它立即运行完成,没有任何输出,但重新运行 reg 查询 显示什么也没有发生;所有十个条目都保留下来。
所以我的问题是,我现在该怎么办?我可以在 msiexec 中使用其他语法吗?否则,手动删除注册表项是否安全,例如
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\uninstall\{3ACEC80F-60DF-459A-B4FE-079248AFBDF8}
然后删除文件,例如 C:\ProgramData\dotnet\workloads\microsoft.net.sdk.ios.manifest-8.0.100.msi.arm64 ?或者只需卸载 Visual Studio 并重新安装就足够了?
msiexec /x {GUID}
是通过 ProductCode
卸载软件包的正确语法。后来添加了更长的语法,但输入更多内容是一样的。
注意:如果您使用的是PowerShell,花括号可以被解释,所以您需要转义它们。或者,如果您对 PowerShell 不满意,请使用普通的旧式
cmd
。
/q
是您看不到任何 UI 的原因。尝试使用 /qb
来查看卸载进度条,并使用“安静的基本 UI”而不是完全安静的“无 UI”。
IGNOREALLDEPENDENCIES
是这些安装包的自定义属性。它没有 Windows Installer 特定行为。
最后,添加
/l*v log.txt
以获取日志文件,该文件将在进度条完成后告诉您更多信息。
msiexec /x {GUID} IGNOREDEPENDENCIES=ALL /qb /l*v log.txt
旁白:
(顺便说一下,这似乎已经过时了)
这是一个奇怪的评论,似乎没有多大用处。 Windows Installer 命令行的文档非常正确。
/?
切换到 msiexec 也非常好,无需访问互联网。
PPS:随机删除文件和注册表项是在计算机上留下软件碎片的好方法。这将使卸载和安装该软件的更高版本变得更加困难。您可能经常看到类似于“仅当您知道自己在做什么时才修改注册表”之类的评论。提供这些警告是有充分理由的。