【问题标题】:How does one inject resources into an already built executable如何将资源注入已经构建的可执行文件
【发布时间】:2010-10-18 19:09:08
【问题描述】:

我正在开发一个需要品牌化的 Windows 应用程序。客户将把它卖给其他企业,并且每次销售都需要一个定制的徽标和名称。

客户不知道如何使用visual studio!

我想我需要编写一个打包应用程序来将自定义徽标和字符串资源注入可执行文件。我打算使用WPF。但由于这是一项关键要求,如果这更容易,我愿意在 winforms 中完成。

最好的方法是什么?欢迎任何和所有建议。

【问题讨论】:

  • 您不能指定在运行时从外部文件加载图像和名称?

标签: c# wpf windows winforms


【解决方案1】:

听起来您所追求的是应用程序皮肤。这并不意味着您必须解压缩 exe 并注入资源。您只需要从项目开始就考虑换肤并构建应用程序来支持您的换肤需求。

WPF 将使您的应用程序换肤更加容易。将有几种不同的方法来完成您想要的。

最简单的方法是将徽标图像保持松散,并使用需要显示此图像的 XAML 文件的相对路径来引用它。

您应该查看 WPF 中的资源字典,以及它们如何帮助您对资源进行分组并支持换肤。 http://msdn.microsoft.com/en-us/library/ms750613.aspx

文字会有些不同,但我不确定您需要什么文字。你的意思是你需要本地化字符串还是你只是需要不同的文本(所有相同的语言环境)来为不同的客户显示?

【讨论】:

    【解决方案2】:

    一种可能的解决方案(也许不是最简单的解决方案)是使用一个父应用程序来编译源代码以生成子应用程序。您可以使用 CSharpCodeProviderCompilerParameters 类来做到这一点。将图像添加为嵌入式资源并在子应用程序中检索它。 Slide Show Builder 提供了一个带有源代码的工作演示。

    【讨论】:

      【解决方案3】:

      对于您提出的确切问题,我最好的建议(尽管我怀疑还有另一种方法可以重新考虑确切的要求)是编写一个使用 ildasm 拆卸程序集的实用程序,然后使用 ilasm 重新组装它并包含您的新资源文件。

      http://msdn.microsoft.com/en-us/library/496e4ekx%28VS.71%29.aspx

      【讨论】:

        【解决方案4】:

        简单的解决方案是将位图与 EXE 一起作为单独的文件提供。实际上,替换 EXE 中的嵌入资源需要使用ildasm.exe 对其进行反编译,然后将其与ilasm.exe 重新组合在一起。 Ildasm.exe 仅在 Windows SDK 中可用,可单独下载。如果您的客户能够做到这一点,那么容易出错且几率很小,您需要为他们提供一个可以执行此操作的 .bat 文件。

        当然,无论出于何种原因有兴趣替换徽标的人都不会因为使用Ildasm.exe 技巧替换单独的图像文件而减慢速度。因此,让它变得比它需要的更复杂是没有意义的。

        【讨论】:

        • 为什么不写一个调用编译器的小 C# 应用程序,不管 SDK 是什么(运行时附带)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多