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]。

|