有没有人知道一种包含DLL的方法,以便我的自定义动作dll可以使用它,因为它依赖于它。我只需要一种方法将DLL捆绑到MSI中,并将其与自定义操作DLL一起解压缩到临时安装文件夹中。如果它在那里,那么自定义动作DLL将能够找到它,从而能够运行。
我已经在线阅读将其添加为参考并将copy local属性设置为top,但似乎不可能,如果有其他方式我会很感激。
答案 0 :(得分:0)
WIX工具集允许您使用其部署工具基础(DTF)功能创建托管(.net)自定义操作。整个visual studio解决方案可以输出到单个dll,准备嵌入MSI的二进制表中。在运行时,所有内容都会被解压缩并自动执行。这对我来说是一个救命,因为它可以让你非常轻松地创建非常强大的自定义操作(关于不在自定义操作中执行愚蠢的事情的标准警告适用于此处)。 DTF方法非常优雅,易于使用,并且可靠地工作。
既然你可能已经有了一个有效的自定义动作dll,也许你可以创建一个小的DTF自定义动作来调用现有dll中的方法?如果你的dll可以被.net程序集引用,那么这应该是可能的。在visual studio中构建自定义操作项目时,它应该吸收所有引用并将它们打包到输出dll中。
答案 1 :(得分:-1)
请查看https://github.com/oleg-shilo/wixsharp/wiki/Deployment-scenarios
提取:
任何C#例程ManagedAction都可能依赖于某些外部程序集。因此,为了使ManagedAction在目标系统上正确运行,需要将依赖性程序集打包到MSI设置中。
new ManagedAction("CustomAction")
{
RefAssemblies = new []{"DispalyMessage.dll"}
}