2009-09-13 105 views
0

我遇到了一个让我疯狂的问题,希望有人能够阐明一些问题。作为我的构建过程的一部分,我有一个单独的.exe来更新该文件的VersionInfo。我在20多个程序中直接使用了这个功能,但由于某种原因,其中一个程序会从exe中删除所有现有的资源信息。其实我修剪下来,我可以只调用得到确切的行为:发布修改现有.exe文件上的资源

if ((ResourceHandle = BeginUpdateResource(Target, FALSE)) != NULL) 
{ 
EndUpdateResource(ResourceHandle, FALSE); 
} 

我用的是上面一个简单的例子,但对我来说,我检查了返回代码,一切运行正常。如果我针对其他20个应用运行相同的代码,它们不受其影响 - 但是在其中运行它并删除资源数据。

我查看了.rc文件,删除了它的块,以我想得到的方式重建了它,结果是一样的。我也可以将它加载到DevStudio中,并且它不报告任何东西已损坏等。构建过程在所有应用程序之间完全相同(它们是通过makefiles构建的,因此在那里没有发生任何魔法)。

有没有其他人经历过这种行为?它看起来像其他人已经遇到它here

但到目前为止,我还没有找到一个解决方案...

回答

0

由于我的构建过程的一部分,我编程编辑的版本号的源代码(资源源文件中),而不是编辑* .exe ...所以我不能解决这个问题。

+0

并非所有我正在构建的程序都是GUI,事实上公平的数字是命令行,通常没有与它们相关的RC文件。我想我可以考虑改变我的工作流程,直接对RC文件进行一些操作 - 但理想情况下,我想找出导致问题的原因以及我可以做些什么来避免或识别它。 – Mark 2009-09-13 06:30:44