当我们辛辛苦苦安装完XPE或WES开发工具后,试图生成镜像文件的时候,遇到以下错误:An internal error occurred while building the run-time image.是不是很让人郁闷?
为什么会出现这样的问题呢,我通过我遇到这个问题的实际经历来给大家分享一下经验。
在Windows 7或者Vista上出现这样的问题:
这样的问题通常让我们摸不着头脑。我在Win7上安装XPE开发工具就遇到了这样的问题。因为我的安装是在一台干净的开发机上进行的,没有安装或卸载任何其他的软件,安装过程也很顺利,数据库联接正确,组件库共享访问也没有问题。最夸张的是建立工程和整个关联检查的过程也没有任何错误,可是到了编译镜像的最后一关却出现了以上的问题。
我仔细检查了一下系统日志,发现XPE在最终生成镜像的时候,试图从组件库中(..\Windows Embedded Data\Repositories)拷贝文件到最终的镜像的时候出现了问题,系统会阻止XPE拷贝这些貌似系统文件的动态库或者.inf文件。而我使用Administrator的权限进行手动拷贝的时候,就不会出现问题。那么最终解决问题的办法就是:在..\Windows Embedded\bin文件夹下的TDesign.exe上,点击鼠标右键,选择Run as Administrator来执行目标设计器,再进行编译操作,一切OK。当然,这个问题仅限于在Vista和Windows 7上才会出现(这"多亏"了Vista和Windows 7增强的系统安全机制)。那么,如果在其他操作系统上也出现了类似的问题呢:
在Windows XP或者Windows 2000上出现这样的问题:
如果在别的操作系统上出现这样的问题,那就不能怪系统权限的问题了。导致该错误的主要原因可能是因为XPE数据库中的组件索引和组件库(Repositories)中的组件索引无法对应,从而导致在编译的过程中无法找到应该编译到XPE镜像文件中的组件文件。我们需要从以下方面来检查我们的XPE开发工具:
1. 重新安装XPE前没有正确的卸载其他版本的XPE,因此使原有的XPE数据库和新安装的数据库或者组件库无法正常对应;
2. 新安装的XPE开发工具版本和原有工程的版本不一致,从而导致编译错误;
3. 组件库或者数据库被手动修改过,例如从Repositories目录中手动拷贝或者删除过文件,手动添加或者删除过数据库中的组件记录等等;
4. 错误的安装了升级包或者错误的导入了自定义组件;
5. 安装了类似于卡巴斯基之类的杀毒软件,从而阻止了这些类似于系统文件的拷贝;
原来在论坛上遇到一个网友就曾经遇到过这样的问题,原因是因为他将boot.ini放在了一个自定义组件中,产生了冲突导致的。他本想是想用他自己的boot.ini代替原来的boot.ini,没想到出现了问题。所以对于这样的问题,如果我们实在找不到原因,就找一台干净的开发机,重新安装一遍XPE开发工具,就应该没问题了。