我正在迁移一些现有的产品以使用WiX 3.5 (我正在使用Votive集成)。我正在安装的一些项目需要向第三方框架注册。要求是我必须调用第三方.NET程序集中的Register()方法来通知它我正在安装的项目的存在。它需要一个COM ProgID。
我想不出怎么让WiX这么做。我考虑过创建一个二进制自定义操作,但我找不到一种方法来将参数(包含ProgID的字符串)传递到该自定义操作中。我不想硬编码它,因为我需要它成为可重用的代码。我看不到声明式的方法,因为Register()函数是一个“黑盒”。
伙计,这是一条陡峭的学习曲线。我最好的方法是什么?
发布于 2011-05-06 06:21:42
看看WIX的部署工具基础(DTF)。WIX安装包中有一个包含大量信息的DTF.chm文件。
假设您的安装过程类似于
您将需要两个自定义操作(忽略回滚和卸载)
SetupRegistration应该是从UI或在设置阶段后期触发的即时自定义操作。它获取ProgID和所需的任何其他数据,使用CustomActionData对象并将其分配给名为"DoRegistration“的属性(重要的是,属性名称必须与第二个自定义操作相同)
DoRegistration是一个延迟的自定义操作,需要在InstallExecuteSequence中安排在InstallFiles之后,但这要视情况而定。它提取Session.CustomActionData属性并获取ProgID,然后调用您需要的任何注册方法。
发布于 2010-10-23 23:20:54
我使用了你所描述的一种方式。
我习惯于在需要的时候调用CustomAction(事件)。就像点击按钮一样,你可以调用一个为你工作的方法。
调用自定义操作,如:
<Custom Action="ActionName" After="InstallFinalize">CONDITION = "1"</Custom>
或者根据特定的按钮点击调用自定义操作:
<CustomAction Id="TestConnection" BinaryKey="SetupCustomActions" DllEntry="TestConnection" Execute="immediate" Return="check" />https://stackoverflow.com/questions/3902677
复制相似问题