卸载出错,错误代码为1001

9
错误1001。卸载时发生异常。这个异常将被忽略,卸载将继续进行。然而,在卸载完成后,应用程序可能没有完全卸载。
我无法卸载或安装该应用程序。这个特定的计算机无法访问互联网,我也没有物理访问权限,因此大部分可谷歌到的结果都不太有用,因为它们建议运行来自Microsoft的exe文件。
解决这个问题的手动步骤是什么?我无法物理接触这台机器,也似乎没有办法将文件传输到它上面。这是我正在开发和测试的代码。我尝试了修复和删除,但都失败了。我已经搜寻了注册表,但我可能漏掉了某些东西。
如果这在超级用户上更好,我很乐意移动它。

1
让我给你讲个故事。从前,我收到了一个安装程序缺陷工单,说它无法卸载:错误1001。调查发现,开发人员编写了一个自定义操作,在安装期间创建和启动服务,并在卸载期间停止/删除服务。他没有费心将代码包装在try catch中。开发人员在一台机器上安装后,使用SC命令删除了服务,然后当卸载运行时,他的自定义操作抛出异常并回滚了安装程序。我告诉开发人员,他正在重新发明轮子..... - Christopher Painter
1
他应该利用Windows Installer内置的功能(ServiceInstall、ServiceControl),而不是将低质量的代码注入到关键路径中。我手动重新创建了服务并运行了卸载程序。我记录了这个工单,表明安装程序按设计工作,并将其重新分配给开发人员去修复他的问题。这种情况发生了很多次,因此今后只要我在工单中看到1001,我都会立即将其关闭,表示按照设计工作。 - Christopher Painter
我不完全确定它是否正在启动服务,因为它在IIS中运行,但可能存在类似的情况。 - Rig
1
那只是一个例子。 - Christopher Painter
6个回答

13

我遇到了卸载应用程序的相同问题,该程序包括两个Windows服务,因此不可避免地需要自定义操作。 我通过运行PC Tools Registry Mechanic解决了这个问题。 不幸的是,赛门铁克已经停止了该产品。 但是,据称Microsoft Fixit可以帮助解决与注册表相关的问题。http://support.microsoft.com/mats/Program_Install_and_Uninstall


有趣的是你刚回复了这个问题,因为我今天又遇到了这个问题。但是那台机器无法访问互联网。 - Rig
修复了我无法卸载TFS 2012 Power Tools的问题。谢谢 :) - st3inn
微软的工具对我很有用,谢谢! - Starwave
这个工具对我来说非常好用。谢谢你帮我省去了手动清理注册表的大量时间。顺便说一下,如果你运行这个工具,请耐心等待。它需要几分钟才能完成。 - PhillipPDX

9

1001通常意味着一个InstallUtil(Installer Class)自定义操作失败了。由于这是一个“定制”操作,所以很难给出更详细的答案。也无法确定哪些代码会抛出异常。

如果您想保存这台机器并且不必重建它,那么您需要记录卸载操作以获取正在失败的自定义操作的名称,使用ORCA来调整MSI以削减自定义操作,重新缓存MSI并执行卸载操作。

现在您已经知道了以下内容:

1)在开发/测试生命周期中始终使用虚拟机来测试您的MSI

2)尽可能避免使用自定义操作

3)永远不要使用InstallUtil自定义操作。它们不是一个好的模式或实践。


我很想做这些事情,但我不能制定公司开发机器的政策。有没有其他的清除方法?注册表中是否有保存这些内容的地方,这样我就可以删除该目录了?我们很快将在虚拟机中进行开发,但现在还没有那个环境。 - Rig
还有MSI Zap,但那只会删除Windows安装程序/添加或删除程序元数据。你必须手动卸载应用程序资源。我曾经提供过的答案让开发人员请我吃午餐。 - Christopher Painter
我无法将任何东西移动到那台机器上。我需要手动解决方案。 - Rig
然后找出自定义操作失败的原因,并尝试手动操纵机器使其处于不会失败的状态。 - Christopher Painter
@ChristopherPainter 我的项目中没有使用CA。我已经使用BA将每个用户和每台机器上下文的msi捆绑到EXE中。当我以管理员身份运行EXE时,它可以工作,但是双击安装程序会抛出ERROR 1001并且安装失败。是否有可能捕获WIX EXE安装程序异常并向用户显示消息,例如“以管理员身份打开”?我已经提出了一个问题,请查看这个问题http://stackoverflow.com/questions/27190362/how-to-run-exe-file-from-bundle-as-administrator-wix并指导我。 - Royal

8

1.打开控制面板,右键点击获取修复选项。 2.修复后再次卸载。 这样软件就被卸载了。


谢谢。这个帮我节省了一整天的时间。 - Usman
这应该是一个“次要”的答案。 - yarz-tech

2
创建一个详细的日志文件:
msiexec.exe /I "File.msi" /QN /L*V "C:\Temp\msilog.log"
/I = run installation sequence
/L*V "C:\Temp\msilog.log"= verbose logging
/QN = run completely silently

打开它在记事本中,并搜索值3。同时,检查系统事件日志是否有任何线索。


谢谢,我在另一台电脑上也遇到了这个问题。我认为这个很少使用的项目在其安装程序中存在一个缺陷,我需要追查一下。在生产环境中,它永远不会与我认为它冲突的应用程序一起安装,但在开发环境中肯定会发生这种情况。 - Rig

1

大多数这样的MSI错误可能涉及自定义操作或服务配置,就像Chris所说的那样。

如果真的很重要,你应该获取Orca——用于检查MSI文件的SDK工具。您可以在this answer中查看该工具操作的一些截图。然后检查Custom Action表InstallExecuteSequence表的末尾(按序列号排序),并报告您在那里找到的条目。

不幸的是,似乎唯一获得Orca的方法是安装Windows SDK。或者,您可以下载第三方安装程序工具的试用版。

我猜测,在InstallFinalize之后有一个即时模式的自定义操作返回了某种错误代码。简而言之,您可以在InstallExecuteSequence中报告InstallFinalize之后的所有项目,我们可能可以缩小范围。

我实际上有Orca,但从未真正使用过它。我的直觉是,作为这些应用程序的开发人员,也许这些应用程序正在共享事件日志或性能计数器类别。当两者都安装时,它不能优雅地处理卸载,导致冲突状态。我不确定,但这是需要注意的问题。特别是一旦我尝试使用Orca之后。 - Rig
如果您发布自定义操作表InstallExecuteSequence表末尾的屏幕截图,我们可以提供一些猜测,以确定可能出了什么问题。 - Stein Åsmul
@SteinÅsmul 我在项目中没有使用CA。我已经使用BA将每个用户和每台机器上下文的msi捆绑到EXE中。当我以管理员身份运行EXE时,它可以工作,但是双击安装程序会抛出错误1001并且安装失败。是否有可能捕获WIX EXE安装程序异常并向用户显示消息,例如“以管理员身份打开”?我已经提出了一个问题,请查看这个问题http://stackoverflow.com/questions/27190362/how-to-run-exe-file-from-bundle-as-administrator-wix并指导我。 - Royal

0

解决在Windows Server 2012 R2中卸载Windows服务的1001问题,我所做的是:

  • 进入程序并选择修改服务
  • 选择修复服务

  • 关闭小应用程序,再次选择修改服务

  • 现在选择卸载。

    希望这可以帮到您


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接