2011-02-10 212 views
1

我安装了一些自定义操作&设计者喜欢安装Windows服务。MSI安装程序在卸载时失败时,serivce已被删除

有时候,当我在自定义操作中(或在MSI配置中)出错时,升级过程可能会失败。解决方案是卸载应用程序并重新安装。

但是有时候我会在这种情况下结束,在这种情况下,我无法卸载应用程序,因为服务的“自定义操作”声称该服务未在系统中注册。好的,也许没问题。我正在卸载该应用程序。问题:我的应用程序不能卸载。它仍然存在。我必须再次手动将该服务添加到注册表并重新启动卸载过程。

问题:我有什么配置/开发/编程/等。告诉服务(un)安装程序在卸载时不会在服务已被删除时失败。

顺便说一句:我的自定义操作在卸载过程中做没有任何。只有在安装/升级过程中,我要求用户进行一些配置并执行一些自定义配置 - 仅与我的应用有关。与服务无关。

编辑:忘了提:VS 2008,默认的安装项目,没有花哨的东西,目标机器的Windows XP

回答

2

啊,这的很多原因,我说不要使用VDPROJ和InstallUtil自定义操作之一。您需要在卸载自定义操作中放置try catch块并处理该场景。

希望你正在测试一个虚拟机,可以恢复,但万一这是你的开发盒使用Windows SC命令重新创建服务,所以你可以得到卸载现在工作。

如果你真的想这样做的权利,你想要做这样的事情:

Augmenting InstallShield using Windows Installer XML - Windows Services

同样的概念也适用于你只可以添加WiX的合并模块到您VDPROJ安装程序。

+0

是的 - 我愿意切换到另一个安装程序,但*插入所有已知的请求在这里*。我的问题是,我没有看到我可以试试看的地方。我使用this.Installers.AddRange(...)添加安装程序组件。这段代码是由设计/安装程序项目的花哨设计者创建的。服务由注册表脚本重新创建:-) – Arthur 2011-02-10 20:27:47

相关问题