【发布时间】:2013-08-20 17:59:15
【问题描述】:
我有一个安装程序,它安装了一些组件,包括 Windows 服务,安装后它会启动使用 CustomAction 安装到系统上的服务。
当我卸载应用程序时,安装程序要求在继续之前关闭应用程序。
我创建了一个将停止服务的自定义操作,并使用卸载操作安排了它。
但在手动停止服务后,直到我为错误对话框按 OK 后才会执行。
它在 Win7 上失败了,但我在 WinXP 上测试了相同的 MSI 并且工作正常(在检查文件使用中之前执行的自定义操作)!!!
我正在使用 VS2010 安装项目来创建安装程序,但在构建后修改它(例如使用 Orca)没有问题。
这是 InstallExecuteSequence 表的内容:
我发现检查 In-Use 文件的 InstallValidate 操作,但我无法对停止其之前的服务的自定义操作进行排序,因为它在 InstallInitialize 操作之前需要所有自定义操作都在它之后(ICE77 Evaluator)
如果脚本内自定义操作在之前排序,ICE77 会发布错误 InstallInitialize 操作或 InstallFinalize 操作之后。
我应该怎么做,我应该使用MSIRESTARTMANAGERCONTROL 属性来指定Windows Installer 包是否使用FilesInUse Dialog 功能,但我需要通知用户其他正在使用的文件。
【问题讨论】:
-
我在 VS2015 中使用 Windows 安装程序遇到了同样的问题。你是怎么摆脱这个的?
-
您需要应用下面的答案,但由于您使用的是 VS 安装程序项目,您将无法自动将该行添加到该表中。我建议创建一个构建后操作来执行 - 例如 - 一个手动插入该行的 JScript 文件(检查stackoverflow.com/questions/8318920/…)以进行示例行插入
标签: windows-installer custom-action orca