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

带源代码的命令行工具,用于向任何可执行文件添加本地资源

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (9投票s)

2007 年 9 月 27 日

CPOL

3分钟阅读

viewsIcon

57859

downloadIcon

757

一个命令行工具,带有源代码,可以将任何本地 Win32 资源(HTML、图标、BMP 等)添加到可执行文件。

引言

此命令行工具将任何文件作为资源添加到您指定的另一个可执行文件中。 该工具接受诸如文件或目录之类的参数,其中包含要添加为资源的资源,以及每个资源的类型和名称。 提供完整的源代码。

背景

对于使用 .NET 等托管技术生成的可执行文件,此工具可能很有用,因为资源文件并非以本机方式嵌入。 在某些情况下,您确实希望托管应用程序具有本机资源。

例如,如果您希望使用 res:// 协议从托管可执行文件(程序集)加载 HTML 文件。您可以创建一个后期构建步骤,并运行此工具将本机资源添加到托管应用程序。

使用该工具

命令行语法

AddResource.exe ExePath ResFile [ResName] [ResType]

参数描述

  • ExePath - 要添加资源的可执行文件的路径。
  • ResFile - 要添加为资源的文件的路径或文件目录。
  • ResName -(可选)资源的名称;如果省略,应用程序将使用文件名作为资源名称。 如果 ResFile 表示一个目录,则忽略 ResName
  • ResType -(可选)资源的类型;如果省略,应用程序将尝试使用基于 ResFile 文件扩展名的默认资源类型之一。 例如,一个 'index.html' 文件将使用 RT_HTML 资源类型。

请注意,如果 ResNameResType 引用 *资源 ID*(满足 IS_INTRESOURCE(x) 宏),它将像一个 *资源 ID* 而不是一个 *资源字符串* 使用。 例如,如果(出于奇怪的原因)您想将资源类型 23 作为 *字符串*,您将无法做到。 如果您不明白此说明关于资源名称作为字符串和资源名称作为整数之间的区别,请忽略它,因为 99.99% 的情况下您不需要它。

示例

AddResource.exe myManagedApp.exe Help.htm help.htm 23

它等效于省略资源类型

AddResource.exe myManagedApp.exe Help.htm help.htm

因为 RT_HTML 的值为 *23.*

如果您有一个包含要添加为资源的文件目录,则传递目录路径。

AddResource.exe myManagedApp.exe U:\Projects\myManagedApp/Resources

目录中的每个文件都将使用资源名称(文件名)添加为资源,资源类型将根据文件类型确定。

应用程序会自动将 HTML 文件映射到 RT_HTML,将 BMP 文件映射到 RT_BITMAP,并将 ICO 文件映射到 RT_ICON。 文件类型由其扩展名确定。 任何其他类型的文件都会自动添加到 RT_HTML 类型。

例如

假设您在一个目录中包含以下文件:Index.htmImage1.jpgImage2.bmpIndex.htm 映射到 RT_HTMImage1.jpg 映射到 RT_HTMLImage2.bmp 映射到 RT_BITMAP

关注点

AddResource 工具使用 Win32 文件映射 API 在其地址空间中映射源资源文件,并调用 Win32 API 资源函数来更新目标可执行文件。 它使用互斥锁来同步对同一可执行文件的更新。 查看源代码以了解更多信息。

请随时添加任何评论/建议,我很乐意提供帮助。

© . All rights reserved.