【问题标题】:.NET managed dll custom actions in Installshield 2018Installshield 2018 中的 .NET 托管 dll 自定义操作
【发布时间】:2018-09-12 12:52:31
【问题描述】:

我正在使用 Installshield 2018 Express 版本进行设置,并且我想包含一些用 .NET 编码的自定义操作,但我找不到在 .NET 中引用自定义操作的方法。我猜 Installshield 可以选择引用要为自定义操作调用的程序集、类和公共方法,但我找不到任何选项。

¿有什么办法可以做到这一点吗?我更喜欢使用 dll 而不是 exe 并且必须处理命令行参数等。

【问题讨论】:

    标签: .net dll installshield custom-action managed


    【解决方案1】:

    Express Edition:我不确定 Installshield 的 Express 版本是否支持自定义操作或 Installscript(自定义操作脚本语言)? I don't think it does。事实上它看起来肯定没有,但我面前没有产品。

    选项:我猜你要么需要1)升级到更高版本,2) 切换到其他产品或 3) 尝试自己将(托管)自定义操作 DLL “注入”到 Installshield Express 编译的 MSI 中。

    WiX Votive:这将是“最好的猜测”,而无需尝试将其用于生产。如果您使用WiX's Votive feature(WiX 工具集 Visual Studio 扩展)创建托管代码自定义操作项目,则该项目将使用 DTF 将托管代码捆绑在一个看起来像本机 DLL 的 dll 中的方法进行编译。生成的本机 DLL 应该可以滑流或注入​​任何 MSI 包(需要一些管道,很多小摆弄会搞砸,但绝对不是火箭科学——如果你愿意,你会管理的)。

    MakeSfxCA.exe:请注意,有两个从 WiX 托管代码项目创建的 dll。托管代码 DLL,然后是一个附加的 dll,其 CA 附加到其其他相同名称的末尾。后一个 CA 版本是捆绑的本机 DLL - 它是您需要使用的。

    插入 CA DLL:我进行了快速测试,我能够将 WiX/DTF 构建的 DLL 注入到制作的包中由另一个产品。您只需将 DLL 作为常规 DLL 自定义操作插入。这涉及将 DLL 添加到二进制表(有效负载)、自定义操作表(自定义操作的配置)和 InstallExecuteSequence 或 InstallUISequence 表(或两者 - 取决于排序)。后面的这些表定义了自定义操作的顺序(当它运行时)。

    Orca、直接编辑器或 CA 视图:如果 Express 版本允许您定义自定义操作,请使用该方法并以这种方式添加 DLL。如果它支持直接编辑器视图(表格视图),您也许可以从那里完成。如果没有,请带出 Orca 并自己动手。不是火箭科学,而是在你习惯之前有很多小细节要搞砸。如您所知,这里对我来说有很多未知数-只是帮助您真正帮助自己的提示。希望我不会让你误入歧途。虽然有经验可以在几分钟内完成,但如果你必须“碰碰碰碰”的话,很容易浪费一整天的时间。

    托管代码 CA:有 some frightening problems associated with managed code custom actions,尽管我们正处于大多数目标计算机都安装了 .NET 版本的阶段。我会推荐使用本机 C++ DLL - 如果可以的话。托管代码的问题集中在运行时依赖(锁定、丢失、损坏的运行时)、运行时版本干扰(加载哪个 .NET 版本)、GAC 依赖问题(由于混合 Fusion,您不能依赖安装到 GAC 中的程序集/ MSI 提交模型)等...WiX 一直在努力实施最佳实践,所以说实话,我不确定这些问题有多严重。

    【讨论】:

      猜你喜欢
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多