【发布时间】:2017-11-01 11:46:03
【问题描述】:
我正在使用 installshield 2016 开发 MSI 安装程序。我正在尝试向卸载添加自定义操作,该操作在卸载软件之前运行工具。该工具与软件一起安装,需要以管理员模式运行。该工具旨在在卸载开始之前运行一些手动清理操作。
我使用“新建 EXE > 引用目录的路径”的自定义操作向导添加了一个自定义操作。 INSTALLDIR 在目录表中定义,包含用户定义的安装路径。 .exe 的名称和参数是替代品。
工作目录:INSTALLDIR
文件名和命令行:tool.exe /action parameter1 parameter2 parameter3
退货处理:同步
脚本内执行:系统上下文中的延迟执行
执行计划:始终执行
MSI 型号:3170
在补丁卸载期间运行:否
安装执行序列:在 AnotherCustomAction 之后
安装执行条件:
注意:AnotherCustomAction 设置为在 InstallInitialize 之后执行。它与此非常相似,但执行正确。
(我知道安装执行条件最终应该是 REMOVE="ALL",但我在某些时候删除了它以确保不会导致问题)
INSTALLDIR 属性在安装期间写入注册表;我添加了 AppSearch 和 RegLocator 条目以确保它被回读。
我已在启用日志记录的情况下运行安装程序,并看到以下内容:
MSI (s) (30:14) [13:57:19:162]:执行操作:ActionStart(Name=RunTool,,)
MSI (s) (30:14) [13:57:19:162]:执行操作:CustomActionSchedule(Action=RunTool,ActionType=3170,Source=C:\Installation Test\,Target=tool.exe /action parameter1 parameter2参数3,)
MSI (s) (30:14) [13:57:19:162]:注意:1:1721 2:RunTool 3:C:\Installation Test\ 4:tool.exe /action parameter1 parameter2 parameter3
信息 1721。此 Windows 安装程序包存在问题。无法运行完成此安装所需的程序。请联系您的支持人员或软件包供应商。动作:RunTool,位置:C:\Installation Test\,命令:tool.exe /action parameter1 parameter2 parameter3
如果我进入文件夹 C:\Installation Test\ 并手动运行 tool.exe /action parameter1 parameter2 parameter3,一切正常。有的时候有人提出,可能问题是安装路径有空格,但是新尝试不带空格的路径没有解决。
知道这里出了什么问题吗?这是正确的方法吗?
我无法提供项目本身(公司政策),但我会尽力回答您可能遇到的任何其他问题。
【问题讨论】:
-
AnotherCustomAction 安排在哪里?此 CA 是否安排在 InstallInitialize 和 InstallFinalize 之间?
标签: windows-installer installshield uninstallation custom-action