我正在为专有的Windows CE 4.2设备编写一个C#应用程序(我没有这些规格或其他任何信息。我可以访问文件系统,基本上就是这样。 ) 我也无法得到原始制造商的支持。
现在,我可以很好地安装.NET Compact框架,一切都可以运行一段时间。但每隔一段时间,当设备重置时,删除框架,GAC,以及与之相关的所有内容。
我知道这不仅仅是硬重置跳回工厂默认值,因为:
我知道没有太多可继续下去,但也许一些Windows CE专家能够告诉我为什么会发生这种情况,并且如果有一些理智的方法可以避免它。我对Windows CE知之甚少,所以据我所知,它可能是完全标准的行为。
就此而言,有关如何进一步解决这个问题的建议吗?目前,我能看到的最佳解决方案是在每次启动时重新安装所有内容,但这看起来有点笨拙。
修改 重置后,在文件系统的根目录中找到的GACLOG.TXT包含
CGACUTIL:初始化2008年8月12日
20:43:57.000 CGACUTIL:已初始化
12/08/2008 20:43:57.000 CGACUTIL:
删除Microsoft .NET CF 3.5.GAC
12/08/2008 20:43:57.000 CGACUTIL:完成
12/08/2008 20:43:57.000 CGACUTIL:
退出2008年8月12日20:43:57.000
所以是的,它肯定会删除GAC。为什么,以及如何阻止它?
答案 0 :(得分:12)
您在这里看到的一些Windows CE和CF行为会给您这种行为。不幸的是,没有真正好的解决方案,但我至少可以给你一些指导。
这意味着如果您将CF安装到存储卡并运行您的应用程序,则会发生这种情况:
现在,如果在加载CF组件时重置设备 - 噗!不再是CF.您的应用程序位于存储卡上,但不在GAC中,因此它可以存活但无法再运行。
黑客解决方案:使用本机应用程序“bootstrap”启动您的应用。让它在\ Windows运行中检查CF文件,如果它们不存在,则从持久存储中的位置安装CF CAB(将其标记为只读,因此wceload不会删除它)。
另一种选择是将CF程序集与您的应用程序一起分发,而不是GAC。
答案 1 :(得分:1)
我知道这是一个非常古老的问题,但由于我遇到了与问题中提到的相同的问题,因此我进行了大量的研究以使其发挥作用。我设法在不使用本机引导程序的情况下完成了这项工作。
1)我使用MSCEInf预先提取CF驾驶室。我将提取的数据(包含\ Windows文件夹)和SD卡上的原始驾驶室复制,如果已完全启动,则将其插入我的设备。
2)现在,首先安装cab,在同一张SD卡或其他一些NAND存储器上选择一个空文件夹(如果必须,请创建一个)。
3)将之前从CF cab中提取的\ Windows文件夹的内容复制到安装CF的同一文件夹中。如果它提示要求覆盖任何文件,请始终选择“否”。
4)确保使用/需要CF的任何应用程序都位于同一文件夹中。您可以将属于该应用程序的任何子文件夹放置在那里。
无论如何,这对我有用。应用程序继续工作,也在重新启动后。
希望这有帮助!
答案 2 :(得分:0)
我认为您需要运行RegSave以在安装后保存注册表设置。我不得不在Windows CE的旧版本(pre .Net)中执行此操作。
答案 3 :(得分:0)
在我的DataLogic Memor CE上,我现在可以通过手动保存“会话”(无论这意味着什么),使新的.Net安装在冷启动后继续存在。它位于这里:
Start | Settings | Control Panel | Files Admin | Save session
(按“保存会话”按钮后对话框仍然打开,但您可以关闭该对话框。)
这(显然)仍然需要手动操作,所以这只是另一种解决方法 申请一些设备(在开发/试用期间)的速度更快,但额外的安装文件或'ctacke'的黑客代码对于更大的卷可能更好。
这也意味着有一种方法可以通过软件使新的.Net安装持久化。那么也许有人可能会被触发去弄清楚如何做到这一点,并与世界分享?
PS:我不知道这种手动保存是如何通用的(如果它适用于其他设备或其他品牌或其他CE版本)。我也不知道它是否 clean 启动持久性。
答案 4 :(得分:0)
我已经集思广益了几个小时,最后开始编写基于WinCE 7的硬件设备配置和项目构建的用户指南。即将推出。非常感谢您成为我研究的一部分