我正在迁移一些现有产品以使用WiX 3.5(我正在使用Votive VS集成)。我要安装的某些物品需要在第三方框架中注册。要求是我必须在第三方.NET程序集中调用Register()方法,以将要安装的项目的存在通知给它。它需要一个COM ProgID。
我不知道如何让WiX做到这一点。我曾考虑过创建一个二进制“自定义操作”,但是找不到一种将参数(包含ProgID的字符串)传递给该自定义操作的方法。我不想对其进行硬编码,因为我需要它是可重用的代码。我看不到声明式执行此操作的方法,因为Register()函数是一个“黑匣子”。
男人,这是一条陡峭的学习曲线。我在这里最好的方法是什么?
最佳答案
查看WIX的Deployment Tools Foundation(DTF)。 WIX安装中有一个DTF.chm文件,其中包含很多信息。
假设您的安装过程类似于
设置安装,输入参数/ ProgID,进行验证等。
开始实际安装文件
通话注册方式
您将需要两个“自定义”操作(忽略回滚和卸载)
设置注册
注册
SetupRegistration应该是从UI或在设置阶段后期触发的立即自定义操作。它获取ProgID和所需的任何其他数据,使用CustomActionData对象,并将其分配给名为“ DoRegistration”的属性(重要的是,该属性名称必须与第二个自定义操作相同)
DoRegistration是一个延迟的自定义操作,可能需要在InstallFiles之后在InstallExecuteSequence中进行计划,但这要视情况而定。它提取Session.CustomActionData属性并获取ProgID,然后调用所需的任何注册方法。
关于wix - 在安装过程中,如何让WiX调用.NET程序集中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902677/