如何将资源注入已构建的可执行文件中

时间:2010-10-18 19:09:09

标签: c# wpf windows winforms

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

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

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

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

4 个答案:

答案 0 :(得分:4)

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

WPF将使您的应用更容易上皮。可以通过几种不同的方式来实现您的目标。

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

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

文字会有所不同,但就文字而言,我不确定你需要什么。您是说您需要本地化字符串,还是只需要为不同的客户端显示不同的文本(所有相同的区域设置)?

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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