无法完全删除 MAUI 工作负载 - msiexec 问题

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

我在 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 并重新安装就足够了?

windows-installer maui uninstallation workload
1个回答
0
投票

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:随机删除文件和注册表项是在计算机上留下软件碎片的好方法。这将使卸载和安装该软件的更高版本变得更加困难。您可能经常看到类似于“仅当您知道自己在做什么时才修改注册表”之类的评论。提供这些警告是有充分理由的。

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