【问题标题】:InstallShield running Setup.rul actions outside IS installation?在 IS 安装之外运行 Setup.rul 操作的 InstallShield?
【发布时间】:2018-03-22 11:10:42
【问题描述】:

据我了解,所有Setup.rul 和包含脚本文件操作都被标记为 f1、f2 - f99 .... 引用,并使用issetup.dll 调用(我假设它们存储在里面) .问题是:如何在安装程序项目安装之外使用issetup.dll(和rundll32?)正确运行这些功能?如果有可能的话。

【问题讨论】:

  • 您可能必须联系 Installshield 技术支持以获得这种级别的“内部知识”,但我真的认为他们不会让您知道(只要 Installscript 是专有的)。我们能问一下对此的要求是什么以及为什么有必要吗?我将提供 installsite.org 论坛的链接:forum.installsite.netInstallshield's own forum
  • 我们将 InstallShield 用于 Windows 安装程序,将 IS Universal(非常古老)用于 *nix 平台。现在,我们正在研究转向基于 shell 的部署的可能性,以便与 Docker 兼容并能够支持各种平台并将其拆分为更小的部分。重复使用的可能性可能会使其更容易并在迁移时保持两个安装程序(旧的和基于 shell 的)一致

标签: deployment installshield


【解决方案1】:

当使用 InstallShield 12 或更高版本构建时,ISSetup.dll 的代码和支持位是独立的。但是,f## 入口点遵循所有 Windows Installer type 1 custom actions 的格式,并且需要将实际的 MSIHANDLE hInstaller 传递给它们。即使您没有在代码中使用Windows Installer API,在调用f## 函数和调用您的InstallScript 函数之间发生的初始化也会访问句柄,并且如果使用无效的句柄值调用可能会发生故障。随意尝试,如果它有效并且您不必从外部支持它,它甚至可能“足够安全”。

如果您尝试将 InstallScript 脚本语言用于安装以外的目的,虽然它不完全受支持,但可以创建一个 InstallScript 项目,并用 program ... endprogram 块替换正常的事件驱动代码。这将创建一个程序脚本,除非您包含它,否则将避免大多数特定于安装的逻辑。所以这可能会给你你正在寻找的行为,但从外面看它仍然像一个安装程序。 (虽然 InstallScript 在理论上是通用的,但唯一的实际实现与安装密切相关。)请注意,如果您走这条路,您将很难从供应商或大多数其他程序员那里获得支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多