2011-06-30 54 views
2

我编写了一个使用Visual Studio 2010安装项目进行安装的应用程序。作为安装的一部分,我的应用程序将安装并启动Windows服务。那里没有问题。安装前停止服务

当我发布新版本的应用程序时,安装程​​序会覆盖应用程序文件夹的内容。不幸的是,它不能覆盖已经运行的服务。

如何在MSI开始复制文件之前停止服务?我正在考虑不安装的自定义引导程序(安装程序先决条件),但会删除该服务。或者我可以在安装之前使用Orca添加一个动作?或者你知道另一种方式?

回答

3

通常这是通过service control operations完成的。基本上,您需要设置“停止”和“删除”标志进行卸载。

另一种方法是在自定义操作中使用ServiceInstaller.Uninstall来停止和删除服务。

如果你想避免在使用对话框中的文件,你可以试试这个方法: Problem stopping Windows Service from Installer Class. Events fire too late

+1

谢谢!服务控制操作看起来像我所追求的。我认为升级到WiX将在未来为我节省很多麻烦。 Visual Studio的安装项目太有限了,尤其是对于确定操作顺序。 –