当前位置:  开发笔记 > 编程语言 > 正文

Windows CE在重置时删除.NET CF.

如何解决《WindowsCE在重置时删除.NETCF.》经验,为你挑选了1个好方法。

我正在为一个专有的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.为什么,以及如何阻止它?



1> ctacke..:

您在这里看到的一些Windows CE和CF行为会给您这种行为.不幸的是,没有真正好的解决方案,但我至少可以给你一些指导.

    Windows CE存储当前对象存储,包括文件系统中的文件,而不是特定于RAM中的持久存储.这包括添加到\ Windows文件夹的任何文件和/或文件夹(这在您的案例中是关键).当设备电源丢失时 - 通常在软复位或硬复位时,此数据会丢失.

    CE注册表可以(并且可能在您的设备上)存储在持久性存储中.这可能在文件系统中(作为配置单元)或在某些不可见的位置(OEM可以存储两种不同的方式).这是输于复位.只有保存但未刷新的项目才会丢失.

    作为#2的附录 - 在调用RegFlushKey API时刷新注册表更改.安装CAB会自动调用它(所以安装CF会这样做).一些OEM也选择在定期计时器上冲洗它.

    当CF GAC不在图像中的项目时,文件将移动到\ Windows文件夹.卸下组件时它们会被放回(我多年前向CF团队抱怨无济于事).

这意味着如果您将CF安装到存储卡并运行您的应用程序,则会发生以下情况:

    在解压缩CAB期间,CF文件被复制到持久存储区

    安装注册密钥已写入

    注册表被刷新(已保存)

    应用运行

    CF文件被移动(不复制)到\ Windows,这是不稳定的.

现在,如果你在CF组件加载时重置设备 - 噗!不再是CF. 您的应用程序位于存储卡上,但不在GAC中,因此它可以存活但无法再运行.

黑客解决方案:使用本机应用程序"bootstrap"启动您的应用程序.让它检查\ Windows运行中的CF文件,如果它们不存在,则从持久存储中的位置安装CF CAB(将其标记为只读,因此wceload不会删除它).

另一种选择是使用您的应用程序而不是GAC分发CF程序集.


甚至不让我开始使用@%$#wceload.这就是我编写CAB安装程序SDK的原因 - 因此您可以自行解压缩CAB并完全控制安装.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有