Windows CE/Pocket PC安装盘的制作

类别:VC语言 点击:0 评论:0 推荐:

                                 Windows CE/Pocket PC安装盘的制作

                                     by blackcolor    2002.02.21

    工作环境为:Microsoft EMBDVTOOLS 3.0、Microsoft ActiveSync 3.1、Windows 98SE、Microsoft Visual C++ 6.0,
                PDA是联想天玑3000(Windows CE 3.0版本、CPU是ARM SA1110)

    Windows CE/Pocket PC安装盘的制作可分为以下几个步骤,在详细说明之前,假设在C:已经建立一个目录sample,
里面有已经编译好的EXE文件sample.exe(放在sample的子目录source下)和一个ico文件sample.ico。

一、准备一个inf文件(Sample.inf),放在c:\sample下,其格式如下:

;  PDA安装文件:Sample.inf
;

[Version]
Signature   = "$Windows NT$"
Provider    = "你的公司名称"
CESignature = "$Windows CE$"

[CEStrings]
AppName     = "你的应用程序名称"
InstallDir  = %CE1%\%AppName%

[CEDevice]
ProcessorType           = 2577 ; CPU类型为ARM SA11xx

[SourceDisksNames]
1 = ,"Common files",,source ; 源文件在在C:\Sample\source下

[SourceDisksFiles]
sample.exe        = 1           ; 已经编译好的EXE文件

[DefaultInstall]
CopyFiles   = Files.InstallDir
AddReg      = RegData
CEShortcuts = Links

[DestinationDirs]
Files.InstallDir    = ,%InstallDir%
Links               = ,%CE11%          
DefaultDestDir      = ,%InstallDir%

[Files.InstallDir]
"porder.exe",porder.exe        ; 将拷贝的文件

[RegData]
HKLM,Software\Microsoft\%AppName%,MajorVersion,0x00010001,1
HKLM,Software\Microsoft\%AppName%,MinorVersion,0x00010001,0

[Links]
"快捷方式名称",0,sample.exe,%CE17%    ; 在开始菜单创建快捷方式

二、用CabWiz.exe制作一个CAB包,CabWiz.exe文件在目录
%evtoolsdir%\Windows CE Tools\wce300\MS Pocket PC\support\ActiveSync\windows ce application installation\cabwiz
下,其中%evtoolsdir%是Microsoft EMBDVTOOLS 3.0的安装目录,在该目录的上级目录中有一文件buildcab.bat,
把buildcab.bat拷贝到c:\sample,修改为:

@echo off
REM
REM Sample batch file used to compile the CabWiz INF file
REM
REM
REM Replace <CabWiz-Path> with the full path to the CabWiz.exe file
REM Replace <INF-Path> with the full path to the Sample.INF file
REM
REM 请在文件"sample.inf"上面加上一对""号
REM 下面的命令应该是一行

"%evtoolsdir%\Windows CE Tools\wce300\MS Pocket PC\support\
ActiveSync\windows ce application installation\cabwiz\CabWiz.exe" "sample.inf" /err err.log


修改完毕之后,就可以执行buildcab.bat文件,该文件将生成sample.cab。

三、制作一个ini文件install.ini,放在c:\sample下,如下:

[CEAppManager]
Version = 1.0
Component = Sample

[POrder]
Description = 说明文字
IconFile = Sample.ico
IconIndex = 0
DeviceFile = Sample.exe
CabFiles = Sample.CAB


四、把PDA连上Windows 98SE,进入MS DOS方式,进入Microsoft ActiveSync 3.1的安装目录
C:\Program Files\Microsoft ActiveSync,运行如下命令:

C:\Program Files\Microsoft ActiveSync>ceappmgr c:\sample\install.ini

将启动安装程序,把Sample.exe安装到PDA上。如果觉得每次这样安装麻烦,请参照步骤五。

五、使用VC6创建一个简单的安装引导程序
1.打开vc6新建一个工程,在Projects标签选择Win32 Application,“Project Name”
输入install。
2.第二步选择“An empty project”,按Finish按钮。
3.新建一个文件install.cpp,并加入工程,内容如下:

// --------------------------------------------------
//   PDA 安装程序(Pocket PC)
// --------------------------------------------------

#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <shellapi.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 // 取自身的路径
 char szPath[MAX_PATH];
 GetModuleFileName(NULL, szPath, MAX_PATH-1);
 // 转换成ini文件名
 int iLen = strlen(szPath);
 strcpy(&szPath[iLen-3], "ini");

 // 取CEAppMgr.exe的全路径
 HKEY hResult;
 char szCEAppMgr[]="software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\CEAppMgr.exe";
 LONG iRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE, szCEAppMgr, NULL, KEY_READ, &hResult);
 BYTE szCEAppMgrExe[MAX_PATH*2+1];
 if(iRet==ERROR_SUCCESS)
 {
  DWORD cbName, dwType;
  cbName = MAX_PATH;
  dwType = REG_SZ;
  iRet = RegQueryValueEx(hResult, NULL, NULL, &dwType, szCEAppMgrExe, &cbName);
  RegCloseKey(hResult);
 }
 if (iRet!=ERROR_SUCCESS)
 {
  MessageBox(NULL, "请先安装Microsoft ActiveSync软件!", "错误", MB_ICONERROR);
  return 1;
 }
 char szExe[MAX_PATH*2+2];
 strcpy(szExe, (char *)szCEAppMgrExe);

 // 开始安装
 SHELLEXECUTEINFO ExecInfo ;
 memset((char *)&ExecInfo, 0, sizeof(ExecInfo));
 ExecInfo.cbSize = sizeof(ExecInfo);
 ExecInfo.fMask = SEE_MASK_CLASSKEY;
 ExecInfo.hwnd = NULL;
 ExecInfo.lpFile = szExe;
 ExecInfo.lpParameters = szPath;
 ExecInfo.nShow = SW_SHOW;

 ShellExecuteEx(&ExecInfo);

 return 0;
}

4.将编译后的EXE文件install.exe,拷贝到c:\sample目录,运行install.exe
将自动安装上面的软件。

六、说明
1.更详细的资料请参考Microsoft EMBDVTOOLS 3.0的联机帮助,
Microsoft EMBDVTOOLS 3.0可以由微软网站免费获得。
2.我手里只有一个PDA,对其他型号的PDA我没有进行测试。
3.本文版权归原作者所有,其它网站转载请注明出处并保持本文的完整性,
传统媒体转载须事先与原作者联系,bug与建议请一并发至[email protected]

本文地址:http://com.8s8s.com/it/it2723.htm