0

我环顾四周,找不到任何有关更改程序集中托管资源的信息(请注意,我已经熟悉 Win32 资源和更改这些资源的 API)。

我的应用程序具有最终用户需要更新的资源,并且该应用程序将作为单个可执行文件分发(因此我不能只使用附属程序集)。

我看到了一些可能的解决方法,但它们看起来很老套:

第一种是使用 ILMerge:我将在内存中创建一个新的程序集,其中包含新资源,并使用 ILMerge 将其与原始程序集组合以形成新程序。唯一的缺点是无法更新或删除资源。

第二个有点相似:会有一个 .netmodule(从 C# 编译器发出),它使用 /embed 开关针对 al.exe 运行,以添加资源以形成新的程序集。缺点是原始程序集中的任何资源都不存在。

我倾向于 ILMerge 选项,但重新分配的条款是模棱两可的。EULA 没有提及再分配权(所以我认为在这个负面自由社会中是允许的)但微软研究页面说不允许再分配(但它的措辞模棱两可,据我所知,它可能指的是商业再分配,这不适用于我,因为这是一个非盈利的 GPL 项目)。

谢谢

4

1 回答 1

1

恕我直言,我不认为这样做是个好主意。如果这些资源实际上是用户数据,即使有“预装”的一组,它也不属于嵌入式资源。

你的程序集签名了吗?您必须在更改后辞职,您的私钥被公开,每个人都可以签署您的应用程序。因此,不值得签署它,而且无论如何您都有安全风险。

将您的资源移动到外部文件。您仍然可以嵌入“预定义”资源。第一次启动应用程序时,您会创建外部文件并将嵌入的资源复制到外部文件中。如果外部文件存在,您就不再关心嵌入的资源。

于 2009-04-20T06:59:17.587 回答