65.9K
CodeProject 正在变化。 阅读更多。
Home

NAR 加载器 - 单文件 .NET 部署

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.51/5 (22投票s)

2006 年 8 月 3 日

GPL3

4分钟阅读

viewsIcon

107749

downloadIcon

471

.NET 的 JAR 存档 = NAR 存档。

Sample application inside NAR archive

引言

也许,你们中的一些人知道 Java 的 JAR 存档概念。Java 的许多东西已经进入了 .NET 世界。拥有 .NET 的相同功能将是一个很好的特性。自 .NET 2 以来,Microsoft 在 CLR 和框架中包含了一些非常有趣的功能。这些功能使得创建处理 .NET 存档(称为 NAR 存档)所需的功能成为可能。NAR 存档是普通的 ZIP 文件,其中包含一个(可选的)XML 清单文件 - 该文件会告知加载器要加载什么,以及所有应用程序内容,如 app.config 文件和程序集。这些存档的加载器仅适用于 .NET 2.x。不支持 .NET 1.x。

因此,今天我们有 .NET 应用程序的 XCOPY 部署,但明天,我们可能拥有 .NET 应用程序的单文件复制部署。

背景

.NET 的核心 CLR 是一个标准的 Windows 组件,因此,其他(非托管)Windows 应用程序可以使用它来扩展 .NET 功能。这对于 .NET 1.x 也是适用的。但自 .NET 2.0 以来,在使用 CLR 时,您可以自定义更多内容。从告诉 CLR 从何处加载程序集(这是 NAR 加载器使用的一个功能),到 GC 的行为方式,或对策略的处理。通过托管 CLR 在应用程序中,您可以扩展它,但不幸的是,实现这一目标的方式并不总是像它本应有的那样直接。特别是,安全性可能很棘手。加载器在安装时会创建自己的 CAS 组。您可以使用 Microsoft .NET Framework 2.0 Configuration 控制面板小程序(控制面板/管理工具/Microsoft .NET Framework 2.0 Configuration)检查此组。

使用代码

NAR 加载器包含三个部分

  1. CLR 的非托管 VC++ 主机。

    主机负责为以下托管部分准备正确条件。它确保安全到位,配置 CLR,将 NAR 存档的程序集提供给 CLR,并在 NAR 存档内的应用程序终止后,清理所有内容。此部分还将文件扩展名 .nar 注册到 NAR 加载器,这样双击就足以启动 NAR 存档中的应用程序。

  2. 托管 C# 域管理器。

    托管域管理器的程序集作为资源包含在加载器的非托管主机部分中。在非托管部分完成初始化和设置后,程序集会从资源中提取并加载到 CLR 中。这都是在内存中完成的,而无需先将其提取到磁盘!

  3. 一个示例 NAR 存档,其中包含一个测试应用程序,该应用程序测试 .NET 应用程序的大多数方面,如辅助程序集、私有搜索路径、多模块程序集等。

    您会在 bin 目录中找到 Debug 和 Release 版本压缩包。从源代码构建加载器会构建所有三个部分。构建通常应该没有问题,但如果失败,很可能是其中一个自定义构建步骤需要定制(项目:NARTestModule、NARTest、NARLoaderManager、NARLoaderMain,以及 NARLoaderMain 中的文件 NARLoader.h)。

新功能

此版本的加载器现在能够创建可独立运行的存档,包括使用自定义图标创建 .exe 文件的可能性。现在,您可以将应用程序的程序集打包成一个 .exe 文件并进行部署。现在也可以使用密码保护的强 AES 加密存档。使用此功能可以混淆您的应用程序程序集和/或控制应用程序使用。

如果您的存档包含 ZIP 注释,可以在应用程序启动时显示。可用于显示许可协议或其他信息。

关注点

托管 CLR 是扩展非托管应用程序的绝佳方式,同时也是扩展 .NET 环境本身的机遇。使用 CLR 托管接口(大多数情况下)都很直接,但有时 MSDN 上的可用文档缺乏一些澄清性的提示。在开发过程中,fuslogvw.exe 是一个有价值的调试工具。通过使用 NAR 存档,可以简化应用程序的部署。

完整的操作手册和关于 NAR 加载器的更多信息可在 NAR 加载器项目网站找到。

历史

截至 2006 年 10 月 26 日,最新稳定版本是 1.2。

当前版本

1.2 2006.10.26 添加了对强 AES 加密、密码保护的存档和存档注释的支持

旧版本

1.1 2006.08.17 添加了对可独立运行的存档(包括自定义图标)的支持
1.0a 2006.08.03 允许安装和卸载加载器 CAS 代码组,以及 .nar 文件扩展名处理。
1.0 2005.03.03 首次公开发布 - 已不再提供
© . All rights reserved.