[zt]在smartphone2003中使用net compact framework2
来源:互联网 发布:c语言编写文件加密 编辑:程序博客网 时间:2024/05/20 01:11
我们先了解一下net程序的工作原理:net程序编译后将产生一种中间语言MSIL, 然后在执行时由公共语言运行时clr将其编译为本机的可执行代码运行。这就是一个Ncf2.0的程序完全可以在桌面计算机运行的原因(当然,这个ncf2.0程序中不能有对WINCE API的调用)。而net程序的运行还将依赖一系列的装配件,比如system.window.form.dll之类的提供支持。Net装配件是自描述的,也就是说可以在这个dll中找到它运行所需要的全部信息,而不需象以前的com对象一样要依赖注册表。
另外,有一个非常重要的消息是ncf完全支持Pocket pc 2003 phoneEdition,这是非常重要的,PPC2003、Smartphone2003、wince其实是一母三胎,它们拥有相似的API,实际上wince的API是这三个系统的共用标准。
有了这两个前提,我几乎可以确定,ncf2在得到了所需要的net运行时库clr的支持后,完全可以在smartphone2003下运行!由于这个原因,我决定自己提取ncf2所需的net运行时库。
在观察VS2005对未安装设备的模拟器(随便提及一下,VS2005的模拟器模拟的cpu就是我们真正手机上的arm CPU)的进行部署的情况,我发现:在Microsoft Visual Studio 8EN安装目录下的SmartDevices/SDK/CompactFramework/2.0/v2.0/WindowsCE/wce400/armv4文件夹下有一个叫NETCFv2.ppc.armv4.cab的安装包。上帝啊,为这个伟大的发现而欢呼吧!
但情况并没有想象中那么乐观,在将这个安装包复制到smartphone设备上安装后,出现错误:本安装在此设备上不支持(具体说明不记得了,大概是这个意思)。狂晕,但所有的一切都无法阻止对ncf2在smartphone2003中使用强烈向往的我的步伐。
我将这个CAB包用winrar软件解压缩,发现了一个非常特别的东西:_setup.xml,打开一看,上帝、上帝也被感动得哭了。。。这个XML文件的前面的信息如下,完整文件可以看你提取的文件:
<wap-provisioningdoc>
<characteristic type="Install">
<parm name="InstallPhase" value="install" />
<parm name="SetupDLL" value="1" />
<parm name="ProcessorType" value="2577" />
<parm name="OSVersionMin" value="4.0" />
<parm name="OSVersionMax" value="4.999" />
<parm name="BuildNumberMin" value="0" />
<parm name="BuildNumberMax" value="-536870912" />
<parm name="PlatformString" value="PocketPC" />
<parm name="PlatformMin" value="3.0" />
<parm name="PlatformMax" value="3.999" />
<parm name="UnsupportedPlatforms" value="HPCJUPITERSMARTPHONE" />
<parm name="AppName" value="Microsoft .NET CF 2.0" />
这个文件一看前面的内容就知道这是cab包安装所需的信息,而据我所知,cab只不过是一种很普通的压缩格式之一,用winzip、winrar之类的软件就可以查看,而对于愚蠢的知能设备来说,它可以理解的除了这个文件指导的信息之外,应该不会有任何比解压缩软件知道得更多的东西了。于是我试着将<parm name="UnsupportedPlatforms" value="HPCJUPITERSMARTPHONE" />这一句删除,将<parm name="PlatformString" value="PocketPC" />的value改为"SMARTPHONE", 然后将文件重新打包回cab,再复制到smartphone2003中运行,欢呼吧!我的朋友们,这个试验失败了8D,smartphone依然毫不留情地给出了本安装在此设备上不支持的提示。
我不放弃,在编程中永远不要放弃,每一次尝试都会告诉你希望就在拐角!我再将翻阅了这个xml文件,发现下面的节就是文件操作的信息,除了几个很明显的建立目录的信息节外,就是提取文件的信息:
<characteristic type="netcf2_0license.txt" translation="install">
<characteristic type="Extract">
<parm name="Source" value="NETCF2~1.001" />
<parm name="NoDateCheck" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
<characteristic type="MSCOREE2_0.dll" translation="install">
<characteristic type="Extract">
<parm name="Source" value="MSCORE~1.002" />
<parm name="NoDateCheck" />
<parm name="WarnIfSkip" />
</characteristic>
</characteristic>
根据上文所说的net常识,很多人都会忽略这一点:net 的装配件是自描述的,高度独立的,它们不依赖于系统的任何注册表之类的支持。我抱着这个想法将cab包的文件按指示那样一个个改名,如上所示,我将NETCF2~1.001改为netcf2_0license.txt" translation="install,将MSCORE~1.002改为MSCOREE2_0.dll......这个工作是枯燥无味的,一共大约20多个文件。改命完成之后,我将这些文件复制到我用ncf2编写的程序目录中(用VS2005编写的Windows Mobile 5 for smartphone程序),然后将所有文件一起复制到smartphone2003的设备上,运行这个程序......
世界原来这样美好。
注:这个测试并没有完全进行,我在一看到ncf2程序正常运行的界面就以颤抖的双手打下了这篇文档。你必须记住这是从ppC2003的安装包提取出来的东西,而smartphon2003有一些不支持的ppc2003的API函数,所以在发布前还必须进行详细的测试,比如你不要期等smartphone2003的button控件。所以建议使用VS2005以开发windows mobile5 for smartphone 的方式开发,而且要小心观察smartphopne2003不支持的wm5的一些新特性。 令人高兴的是,在发布本文的前几分仲,我在form上放了一个datagrid,然后运行,这个程序在smartphone2003跑得很欢快。。。
这是我写的第一篇 blog ,作为一个程序员,我不是一般的懒,只有懒虫才会想着怎么用代码产生最自动化的东西8),我只会在我喜欢的时候写一些心得,但希望大家还是给这个blog足够的支持,这儿以后一定会有你喜欢的东西的8)
我的联系方式:QQ:85403578,也可以发猫儿给我missilecat@163.com,作为猫的同类大懒猫,我有空的话会回复的8-)
- [zt]在smartphone2003中使用net compact framework2
- 在.Net Compact Framework中使用 log4net
- 在 .NET Compact Framework 2.0 中使用 COM Interop
- 在 .NET Compact Framework 2.0 中使用序列化
- 在 .NET Compact Framework 2.0 中使用序列化
- 在.NET Compact Framework 2.0中使用序列化
- 如何:在 .NET Compact Framework 中使用 DateTimePicker 类
- 在 .NET Compact Framework 2.0 中使用序列化
- 在 .NET Compact Framework 2.0 中使用序列化
- .Net Compact Framework 中使用 Timer
- 在.net应用程序中使用用户控件 [zt from zz]
- 在.Net Compact Framework中播放wav声音
- 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件
- 如何在WinCE 5.0中安装 .Net Compact Framework?
- 如何部署.NET Compact Framework2.0 应用程序到Windows Mobile(制作CAB文件)
- 在 NetBeans 6 中使用 Struts2 (ZT)
- 在ASP.NET中支持断点续传下载大文件(ZT)
- 在ASP.NET中支持断点续传下载大文件(ZT)
- 利用JNI实现 AWT控件的本地化调用IE控件
- 如何将图片储存在MySQL数据库里
- 简单冒泡排序
- flash读取txt变量附_带源文件
- 事务简说
- [zt]在smartphone2003中使用net compact framework2
- sipp 在windows/linux下的安装和使用及性能测试
- flash+asp读取新闻数据_附带源文件
- WINDOWS MEDIA Format 之 EnumCodec
- 使用Java取得汉字的拼音首字母
- log4j
- C++ : 应用 RAII 技术在 Windows 下实现自动释放锁
- 货品的多计量单位(多包装单位)管理
- 性能测试的一些思路