我正在迁移一些现有产品以使用WiX 3.5(我正在使用Votive VS集成)。我正在安装的一些项目需要在第三方框架中注册。要求是我必须在第三方.NET程序集中调用Register()方法,以通知它我正在安装的项目的存在。它需要一个COM ProgID。
我无法弄清楚如何让WiX这样做。我考虑过创建二进制自定义操作,但我找不到将参数(包含ProgID的字符串)传递到该自定义操作的方法。我不想硬编码,因为我需要这个是可重复使用的代码。我无法通过声明方式看到这样做的方法,因为Register()函数是一个“黑盒子”。
男人这是一个陡峭的学习曲线。我最好的方法是什么?
答案 0 :(得分:2)
查看WIX的部署工具基础(DTF)。有一个带有大量信息的WIX安装的DTF.chm文件。
假设您的安装过程类似于
您需要两个自定义操作(忽略回滚和卸载)
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" />