在Wix中,如何将.net类型的列表传递给托管的自定义操作

本文关键字:列表 操作 自定义 类型 Wix net | 更新日期: 2023-09-27 17:55:37

在我的安装中,我正在安装几个 .net 类库,这些库本质上充当我无法控制的第三方系统的插件。对于每种类型,我都需要在第三方 API 中调用一个 Register() 函数来告诉它我的类型存在。

我已经创作了一个 WiX 托管的自定义操作来执行此操作,但目前我正在对需要在自定义操作中注册的类型进行硬编码。这似乎是一种代码气味。我想使我的自定义操作更具通用性,以便我可以在其他安装程序中重用它,并且不必在每次添加、重命名或删除类型时都更改它。

有没有办法以某种方式将 .net 类型传递到自定义操作中?我收集的自定义操作应该是数据驱动的,这似乎是一个很好的方法,可以实现我想要做的事情 - 但是如何将这些数据放入自定义操作中?

在Wix中,如何将.net类型的列表传递给托管的自定义操作

正确创作的自定义操作应既是数据驱动的(声明性的)又是事务性的,就像所有内置的 Windows 安装程序标准操作和表一样。 这将"做什么"与"如何做"分开,并允许MSI的消费者看到正在做什么,并可能对其进行转换以满足他们的需求。

收款处:

Beam Me Up:使用 JSON 序列化自定义操作数据

您不必使用 JSON。 该部分只是为了展示如何将大量复杂数据传递给延迟的自定义操作。

另请查看:

Windows 安装程序中自定义操作的安装阶段和脚本内执行选项

您可以添加包含 Json、XML、键值对等的配置文件。 如果自定义操作被推迟,则文件将已安装并可读。 您可以反序列化数据并使用反射调用函数。