【问题标题】:WiX dll embeddingWiX dll嵌入
【发布时间】:2013-03-14 14:54:14
【问题描述】:

我正在尝试将 .dll 嵌入到 wix 安装程序中,该安装程序在安装期间由其他 dll 使用,但不会安装到客户的系统上。

我现在有

<Binary Id="AutomationUtils" SourceFile="AutomationUtils\bin\Release\AutomationUtils.dll" />
...
<CustomAction Id="Install" BinaryKey="InstallUILib" DllEntry="AutomationUtils;RunInstallerDLL" Return="check" Execute="deferred" />

但即使我取出另一个 .dll - WiX 拒绝承认 AutomationUtils 的存在 .. 即使它构建良好(但当您尝试运行它时会摔倒)。

【问题讨论】:

    标签: c# wix .net-2.0 wix2


    【解决方案1】:

    BinaryKey='InstallUILib' 将引用带有Id='InstallUILib'Binary 元素。 CustomAction/@DllEntry 属性是Binary 元素中自定义操作.dll 的函数入口点的名称。该名称需要::GetProcAddress() 可以访问。我很确定名为 AutomationUtils;RunInstallerDLL 的函数无效。

    如果您希望执行托管代码自定义操作(您可能需要多个 .dll),则此 article 可以。否则,如果您要创建本机自定义操作,我建议您创建一个 .dll。

    【讨论】:

    • InstallUILib 和 RunInstallerDLL 听起来确实很像 InstallUtilLib 和 RunInstaller。嗯……
    • @Chris 我这种肮脏的黑客尝试只能表明我正在做一些我以前从未见过的事情:) Rob,这个限制是一个很大的障碍,我认真考虑复制/粘贴(尽管如此可怕)。我想我真正需要的是将 dll 嵌入另一个 dll 的 .net2 兼容方法,该方法可以很容易地以编程方式自动化(并且不会添加到构建要求中)——但这是一个不同的问题。或者这个:windows-installer-xml-wix-toolset.687559.n2.nabble.com/…
    • @Izzy,因为你把它标记为 wix2 我猜你没有使用 DTF。正确的? DTF 是创作托管自定义操作的黄金标准,它已经具有用于打包依赖项和引用并使它们在运行时可用的内置机制。
    • @Izzy 就像 Christopher 指出的那样,使用我指出的那篇文章的 DTF。它将正确解决所有问题。
    • 是的,我想我第一次看那篇文章时有点密集。
    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 2013-02-03
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多