3

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

我不知道如何让 WiX 做到这一点。我考虑过创建一个二进制自定义操作,但我找不到将参数(包含 ProgID 的字符串)传递到该自定义操作的方法。我不想硬编码它,因为我需要它是可重用的代码。我看不到以声明方式执行此操作的方法,因为 Register() 函数是一个“黑匣子”。

伙计,这是一个陡峭的学习曲线。我在这里最好的方法是什么?

4

2 回答 2

2

查看 WIX 的部署工具基金会 (DTF)。WIX 安装中有一个包含大量信息的 DTF.chm 文件。

假设您的安装过程类似于

  1. 设置安装,输入参数/ProgID,做验证等。
  2. 开始实际安装文件
  3. 来电登记方法

您需要两个自定义操作(忽略回滚和卸载)

  • 设置注册
  • 注册

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

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

于 2011-05-05T22:21:42.293 回答
-1

我正在使用您所描述的一种。

我会在需要时调用 CustomAction(events)。就像单击按钮一样,您可以调用一个对您有用的方法。

调用自定义操作,例如:

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

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

<CustomAction Id="TestConnection" BinaryKey="SetupCustomActions" DllEntry="TestConnection" Execute="immediate" Return="check" />
于 2010-10-23T15:20:53.737 回答