.net 从安装程序类停止Windows服务时出现问题。事情发生得太晚了

.net 从安装程序类停止Windows服务时出现问题。事情发生得太晚了,.net,visual-studio-2010,.net-4.0,windows-services,installation,.net,Visual Studio 2010,.net 4.0,Windows Services,Installation,我将VisualStudio2010与.NET4.0一起使用。 我有一个从VisualStudio安装项目安装的windows服务。在安装项目中,我将RemovePreviousVersion属性设置为True 在包含该服务的项目中,我有一个安装程序类,当从以前的版本升级时,该类将用于停止该服务 因此,在升级软件时,该服务将已经存在并可能正在运行。如果正在运行,则在安装过程中,安装程序会提示该文件已在使用中,并提供重试、继续或退出安装的选项。在此阶段,我可以手动停止服务,然后单击“重试”,这将正

我将VisualStudio2010与.NET4.0一起使用。 我有一个从VisualStudio安装项目安装的windows服务。在安装项目中,我将RemovePreviousVersion属性设置为True

在包含该服务的项目中,我有一个安装程序类,当从以前的版本升级时,该类将用于停止该服务

因此,在升级软件时,该服务将已经存在并可能正在运行。如果正在运行,则在安装过程中,安装程序会提示该文件已在使用中,并提供重试、继续或退出安装的选项。在此阶段,我可以手动停止服务,然后单击“重试”,这将正常工作。但我不希望最终用户必须这样做

我将messagebox放在整个安装程序类中,包括BeforeInstall、BeforeUninstall(安装程序事件)、Install、Uninstall、Commit、Rollback(重写的方法),以便在安装过程中查看何时调用这些方法

运行安装时,在任何安装程序类代码之前显示文件正在使用的提示。一旦我停止服务并单击“重试”,将继续并显示安装类中的messagebox。因此,安装程序类肯定会被调用,但在这个过程中,实际执行任何操作都为时已晚

我不认为这是早期版本的.NET中的行为

有没有人遇到过这个问题或有什么建议


如果需要,我可以尝试Visual Studio 2010附带的InstallShiled LE项目(不确定是否会给出相同的结果),但如果可能的话,我更愿意看看是否有人知道Visual Studio安装项目的解决方案。

重试消息显示在文件使用安装程序对话框中。在InstallValidate操作期间,Windows Installer会自动检测正在使用的文件,并向用户提示这些文件

解决方案是在InstallValidate操作之前停止(不删除)服务。这可以通过自定义操作完成

请注意,在使用Visual Studio安装验证之前,无法设置自定义操作。但是,您可以在生成MSI后使用编辑MSI,并在InstallExecuteSequence表中更改操作顺序

大多数商业设置创作工具和WiX支持自定义操作序列