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