我想证实这种方法。在InstallShield中创建EXE自定义操作时,可以使用[DIRKey]和使用[#FILEKey]的文件调用项目的目录。现在我正在尝试对VBS自定义操作做同样的事情。我在系统上下文中设置了不同的自定义操作,但遗憾的是这不起作用。我是否知道在VBS自定义操作中是否有办法执行相同的机制?
谢谢!
答案 0 :(得分:0)
VBScript / JScript自定义操作很脆弱。我建议reading up,然后选择InstallScript,C ++或C#/ DTF。
将[dirprop] [#filekey]转换为完整路径需要具有完全访问权限的MSI会话句柄。延期的自定义操作缺乏这一点。要解决此问题,您必须立即执行自定义操作以进行评估,然后将其作为CustomActionData传递给延迟的自定义操作。
EXE自定义操作可以解决这个问题,因为自定义操作会被隐式调用两次。一旦安排操作(立即),在这种情况下,翻译是自动的,然后一次延迟,实际执行。
调用EXE时can go wrong有很多事情。通过“窃取”DLL或将其封装在合并模块项目中并在InstallShield中使用它,可以减轻(即使在InstallShield中)使用WiX QuietExecCA。
意识到自定义操作不应重新发明轮子。我不知道您的EXE是什么,但是如果有任何方法可以将其分解为Windows Installer可以表达的部分,那么您的复杂性和风险将大大降低。
请记住,应该创建更改计算机配置的自定义操作以支持回滚。这意味着更多自定义操作。