windows-installer - 在执行卸载之前停止 Windows 服务

标签 windows-installer custom-action orca

我有一个安装程序,它安装了几个组件,包括 Windows 服务,安装后它将启动使用 CustomAction 安装到系统上的服务。

卸载应用程序时出现问题,安装程序要求在继续之前关闭应用程序。

Error Dialog

我创建了一个将停止服务的自定义操作,并使用卸载操作对其进行了安排。

但是直到我在手动停止服务后为错误对话框按 OK 后才执行。

它在 Win7 上失败了,但我在 WinXP 上测试了相同的 MSI 并且工作正常(在检查正在使用的文件之前执行的自定义操作)!!!

我正在使用 VS2010 安装项目来创建安装程序,但在构建后修改它(例如使用 Orca)没有问题。

这是 InstallExecuteSequence 表的内容:

enter image description here

我发现InstallValidate检查正在使用的文件的操作,但我无法对在其之前停止服务的自定义操作进行排序,因为它在 InstallInitialize 之前要求所有自定义操作都在其之后的操作 ( ICE77 Evaluator )

ICE77 posts an error if an in-script custom action is sequenced before the InstallInitialize action or after the InstallFinalize action.



我该怎么办,要不要用MSIRESTARTMANAGERCONTROL属性指定 Windows 安装程序包是否使用 FilesInUse 对话框功能,但我需要通知用户有关其他正在使用的文件。

最佳答案

Windows Installer 中为此提供了内置功能 - 无需自定义操作 .事实上,我强烈建议不要为此使用自定义操作,除非您的服务非常特殊(例如,停止速度很慢,或者需要关闭大量资源并且您需要验证它是否这样做)。大多数正常服务会在半分钟左右停止。我不确定 Windows 安装程序引擎配置为等待服务停止的时间。

ServiceControl table MSI 是为此提供的“幕后”功能。大多数安装工具都提供类似向导或 GUI 元素来以更简单的方式控制它。

这是一个 Installshield 版本中的服务控制 View :

enter image description here

关于windows-installer - 在执行卸载之前停止 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305323/

相关文章:

vbscript - 如何在 InstallShield 的 VBScript 自定义操作中查找安装位置?

python - 阴谋失踪的逆戟鲸

c# - 防止在 Visual Studio 安装程序项目中自动添加依赖项

wix - 如果安装了应用程序则开始卸载的选项

mysql - 如何在 installshield 设置中运行/包含批处理文件

binary - WIX:在安装期间使用临时文件

powershell - 如何使用PowerShell 2.0远程安装(卸载)应用程序?

.net - 如何抑制由我​​的 Bootstrap 引起的强制重启?

visual-studio-2008 - 使用 Orca 从命令行编辑 msi?

visual-studio - 如何作为构建后步骤修改内容/替换 .msi 文件的二进制文件?