我使用 Visual Studio 2008 开发了一个 Windows 服务和一个安装项目。当我进行升级安装时,我收到以下警告:
以下应用程序正在使用安装程序必须更新的文件。您可以关闭应用程序并单击“再试一次”,或单击“继续”以便安装程序继续安装,并在系统重新启动时替换这些文件。
我想在升级安装期间停止 Windows 服务。我已经尝试创建一个自定义操作并覆盖 OnBeforeInstall 方法,但是在警告弹出消息已经出现之后调用它为时已晚。
作为 msi 安装程序的一部分,有什么方法可以完成此操作。我宁愿不必在执行 msi 安装程序之前将此作为单独的任务执行。
更新:
基于进一步的研究,我发现 MSI 数据库确实支持这一点,但是内置的 Visual Studio 安装程序(设置)项目不提供执行此操作的方法。必须调整 MSI 数据库,或者使用 WiX 或商业安装程序。
最佳答案
如果您想继续编辑 MSI ServiceControl 表,下面的 VBS 脚本对我有用:
Dim installer, database, view, result
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("Installer.msi", 1)
Set view = database.OpenView("INSERT INTO ServiceControl (ServiceControl,Name,Event,Arguments,Wait,Component_) VALUES ('ServiceName','ServiceName',170,null,null,'C__751A71A3822A287367770DB29839A759')")
view.Execute
database.Commit
Set database = nothing
关于c# - 如何停止 Windows 服务以进行升级安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485243/