如何停止升级安装的Windows服务?我使用VisualStudio2008开发了一个Windows服务和一个安装项目。当我进行升级安装时,我收到以下警告:以下应用程序正在使用安装程序必须更新的文件。您可以关闭应用程序并单击“重试”,或单击“继续”让安装程序继续安装并在系统重新启动时替换文件。我想在升级安装期间停止Windows服务。我已经尝试创建一个自定义操作并覆盖OnBeforeInstall方法,但是在警告弹出消息已经出现之后调用它为时已晚。有没有办法在msi安装程序中完成此操作。我宁愿不必在执行msi安装程序之前将其作为单独的任务来执行。更新:在进一步的研究中,我发现MSI数据库支持这一点,但内置的VisualStudio安装程序(Installer)项目没有提供这样做的方法。必须调整MSI数据库,或者使用WiX或商业安装程序。注意:升级Windows服务而不卸载Setdatabase=installer.OpenDatabase("Installer.msi",1)Setview=database.OpenView("INSERTINTOServiceControl(ServiceControl,Name,Event,Arguments,Wait,Component_)VALUES('ServiceName','ServiceName',170,null,null,'C__751A71A3822A287367770DB29839A759')")view.Executedatabase.CommitSetdatabase=nothing它已经内置到MSI/WindowsInstaller中...唯一的问题是.NET安装程序类不使用MSI“服务安装”功能。实际发生的情况是MSI正在尝试使用您刚刚复制的文件来安装文件并运行自定义命令(这是VisualStudio放入MSI的所有内容)。要解决此问题,您可以使用ORCA编辑MSI并将以下行添加到ServiceControl表中:1ServiceName1701C__489628C5CC1144CB47F43E8BE7F3F31D您可以从FILES表中查找的组件ID...我刚刚选择了主要的组件ID执行文件。170是一个位图,告诉WindowsInstaller在安装和卸载时停止和删除服务。这将为.NET安装程序添加服务扫清道路,您可以在通过自定义命令安装服务后使用ServiceController启动服务。在WIX中,我可以在升级和卸载之前关闭服务,方法是添加“ServiceControl”元素以在安装时停止服务。这似乎可以完成工作,但与MSI相关的一切都接近黑魔法,所以我绝对愿意接受任何评论。以下是我的服务组件定义:以上是C#学习教程:升级安装时如何停止Windows服务?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
