如何使用 Wix 和项目参考部署本机映像 (NGen)

Posted

技术标签:

【中文标题】如何使用 Wix 和项目参考部署本机映像 (NGen)【英文标题】:How to deploy native images (NGen) using Wix and project references 【发布时间】:2011-06-08 11:21:27 【问题描述】:

我正在使用 Wix/Votive 为我的 .NET 解决方案构建安装程序。我使用项目引用(内部使用heat.exe 我认为)包含来自其他项目(EXE 和 DLL)的二进制文件。

我现在要做的是,在安装过程中使用ngen.exe 预jit 所有程序集。根据 Wix 帮助,这可以通过 WiX .NET extensions library 完成:

<Component Id="App.exe" Guid="PUT-GUID-HERE">
    <File Id="App.exe" Source="App.exe" KeyPath="yes">
        <netfx:NativeImage Id="ngen_App.exe" Platform="32bit" Priority="0" />
    </File>
</Component>

现在的问题是,&lt;File /&gt; 标签是由heat.exe 创建的,我不知道如何建议heat.exe 在内部生成&lt;NativeImage /&gt; 标签或如何引用生成的@987654329 @标签并在外部附加&lt;NativeImage /&gt;标签。

目前,我看到的唯一方法是不使用项目引用,但显然我想保留它们。

有什么建议吗?谢谢!

【问题讨论】:

【参考方案1】:

Heat 不适合也不支持这个故事。大多数人一次使用 Heat 来完成创建 WXS 的大部分繁重工作,然后从那里将其作为代码进行维护。有些人喜欢将其放入构建过程中以使其变得动态,但我真的反对这样做,原因可以在其他地方找到,如果您感兴趣的话。

因此,要么这样做,要么编写一些自动化程序在热之后运行,使用 LINQ to XML(或您最喜欢的 XML DOM)来查找作为 .NET 程序集的 File 元素,然后用子 NativeImage 元素标记它们。您还必须将命名空间声明放在文档的顶部。

【讨论】:

以上是关于如何使用 Wix 和项目参考部署本机映像 (NGen)的主要内容,如果未能解决你的问题,请参考以下文章

WiX Burn:如何将安装程序可执行文件部署到某个位置?

windows下怎么将我的项目部署上到我的本地电脑服务器上去?

wix的WIX简介

如何部署不同的 App.config 值(使用 WiX)

如何使用 WIX 升级数据库?

关于如何获取项目所部署的本机IP和端口的问题