WIX安装程序无法正确卸载

3
这是我的情况。
我有两个程序,称它们为程序A和B。它们都使用WIX创建MSI包。
A是一个Windows服务,B是一个Windows WCF服务。
安装服务时,A和B都能够成功安装。还没有打开服务的情况下...
当我尝试卸载A或B(顺序无关紧要)时,安装信息没有从注册表中删除,并且服务仍然显示在服务管理控制台上。但是目录中的文件已被删除。
我必须进入命令提示符,并手动输入“sc delete A.exe(或B.exe)”才能从注册表和服务管理控制台中删除服务。
完成此操作后,第二个要卸载的程序将可以顺利卸载。
无论我先尝试卸载哪个程序,结果都是相同的。
我不知道是什么依赖关系或其他原因导致卸载过程无法完全卸载第一个程序。
如果您有任何想法,请帮忙... 非常感谢!
Baku
4个回答

0

这是我的WiX文件中对应部分的样子:

<ServiceInstall Arguments="CdiTranIdSvc" Account="$(var.SvcUserDomain)\$(var.SvcUserLogin)" Password="$(var.SvcUserPassword)" Id="ServiceInstallTranIdentification" Name="CdiTranIdSvc" Type="ownProcess" Start="auto" ErrorControl="normal" DisplayName="CDI Transactions Identification">

<ServiceControl Id="ServiceControlTranIdentification" Name="CdiTranIdSvc" Start="install" Stop="uninstall" Remove="uninstall">

0
  1. 您的安装程序中是否存在重复的GUID?请检查组件GUID是否唯一,并且没有任何GUID同时被两个安装程序使用。
  2. 您是否在卸载时使用ServiceInstall来移除服务?

哪里可以找到组件 GUID?你是在说 WIX 的 UpgradeCode 还是项目程序集的 GUID?我的 UpgradeCode 和服务程序集的 GUID 都不同。 - Baku
我正在使用添加/删除程序,卸载以移除该程序(服务)。 - Baku
@Baku,你需要查看Component/@Guid属性。这个描述让人觉得你正在遵循组件规则:http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101 - Rob Mensching

0

我知道这是一个旧帖子,但当我遇到这个问题时,我最终来到了这里,这就是我发现对我有用的东西。

Plain Old Stan有一篇关于此的简短博客文章: http://plainoldstan.blogspot.com/2010/11/wix-installing-and-uninstalling-windows.html

它解决了我在从注册表中卸载服务时遇到的问题。 我认为关键是Remove =“both”。

以下是节点:

<ServiceControl Id='ControlStansWinService' Remove='both' Name='StansWinService' 
                        Start='install' Stop='both' Wait='yes' />

在重新安装之前,您可能需要清理之前的安装,最好使用命令提示符使用“sc delete [服务名称]”进行清理。此外,请小心,但是您可以在注册表中找到服务,位于“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”下。

希望这能帮助某些人。WIX安装程序非常棒!


-2

我以前不得不使用微软的Windows Installer CleanUp Utility。 可以在这里找到。


1
不要使用MsiZap(或称为“Windows Installer CleanUp Utility”的UI包装器)。它无法清理:http://robmensching.com/blog/posts/2009/3/6/More-on-Haacks-Troubleshooting-Windows-MSI-Installers - Rob Mensching
你所参考的博客似乎同意这里的看法:“...MSIZap是最后的工具...”我认为这就是我们在这里讨论的问题,因为最初的问题是“请帮忙..我要疯了..!!!”,而我的回答是“我不得不使用...”相信我,我已经尝试过所有其他方法,然后CleanUp实用程序适合我。即使维基百科也有“最后一搏”的说法, 我同意。维基还解释了正在发生的事情。维基可以在以下网址找到:http://en.wikipedia.org/wiki/Windows_Installer_CleanUp_Utility - JBrooks

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