作为安装过程的一部分,如何让WiX在.NET程序集中调用方法?

时间:2010-10-10 23:39:18

标签: wix installer wix3.5 votive

我正在迁移一些现有产品以使用WiX 3.5(我正在使用Votive VS集成)。我正在安装的一些项目需要在第三方框架中注册。要求是我必须在第三方.NET程序集中调用Register()方法,以通知它我正在安装的项目的存在。它需要一个COM ProgID。

我无法弄清楚如何让WiX这样做。我考虑过创建二进制自定义操作,但我找不到将参数(包含ProgID的字符串)传递到该自定义操作的方法。我不想硬编码,因为我需要这个是可重复使用的代码。我无法通过声明方式看到这样做的方法,因为Register()函数是一个“黑盒子”。

男人这是一个陡峭的学习曲线。我最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

查看WIX的部署工具基础(DTF)。有一个带有大量信息的WIX安装的DTF.chm文件。

假设您的安装过程类似于

  1. 安装程序安装,输入参数/ ProgID,执行验证等
  2. 开始实际安装文件
  3. 致电注册方法
  4. 您需要两个自定义操作(忽略回滚和卸载)

    • SetupRegistration
    • DoRegistration

    SetupRegistration应该是从UI或设置阶段后期触发的立即自定义操作。它抓取ProgID和所需的任何其他数据,使用CustomActionData对象并将其分配给名为“DoRegistration”的属性(重要,属性名称必须与第二个自定义操作相同

    DoRegistration是一个延迟的自定义操作,需要在安装文件之后安装在InstallExecuteSequence中,但这取决于。它拉出Session.CustomActionData属性并获取ProgID,然后调用您需要的任何注册方法。

答案 1 :(得分:-1)

使用你所描述的那种。

我用来在需要时调用CustomAction(事件)。就像点击按钮一样,你可以调用一个适合你的方法。

调用自定义操作,如:

<Custom Action="ActionName" After="InstallFinalize">CONDITION = "1"</Custom>

或根据特定按钮点击调用自定义操作:

<CustomAction Id="TestConnection" BinaryKey="SetupCustomActions" DllEntry="TestConnection" Execute="immediate" Return="check" />