|
|
1
Stein Åsmul
6 年前
缺少/无法访问源
很明显,Windows Installer请求已安装产品的安装源以允许卸载不是正常行为。
快速修复?
也许看看下面”
卸载MSI
“以下为
Microsoft Install / Uninstall Tool
您可以使用它以一种快速、自动和(我相信)可靠的方式尝试解决不可卸载的MSI包的问题。
更新
:Microsoft工具应该能够解决您的问题。剩下的答案都是本着
让我们为这个着迷吧
“:-)并尝试解释可能的原因以及其他一些修复方法。
另请参见下面的操作方法
详细,调试日志
为您的特定卸载/安装问题收集更多的“Intel”(可能会精确指出MSI中的确切罪魁祸首,例如特定的自定义操作)。
您的问题可能的潜在原因是:
-
缺少缓存MSI
:由于某种原因,在初始安装过程中应该在受保护的系统文件夹中创建的缓存MSI丢失。详细说明如下。
-
缺少源资源
:也可能是卸载过程需要磁盘上丢失的资源,从而阻止卸载运行。
-
然后,卸载过程将尝试解析原始安装介质的源,以便获得所需资源(二进制?),然后由于原始源MSI已被删除,并且找不到该源,所以无法执行此操作。
-
这通常表示MSI设计问题
. 卸载中断,您被一个catch 22卡住(无法卸载,无法升级)。有关解决此问题的潜在方法,请参阅下面链接到的Microsoft工具。
-
如果一个MSI设计问题确实是其原因(并且可以肯定是这样),您必须尝试与供应商合作,为他们的软件包提供可靠的、未来的修复方案,否则它将明显影响您自己产品的成功和可靠性。我想是不言而喻。
-
其他原因
:下面列出了许多其他潜在的外部原因,范围从
anti-virus blocking
,
disk space issues
,
user / admin tinkering
,
system restore
等等…
以下日志条目使我怀疑
防病毒阻塞问题
但是,需要原始源解析的丢失资源同样可能:
SOURCEMGMT: Source is invalid due to missing/inaccessible package.
由于反病毒似乎无法阻止您下载的完整的MSI运行,我认为问题是一个丢失的资源,MSI试图在卸载期间错误地解决并从源媒体检索。
可能是MSI设计问题
-明天再查。
完整、详细、调试日志记录
可能提供进一步的线索:
下面的文字是在决定提出上述三个主要候选原因之前写的。留在内容中以供参考。
卸载MSI
Microsoft安装/卸载工具
:有一个Microsoft工具可用于案例
如果出现无法解决的安装/卸载问题:
Fix problems that block
programs from being installed or removed
。
通常卸载现有安装的方法是
use the product GUID of the product in question and kick off the uninstall
如下所示-
带详细日志的静默卸载
:
msiexec.exe /x {00000000-0000-0000-0000-00000000000C} /QN /L*V "C:\My.log" REBOOT=ReallySuppress
快速参数说明
:
/X = run uninstall sequence
{00000000-0000-0000-0000-00000000000C} = product code for product to uninstall
/QN = run completely silently
/L*V "C:\My.log"= verbose logging at specified path
REBOOT=ReallySuppress = avoid unexpected, sudden reboot
你已经有了
the list of other uninstall approaches
(我最喜欢的是第三部分)。
我不擅长
PowerShell
,但下面是前面关于其用于安装/卸载产品的答案:
How can I use powershell to run through an installer?
也许检查一下那个新的
Windows Installer PowerShell Module linked
到顶部。
潜在源提示原因
以下部分解释见
the answer you link to above (section 12)
,但我将在此处将其上下文化:
-
缓存的MSI
:Windows Installer将MSI文件缓存到
%SystemRoot%\Installer
在原始安装过程中。此文件夹是超级隐藏的,您可能需要显示操作系统文件才能在Windows资源管理器中看到它。
Windows键
+
R
+粘贴
%SystemRoot%\安装程序
+HIT
进入
. 在搜索您的MSI之前,请阅读下一个项目符号点。
-
ranom,十六进制名称
:此缓存的MSI被分配为
随机十六进制名称
并且在维护和卸载操作期间使用,并且不需要指向用于从中安装任何此类操作的原始源MSI。
More details on this caching
(Microsoft不断更改此缓存的工作方式)。
无论您做什么,都不要在此OS文件夹中进行任何更改!
-
要查找您的msi,请将鼠标按顺序悬停在随机msi名称上,然后
黄色弹出窗口
应该向您展示MSI的用途。重复,直到找到你的微星。或者…
-
您也可以添加
主题栏
到Windows资源管理器视图查看完整的产品名称列表。
See this article for how to do this
. 请注意,对于本地化的系统,很难找到要显示的正确属性,但是如果您的系统是英文的,这是一个很好的方法-在几秒钟内全面概述,没有繁琐的“等待鼠标悬停”弹出窗口。
-
在过去,
Windows资源管理器状态栏
还显示了MSI的产品名称-我不确定它是否会继续。(
View => Status Bar
)
-
解决资源
或
自定义操作
:由于许多外部原因,此缓存文件可能丢失,但除了外部原因外,可能是所讨论的MSI设计不正确,并通过调用标准操作专门尝试解决原始源。
ResolveSource
. 我相信这会引发你描述的问题。我想MSI也可以包含
自定义操作
这也可能引发问题-我不确定。
-
更新
:我下载了相关的MSI,但没有看到任何
解决资源
问题-坦率地说,我甚至不确定这个标准操作是否可以再使用。但是有许多自定义操作-其中一些看起来可疑。我无法安装MSI进行测试(缺少先决条件)。
-
缺少缓存的MSI
:在某些情况下,缓存的MSI在
%SystemRoot%\安装程序
-或者是因为它在安装过程中从未缓存在那里,或者是因为它被某些以后的进程或机制删除或阻止。一些可能的原因(只是理论):
-
你的
防病毒或安全软件
可能隔离了整个缓存的msi文件。我最近才发现这个问题。随着恶意软件的恶化和安全性的加强,这可能成为一个主要问题。
-
如果你是
磁盘空间不足
,我想会导致一些奇怪的问题,比如这个丢失的缓存文件。不过,我认为您会得到有关空间问题的适当警告,但磁盘空间不足会导致
文件/磁盘损坏
?
-
除了缺少磁盘空间,
磁盘损坏
当然,这也可能是由于磁盘空间以外的其他技术原因造成的,而这必然会导致丢失/无法访问的缓存MSI。
恶意软件
是磁盘损坏的罪魁祸首之一。
故障I/O驱动器
另一个。
盘表面问题/闪光磨损
也。
坏的安全软件
用错误的阻塞来干预任何地方。最大的一个是:
停电
和新的NVMe磁盘具有巨大的缓存容量,没有板载电容器电源,以确保缓存承诺,如果停电。磁盘损坏是不可避免的。名单还在继续。
-
在与磁盘损坏和磁盘空间相关的问题中,一些用户试图
重定向受MSI OS保护的缓存文件夹
%SystemRoot%\安装程序
到网络位置或其他分区,因为它们的SSD系统磁盘空间不足。完全可以理解,但这可能导致MSI操作完全失败。
See this answer for the problem and some suggested workarounds
.
-
与前一个要点有关,过分热心
电脑修理工
有时删除不应触摸的系统文件夹文件(尽管该文件夹是“超级隐藏”的并且很难访问,但仍然会找到它)。一些
自定义第三方清理应用程序
也可能会意外删除缓存的MSI
自定义,管理员清理脚本
.
-
我一直怀疑
系统还原
当涉及到删除缓存的MSI时,我是一个罪魁祸首,但我还没能在这一行为中抓住违法者!
-
我已经准备好了总结性的判断,上面有系统还原的名称,如果有任何即将到来的证据(“
…烧焦的孩子,有烧焦的气味
“”。
-
系统还原是否可能与其他问题结合在一起?(
文件/磁盘/注册表损坏?
)这可能是以前的事,问题可能是秘密解决的?
-
小心系统恢复-它是神秘和古怪的来源。我看到它从桌面上删除了我的数据文件。为什么?也许只针对死亡(驾驶员故障)和恶意软件的蓝屏使用它。
-
如上所述,我想
产品安装结束时发生崩溃或错误
可能会导致缓存的MSI无法正确进入缓存文件夹,就像
停电
(用于台式机)。
-
考虑到缓存可能会在安装过程开始之前发生,这个原因似乎不太可能发生,但我会提到它。人们会认为安装是不完整的,而不是缓存。
-
删除临时文件/回滚文件时可能会出现复杂情况?再次强调:系统还原是否会对文件状态感到困惑?(存在带有损坏产品注册的缓存文件吗?移除它?)
-
为了
你自己的设置
,重复安装和测试您的MSI可以触发
奇怪的边缘案例
(不太可能发生在“野外”)在这里,你可以看到这个缺乏MSI缓存的现象背后的丑陋的头部。我见过并发症
相同的包装代码
已被重复使用。非常技术性——除了安装开发人员和/或他们的QA人员之外,不应该影响任何人。
-
和
高技术原因
与系统和网络的配置相关的问题可能会引发这个问题,特别是在
(终端)服务器
:自定义组策略、自定义权限、自定义ACL、脚本的模拟上下文等…,但通常应该在所有包中看到它。你需要一个真正的服务器专家来解释这些问题——他们可能有很好的理由来锁定这些问题。
一些链接:
|