在卸载之前停止服务和保管的应用程序

时间:2010-04-01 13:06:20

标签: service wix uninstall

我有一个服务MyService.exe,它正在管理我的应用程序MyApp.exe,这意味着当这个应用程序崩溃或其他什么时启动应用程序。基本上,当服务停止时,应用程序停止(由服务),当服务启动时,服务启动应用程序。

为了停止我的服务以及卸载时我的应用程序:

<ServiceControl Id='MyServiceControl' Name='MyServiceForTest' Start='install' Stop='uninstall' Remove='uninstall'/>

但是当我想卸载所有内容时,我收到错误消息:“安装程序必须更新系统运行时无法更新的文件或服务。如果选择继续,则需要重新启动才能完成设置。 ”。如果我在运行卸载程序之前手动停止服务,我就不会收到此消息,因为我的服务和应用程序都不再运行了。

在日志文件中,我注意到这发生在InstallValidate中,并且我收到了正在运行MyApp.exe的此消息b / c。

我认为发生的情况是:卸载程序检查正在运行的应用程序,它注意到MyService.exe和MyApp.exe都在运行,可能会检测到卸载程序本身会按照指示停止MyService.exe,但不会我不知道MyApp.exe,一旦服务停止,它也将被终止,因此它将显示重启消息。

我不能只是从卸载程序中关闭MyApp.exe b / c服务会重新启动它。

如何解决此问题,以便用户在进行卸载/升级之前无需重启或手动停止服务?此外,我无法再更改MyService和MyApp代码,因此我只能从(un)安装程序执行此操作。

TIA, VIV

1 个答案:

答案 0 :(得分:0)

我会在您的服务中公开一种机制,您的安装程序可以在其中指示它停止并终止该应用程序。这样,当Windows Installer成本查找锁定文件时,它找不到任何内容。