PDA通过数据线同步电脑后,将netcf和SQLCE的CAB文件手动的复制到PDA里,还得手动的建立目录,创建快捷方式(麻烦)。现在不止实施人员这么做,连客户也要这么做(PDA备电没电了,就还原了),想了想有没有简便方式,好像在见过,在网上搜索一番,然后开始动手,不过都得感谢下面“2位”:
1.OpenNETCF.Desktop.Communication
2.Microsoft ActiveSync 4.5
大致原理:利用Rapi对PDA里的文件,目录创建,复制的操作,其次就是用 Microsoft ActiveSync 安装目录里CEAPPMGR.EXE在PC给PDA安装CAB。
首先,在网上下载的OpenNETCF.Desktop.Communication的源码,换个8.0的解决方案,然后编译成DLL。
然后,创建一个Windows程序项目,引入刚编译的DLL,然后在CS文件添加:
using OpenNETCF.Desktop.Communication;
using System.Collections;
using System.IO;
using System.Threading;
using System.Collections;
using System.IO;
using System.Threading;
接下来就是实例化RAPI类(主角),然后就是声明点全局变量来使用:
#region 变量
//源文件目录 也是程序启动目录
private string _loadPath;
//目标目录 也是安装目录
private string _newPath = @"\Storage Card\PDA\";
//目标数据目录
private string _newDataPath = @"\Storage Card\PDA\Data\";
//目标图片目录
private string _newPhotoPath = @"\Storage Card\PDA\Photo\";
//PDA桌面文件夹路径
private string _newlnkPath = @"\Windows\Desktop\";
//CEAPPMGR.EXE路径用于PC安装CAB
private string _CabSetuper = "C:\\Program Files\\Microsoft ActiveSync\\CEAPPMGR.EXE";
//组件目录名
private string _CabPathName = "Cab";
//主程序目录名
private string _exePathName = "Data";
//rapi
private OpenNETCF.Desktop.Communication.RAPI _rapi;
//日志
private List<string> _logData;
#endregion
#region 窗体加载
private void frmMain_Load(object sender, EventArgs e)
{
PlaySound();
FormShow();
_loadPath = Application.StartupPath;
_rapi = new OpenNETCF.Desktop.Communication.RAPI();
_logData = new List<string>();
}
#endregion
//源文件目录 也是程序启动目录
private string _loadPath;
//目标目录 也是安装目录
private string _newPath = @"\Storage Card\PDA\";
//目标数据目录
private string _newDataPath = @"\Storage Card\PDA\Data\";
//目标图片目录
private string _newPhotoPath = @"\Storage Card\PDA\Photo\";
//PDA桌面文件夹路径
private string _newlnkPath = @"\Windows\Desktop\";
//CEAPPMGR.EXE路径用于PC安装CAB
private string _CabSetuper = "C:\\Program Files\\Microsoft ActiveSync\\CEAPPMGR.EXE";
//组件目录名
private string _CabPathName = "Cab";
//主程序目录名
private string _exePathName = "Data";
//rapi
private OpenNETCF.Desktop.Communication.RAPI _rapi;
//日志
private List<string> _logData;
#endregion
#region 窗体加载
private void frmMain_Load(object sender, EventArgs e)
{
PlaySound();
FormShow();
_loadPath = Application.StartupPath;
_rapi = new OpenNETCF.Desktop.Communication.RAPI();
_logData = new List<string>();
}
#endregion