Window Mobile 打包过程2

离第一篇文章有些日子了,由于我的失误,不少朋友都没看到图片。在这期间,有不少朋友来信说,有没有方法做一个桌面的安装程序?运行程序前, 必须还要装其他程序(比如SqlMobile, .NetCompactFrameWork等等),有没有方法能把它们做到一个安装包中?
       好, 让我们开始。首先, 让我们看看有几种方案。
      其实, 大家到网上随便一艘就能搜到第一种方案,手把手教大家怎么做桌面安装程序,这是直接用vs2005,不过我好像没看到C++版的(全是vb.net和C#的)。
     第二种方案就是利用现有的打包工具,这个我没试过;
     第三种方案和第一种差不多,不过比第一种差不多。都是先要写一个安装的INI文件, 然后调用CEAppMgr.exe程序,把INI文件传给它。不过这用方案不能定制,自己的安装界面。
      而且,某些朋友还需要和自己程序安装的时候同时安装其他程序。最好的方法是,在用户点击我们桌面安装程序的时候, 把所有的需要的程序都安装好。

      现在,我们来考虑解决以上问题的方案。这种方案必须能满足以下几点:
      1) 安装程序用vc++写;
      2) 能够定制界面;
      3) 能够同时安装多个.cab程序;
       首先,我们必须知道Win Mobile 上怎么安装程序的。在Win Mobile 上,有个安装程序的程序叫 wceload.exe,它的用法是:把你要安装的程序包路径传给它做参数即可(有点必须注意:必须在你的参数字符串两边加上双引号,具体用法见demo)。为实现远程安装, 我们可以先把安装Cab包拷贝PDA上,然后远程调用安装程序,实现安装。      第二,既然我们想定制界面,做安装程序最简单的就是用 CPropertySheet 和 CPropertyPage 。为了简单,我们在demo中就采取这种方法;
      第三,要实现多个cab安装,也很简单。记得,我们在上篇文章中记得那个安装DLL吗?我们可以利用那个实现多个cab安装。我们先可以把我们要安装的包做为文件增加到的“应用程序文件”项,然后在dll中调用安装程序进行安装。
      OK,   现在这种方案都能满足以上要求。大家思路有点印象没,如果还不清楚,请继续跟我往下走。我们开始写程序。
      我们打开vs2005, 新建一个基于MFC对话框程序名为SetupOnPC,注意选中静态链接。我们就可以向其中加入我们要定制界面的CPropertySheet 和 CPropertyPage 的继承类。具体过程,我省略。请查看源码。
      我们要在 头文件 stdafx.h  中加入 #include <rapi.h>   //远程API头文件, 其次还要把它们.H和.lib文件引用路径加入到vs2005中。路径为:安装路径/Windows CE Tools/wce500/Windows Mobile 5.0 Pocket PC SDK/Activesync/Inc(Lib)。
      下面,我们开始写代码, 过程省略(请看源码)。由于,我们需要把多个包一起安装,所以我们要改进上次写的CabSample的setupdll的代码。主要是流程如下:先检测已安装的程序(组件),然后选择未安装的安装。具体代码参见demo。今天的例子,我们以sqlmobile为例,怎么让它和我们一起安装。鉴于,sqlmobile的安装包名字太长, 我给它们重命名。(一共三个,分别叫:SqlMobile1,SqlMobile2,SqlMobile3)。
       OK , 全部结束。不懂的地方参见源码,下面是运行图。


检测PDA连接情况(未连上),如果点第二个框框再检测 如下图

检测到后, 下一步才能继续, 如下图

拷贝安装文件

安装成功, 如下图

PC端,全部执行完毕。你看你的pda或者模拟器已经在安装程序或者安装好了。
到此,全过程结束。需要说明下就是, 我们的程序最好选用静态+release 编译,生成的程序直接可以考到客户PC运行,无须再打包。另外,由于本程序用刀ce RAPI 所以,在我们的程序文件中,当然要包括以下2个dll 文件:rapi.dll 和 ceutil.dll 。这两个文件一般装过ActinveSync就会在系统文件中有。另外,我们的程序文件夹中,要包括你要安装的.cab文件。OK, 现在全部结束。 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值