djhfuiw

djhfuiw

0个粉丝

5

问答

0

专栏

0

资料

djhfuiw  发布于  2012-12-05 14:38:22
采纳率 0%
5个问答
2996

WinCE软件安装包制作

 
用命令行编译链接程序
  虽然EVC里提供了Batch Build的功能,但该功能只能用于同一平台的不同CPU版本的编译链接操作。在切换不同平台进行编译时,需要在GUI环境中手工执行,无法达到我们要求。所以我们需要研究如何在命令行状态下进行程序的编译运行。实际上EVC程序本身是提供了一系列的命令可以用于命令行编译的。

D:\Program Files\Microsoft eMbedded Tools\Common\EVC\Bin>evc /?
Usage:
    EVC [myprj.vcp|mywksp.vcw] - load project/workspace
    [] - load source file
        /? - display usage information
        /EX - execute a VBScript macro
        /OUT - redirect command line output to a file
        /USEENV - ignore tools.options.directories settings
        /MAKE [] [...] - build specified target(s)
            [ - ]
            [[|ALL] - [DEBUG|RELEASE|ALL]]
        /CLEAN - delete intermediate files but don''t build
        /REBUILD - clean and build
        /NORECURSE - don''t build dependent projects
        /CECONFIG [] - use specified configuration

  其中主要是运用MAKE命令。假设我们需要编译的程序名叫做Demo,工作环境文件名为demo.vcw,PPC版的工程项目文件为Demo.vcp,Smartphone版本的项目文件为DemoSP.vcp.我们为EVC3编写好的批处理文件build.bat如下:

REM @echo off
set EVC="D:\Program Files\Microsoft eMbedded Tools\Common\EVC\Bin\EVC.EXE" <-指向EVC 3.0程序所在目录
set CFG=
set CECONFIG=

%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild <-执行编译并生成目标可执行文件
if errorlevel 1 goto :eof <-如果编译失败则终止批处理

:pocketpc
set CFG=Demo - Win32 (WCE ARM) Release<-将要进行编译的项目名称和编译出来的目标代码的平台和CPU类型。其中“-”前面的是项目名称,“-”后面的部分是平台和CPU类型以及编译的是Release版还是Debug版。格式可以参照在EVC的Build->Configurations中的写法, EVC3 和 EVC4的表达方式略有不同。
set CECONFIG="Pocket PC" <-编译PPC平台版本
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof

set CFG=Demo - Win32 (WCE MIPS) Release
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof

set CFG=Demo - Win32 (WCE SH3) Release
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof

:sp2002
set CFG=DemoSP - Win32 (WCE ARM) Release
set CECONFIG="Smartphone 2002" <-编译Smartphone平台版本
%EVC% Demo.vcw /make "%CFG%" /CEConfig=%CECONFIG% /rebuild
if errorlevel 1 goto :eof

echo build successfully finished!!
pause

  根据上面的代码,现在我们只需要运行一次build.bat文件即可编译生成PPC,Smartphone等不同平台的目标文件。

制作cab文件
  生成目标文件后,我们就需要考虑如何将程序安装到设备上。cab文件是一种压缩并且带有各种安装信息的打包文件,所有的安装软件实际上都是将软件的cab文件拷贝到相应设备上,然后利用设备上的wceload程序进行最后的设备安装步骤。我们可以使用PocketPC或者Smartphone SDK中附带的cabwiz.exe (在Smartphone上是CabWizSP.exe)对程序进行打包生成cab文件。

  在制作cab文件之前,我们通常需要做好以下的规划:

程序的详细信息,例如公司名称,程序名称等等
目标的硬件平台,如PPC还是Smartphone,什么类型的CPU
有哪些源文件,源文件存放在PC机上面的什么目录中
拷贝到设备上的文件存放在什么路径下
是否需要创建快捷方式,快捷方式到什么文件,图标是什么
是否需要修改注册表,修改项目和内容是什么
  cab文件的生成需要制作一个.inf文件作为cabwiz程序的输入。当我们做好计划之后就可以动手编写这个.inf文件。这个文件是整个制作过程中最关键的一步,也是最困难的一步。.inf文件与windows里的ini文件十分相似,都是用文本方式保存的,里面包含若干的段(Section), 关键字(Key)和值(Value)组成的描述信息。我们同样是采用对例子进行解释说明的方式进行介绍。

  一般来说,inf文件都有四个主要组成部分,PPC的写法和Smartphone的写法略有不同,我们先介绍PPC的写法。

  inf文件的第一部分是一些全局信息的定义:

[Version] <-版本信息,必须有该段
Signature = "$Windows NT$" <-必须是$Windows NT$或者$Windows 98$, 不要改动
Provider = "Demo Soft" <-提供商, 完整的程序名字会是" "
CESignature = "$Windows CE$" <-必须是该值

[CEStrings] <-该段主要是定义安装程序用到的一些字符串,必须有该段
AppName = "DemoApp" <-程序的名字
InstallDir = “%CE1%\Octopus Studio\%AppName%” <-定义程序在目标设备中的安装目录

[Strings] <-该段用于用户自己定义的字符串, 该段可选
ExeBaseDir = "C:\ProjectHome\demo\Release\platform" <-和平台相关的文件放在这个目录下
CommonDir = "C:\ProjectHome\demo\Release" <-与平台无关的文件放在这个目录里

  其中InstallDir中出现的“%CE1%”是inf文件定义的系统目录标记,下面列出的是PPC 2002和Smartphone 2002下可以使用的目录宏:

目录标记 目录路径
%CE1% \Program Files
%CE2% \Windows
%CE4% \Windows\StartUp
%CE5% \My Documents
%CE8% \Program Files\Games
%CE11% \Windows\Start Menu\Programs
%CE14% \Windows\Start Menu\Programs\Games
%CE15% \Windows\Fonts
%CE17% \Windows\Start Menu
%CE19% \Application Data(仅用于Smartphone)

  这些目录标记在进行安装的时候会替换成相应的系统目录路径。此外这些系统目录在安装过程中会自动根据需要进行自动调节。例如%CE1%是指系统缺省的程序安装目录,指向“\Program Files”。而当用户选择程序安装在存储卡中时,该目录也会做相应改变。

  [CEString]和[Strings]中定义的变量以及上面提到的目录标记可以用于替换inf文件中的任意部分。下面的说明中会有使用的例子。

  第二部分是用来声明支持的设备CPU类型,操作系统类型和版本号要求:

[CEDevice.ARM] <-目标设备声明,如果支持多种设备/CPU就会有多个CEDevice段,并且在用设备标号作为后缀表示。如果只支持一种设备,可以直接用[CEDevice]表示
ProcessorType = 2577 <-该目标设备是StrongARM CPU
UnsupportedPlatforms = “Smartphone”,"HPC","Jupiter","Palm PC2" <-不支持smarthphone和HPC等旧设备
VersionMin = 3.00 <-对应设备德操作系统的最低版本号要求是3.0,版本号说明见下面的说明
VersionMax = 5.00 <-假设我们的程序要求的操作系统最高版本号是5.0

[CEDevice.MIPS]
ProcessorType = 4000 <-CPU要求是 MIPS_R4000
UnsupportedPlatforms = “Smartphone”,"HPC","Jupiter","Palm PC2"
VersionMin = 3.00
VersionMax = 5.00

[CEDevice.SH3]
ProcessorType = 10003 <- CPU要求是 Hitachi_SH3
UnsupportedPlatforms = “Smartphone”,"HPC","Jupiter","Palm PC2"
VersionMin = 3.00
VersionMax = 5.00

  WinCE各个平台的表示法和相应的版本号如下表,UnsupportedPlatform和VersionMin/VersionMax的值可以参考该表进行填写。

Platform Platform type Windows CE version
Smartphone 2003 Smartphone 4.2
Smartphone 2002 Smartphone 3.0
Pocket PC 2003 Pocket PC 4.2
Pocket PC 2002 Pocket PC 3.0
Pocket PC 2000 Palm PC2 3.0
Palm Size PC v2 Palm PC 2.11
Palm Size PC v1 Palm PC 2.1
Handheld PC 2000 Jupiter 3.0
Handheld PC Pro Jupiter 2.11
Handheld PC HPC 2.0

  inf文件的第三部分是定义源文件的组成和其在桌面机器的目录:

[SourceDisksNames] <-源文件所在目录,段名称不加后缀表示与平台无关的文件所在目录.必须有该段
1=, "SourceDisk01",,%CommonDir% <-格式为 = ,
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区