我正在使用 NSIS 部署一个 .Net 应用程序。安装/卸载过程运行良好,但我想添加最后一个 ngen 步骤以提高启动性能。
不幸的是,谷歌没有透露任何相关材料。以前不太可能没有人这样做过 - 也许这里有人有一些想法?
在不太可能的情况下,如果没有丑陋的 hack 就无法支持,我愿意使用不同的安装程序技术,只要它可以在我的 Linux 构建服务器上运行。(例如,这排除了 WiX。)
有任何想法吗?
NGen 将位于 .NET 框架目录中,例如:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
选项 1 - GetCORSystemDirectory() 是一个系统 API 调用,可用于获取 .NET Framework 的目录,但这里的问题是,从阅读文档时听起来好像需要从 .NET 应用程序调用它。因此,您可以运行一个小型 .NET 应用程序并将 GetCORSystemDirectory() 的结果写入一个 ini 文件。也许搜索那个功能,看看你是否通过谷歌找到任何有用的东西。
选项 2 - 您可以假设 .NET 框架位于预期路径中,并遍历目录并找到以“v2.0.”开头的目录。
选项 3 - 只需从您的安装程序中提取 ngen 然后运行它。这就是我偶尔对 regasm 所做的事情。我不确定您可能会遇到什么副作用,这是否完全合法,或者它是否依赖于任何其他文件。如果它类似于 regasm.exe,那么只要已经安装了 .NET 框架就可以了。
似乎有一种方法可以通过nsis获取运行时目录:http: //nsis.sourceforge.net/Get_directory_of_installed_.NET_runtime
一旦知道路径,剩下的就是使用正确的参数调用 ngen。伟大的!