7.XPE的系统开发时遇到的典型问题
问题:由于实验需要,我做了一个XPE系统,加入了基本的USB,网络和控制面板里的大多数项目,并且为了能正常运行我需要在XPE上用到的软件,我还加上了如下的组件:
Multimedia Application Compatibility
Networking Application Compatibility
Shell Application Compatibility
Windows Management Instrumentation Technologies
Windows Application Compatibility
但是在做好的XPE系统上运行我的测试软件时(是一个处理摄像头图像,计算,并网络传输的软件,软件功能挺多,比较庞大),还是会出现未知错误而导致软件崩溃,并不是一开起来就出错,而是用到其中的某些功能时出错。这种情况在XP里是不会出现的。由于不知道这个软件会用到什么依赖的组件,所以我想现在只能尽可能加入多一些的组件来保证XPE运行这个软件时不再出错。可是我现在该加入些什么组件呢?请大侠们帮我提点建议!
还有一个问题是,这个软件在XPE里运行时界面都乱掉了,界面上的按钮啦,文本框啦,都没有显示在正常的位置。我想这个问题可能是因为我做的XPE系统里字体太少,缺少软件需要的字体。那么,还有其他的可能原因吗?怎么解决呢?
答案:由于XPE是组件化的操作系统,所以我们自己开发的应用程需经常会因为缺少某些系统文件或者动态库而导致运行错误。当然,把所有的组件都添加进去是肯定可以解决这个问题的,向你后来添加的那些组件一样,添加了,就可以征程运行了。但是违背了XPE的设计初衷,就是最小运行镜像和最快启动速度。所以我们不建议这么做。我可以教给你一个很简单的方法,就是在XP Professional上运行你的应用程序,同时打开TaskInfo这个工具,这个工具可以从网上下载到。通过这个工具我们可以看到你的应用程序需要调用那些系统文件支持,我们找到这些文件后,把它添加到XPE对应的目录下并注册就可以了。
这样既简单,又保证了最小限度的增加系统尺寸。至于你的窗体布局混乱的问题,一个原因是因为你的应用程序调用了XPE系统中没有的字体支持,所以就会使用系统默认的字体来替换,从而导致界面混乱。这个问题的解决方案就是在你的应用程序开发阶段尽可能的使用宋体,或者明确都使用了那些字体,然后把这些字体添加到你的应用程序中就可以了。另一个原因,如果你使用的是C#开发的应用程序,那么在你的工程中把窗体的AutoScaleMode改为None就可以了。
8.XPE的镜像复制操作
问题:假设我需要在几台配置完全一样的电脑上安装XPE操作系统,现在已经build好一个XPE的镜像,用其中一台机器做好了FBA,并且也把驱动全部装好了。如果我把这台机器硬盘里的东西全部复制到其他几台机器的硬盘上,那么是不是其他机器就都能正常运行了?我的疑问是:听说配置完全一样的机器也会有一些不同,比如网卡的mac地址什么的。那么照我这种方法复制系统可以使这几台机器都正常运行吗?