手动删除ClickOnce应用后安装新版本提示“引用程序集未安装”求助
ClickOnce应用手动清理后安装失败问题排查
我安装了通过ClickOnce部署发布的.NET 8.0 VB应用,新版本发布后应用无法更新。我未使用“添加/删除程序”卸载(承认这是关键错误),而是手动删除文件以清除程序痕迹。但现在安装新版本时出现错误:
The referenced assembly is not installed on your system。
已执行的清理操作:
- 删除
C:\Users\{UserName}\AppData\Local\Apps\2.0\*中所有与该发布应用相关的文件/文件夹 - 删除
HKEY_CLASSES_ROOT\Software\Microsoft\Windows\CurrentVersion\Deployment\SideBySide\2.0\Components\*中的所有相关引用 - 删除
HKEY_CLASSES_ROOT\LocalSettings\Software\Microsoft\Windows\Shell\MuiCache\*中的相关引用 - 删除
HKEY_USERS\{UserIDs}\Software\Microsoft\Windows\CurrentVersion\Uninstall中的所有相关引用(已遍历所有UserIDs确认无其他用户安装) - 执行命令:
Dism.exe /online /Cleanup-Image /StartComponentCleanup - 尝试运行“添加/删除程序”卸载,但此时卸载已无效
- 删除
C:\Users\{UserID}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ColibriGroup*
一、可能遗漏的清理项
ClickOnce深层缓存目录
- 检查并删除
C:\Users\{UserName}\AppData\Local\Apps\2.0\Data下的相关子文件夹,这里存储应用的部署配置、数据缓存,手动清理主目录时容易遗漏。 - 若存在
C:\Users\{UserName}\AppData\Local\Deployment目录,也需要彻底清理,这是旧版ClickOnce的缓存存储位置。
- 检查并删除
未覆盖的注册表分支
- 清理
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Deployment\Cache下的相关键值,这里记录ClickOnce应用的缓存索引信息。 - 检查
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall(本地机器分支),确认是否残留该应用的卸载条目。
- 清理
临时文件与系统缓存
- 删除
C:\Windows\Temp、C:\Users\{UserName}\AppData\Local\Temp下与应用名称/发布者相关的.msi、.msp文件及临时文件夹。 - 检查
C:\ProgramData\Microsoft\Windows\Start Menu\Programs,删除相关快捷方式(若存在)。
- 删除
应用关联的文件类型/协议
- 查看
HKEY_CLASSES_ROOT下与该应用绑定的文件扩展名、自定义协议(如xxx://格式),若有残留需手动删除。
- 查看
二、错误提示的其他可能含义
该错误不一定是旧应用残留导致,也可能指向新版本的依赖缺失:
- 确认**.NET 8.0 Desktop Runtime**(注意是桌面版,而非ASP.NET Core版)已正确安装,ClickOnce桌面应用必须依赖此运行时。
- 运行
dotnet --list-runtimes命令,核对已安装的.NET运行时版本是否包含完整的.NET 8.0 Desktop Runtime。 - 检查新版本应用的发布清单,确认是否引用了未随应用部署的第三方程序集,这类程序集需提前安装到GAC或系统中。
三、修复步骤建议
- 完成上述遗漏清理项后,重启电脑。
- 重新下载新版本的
.application部署文件,右键选择“以管理员身份运行”尝试安装。 - 若仍报错,卸载当前.NET 8.0运行时,重新下载安装最新版的.NET 8.0 Desktop Runtime。
- 执行
rundll32 dfshim CleanOnlineAppCache命令(管理员权限),重置全局ClickOnce缓存后再尝试安装。
内容的提问来源于stack exchange,提问作者CsharpSqlGuy
相关产品推荐
相关产品推荐

