cab安装包是一件挺简单的事情.doc_第1页
cab安装包是一件挺简单的事情.doc_第2页
cab安装包是一件挺简单的事情.doc_第3页
cab安装包是一件挺简单的事情.doc_第4页
cab安装包是一件挺简单的事情.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

制作cab安装包是一件挺简单的事情,如果大家写的主题或者程序涉及到注册表的修改,建议使用cab安装包来进行安装。首先你需要如下几个文件,CabwizSP.exe,cabwiz.ddf。好了,下面进入正文,要制作.cab安装包,你只要写一个.inf文件,CabwizSP.exe会根据你的这个INF文件来生成_setup.xml,那么文件要如何写呢?其实很简单,我会提供一个范本,大家只要修改SourceDisksFiles之后的字段即可。下面我就来解释一下主要字段的含义。第一个字段Version中Provider大家可以随便改,其他两个参数就不要去碰了。第二个字段CEStings的AppName=就是你为所要安装的程序所起的名字。完整的名字将会是Provider参数的字符串加上AppName参数的字符串,例如范本,最后出现在删除程序中的名字就是“MGCN iMac”。第三个字段CEDevice.ARM720,CEDevice字段是程序所对应的设备平台,这个大家就不用去管它了,写smartphone的inf文件时候加上这个字段就行了。下面的SourceDisksNames是指定源文件所在的磁盘和路径,这里我也搞不太清楚,sdk中的例子也看不懂,我用绝对路径也不行,索性就直接用.代替,反正大家copy就是了(看补充1),这样,大家只要把要打包的文件要和inf放在一起就可以了。下面一个字段SourceDisksFiles就是大家要打包的文件清单,后面的1就表示文件的路径,也就是SourceDisksNames中的1。再下一个字段DefaultInstall就是安装步骤,范本中CopyFiles参数和AddReg参数表示安装不仅仅是解压拷贝文件,还要修改注册表。CopyFiles=后面跟着是字段名字,即你所要做的拷贝工作到底有哪些。AddReg作用一样。例如在范本中,CopyFilesCopyToHomeDir,CopyToiMacDir就是告诉CabwizSP.exe要做两个拷贝文件工作,第一个是把一些文件拷贝到Home文件夹下,要拷贝的文件在CopyToHomeDir字段中,第二个是把一些文件拷贝到iMac文件夹下,要拷贝的文件在CopyToiMacDir而AddRegRegData表示安装程序还要修改注册表,修改的东西在RegData字段中。下一个字段就是目标文件夹的具体位置。两个参数CopyToHomeDir和CopyToiMacDir要和上个字段的CopyFiles等号右边的两个字符串值分别相同。这里0我也不清楚是什么意思,sdk中找不到,%CE19%就表示StorageApplication Data(看最后注释),再下一个字段CopyToHomeDir就是具体的任务分配了,引号里面表示解压后的文件名,必须和你压缩前的文件名相同,即必须在SourceDisksFiles中能找到相应的文件,后面表示拷贝到相应目录后的文件名,如果没特殊要求就不要改名了。后面一个字段作用和这个相同,我就不多说了,最后是修改注册表段,第一个“,”之前表示注册表中的四大块的名字,直接用缩写就可以了,如范本中HKLM就代表HKEY_LOCAL_MACHINE,其他三个分别为HKCR,HKCU和HKU。第二个“,”之前表示你要修改的键的具体路径(如果没有会自动建立),即完整的项(key)名称,第三个“,”之前就表示你要具体修改的键(就是我们经常在修改注册表的文章中看到的Value Name),如果没有的话程序就会自动建立,第四个“,”之前表示值类型,目前我只懂得整数是0x00010001(见补充2),字符型数据这里你就不要填了,留着个“,”就可以了。最后就是你要填入的Value。例如在范例中HKLM,SOFTWAREMicrosoftShellRai:CallAlert,BKBitmapFile,StorageApplication DataHomeiMaccall1.jpg 表示修改(建立)名为BKBitmapFile的键的值,它在HKLMSOFTWAREMicrosoftShellRai:CallAlert下,值内容为StorageApplication DataHomeiMaccall1.jpg,很明显,这是一个值为String类型的键。整数的我就不说了,范本中有,我相信大家看得懂。好了,inf文件写好了,copy你要打包的文件和inf文件到含有CabwizSP.exe,cabwiz.ddf的目录中,在命令行模式下输入CabwizSP xx.inf,xx代表你为inf文件起的名字,那么一个带_setup.xml的.cab包就生成完毕了,安装一下,看看自己的成果吧。注释:%A%表示引用A参数的值,如CopyToHomeDir = 1,%CE1%AppName%的话就代表storageprogram filesMGCN iMac。(在范例中AppName=Provider+AppName=MGCN+iMac),而对于%CEX%,系统在安装程序时候会自动翻译,如%CE19%翻译结果是Application Data,又如CE1表示program files,CE2表示windows,最后的翻译结果系统会在前面已翻译的结果上再加上默认的storage卷标名(前提是存在默认的storage卷标名),如Smartphone的默认磁盘卷标是Storage,那么%CE19%最终就变成了StorageApplication Data。有兴趣的可以去翻翻SDK看看到底有多少的%CEX%。补充1:从modaco的那篇英文文章知道,SourceDisksNames包含有四个域,域与域之间用逗号隔开,第一个域是disk_id,磁盘的id(我什么都试过了,这个实在不懂啥意思.大家就表管它意义了。),第二个域是注释,要用把注释内容包含起来,第三个不知道,第四个是文件路径,“.”就表示当前目录,“.”表示当前目录的上一级目录。补充2:第四个,之前0x00010001称之为Flag,应该说是对后面value具体类型的表明。几个flag说明如下:0x00000002 如果注册的键(值)存在,则不修改它,不存在的话值就等于最后一个域的内容了(废话.)这个flag可以和下面的任何flag混用(具体怎么混用我也不懂,如果你用这个Flag的话,后面所跟的内容就是string类型了,按理说可以指定后面内容的类型的,不过我试不出来,sdk中也找不到相关说明,估计要去msdn中去找才行.) 0x00000000 表明是String类型,对应注册表中的REG_SZ数据类型。 0x00010000 表明是Multi-String类型,对应REG_MULTI_SZ数据类型。就是说包含有很多个字符串,每个字符串用“,”隔开。 HKLM,SOFTWAREMicrosoftShellRai:MSClog,BKFlags,0x00010000,xxx,yyy,zzz0x00000001 二进制类型,对应注册表中的REG_BINARY数据类型,你可以写好几个不同的的二进制,每个二进制数就代表一个域,域与域之间用,隔开,注意不能用0x打头(16进制的头标志)。 格式如下:HKLM,SOFTWAREMicrosoftShellRai:MSClog,BKFlags,0x00000001,00,01,11,10,11,100x00010001 表示是整数,对应注册表中的REG_DWORD数据类型。如果数字前面加0x表示十六进制数字,写入注册表时会自动翻译成十进制。 如:HKLM,SOFTWAREMicrosoftShellRai:MSClog,BKFlags,0x00010001,0x26那么生成_setup.xml时候0x26就变成了38,datatype还是integer。补充3:String字段。这个字段是用来定义你要重复使用的字符串的缩写的,比如你SoftwareMicrosoftMy Test App这个字符串用得很多,你可以用r来代表,只要你在这个字段中写入r = SoftwareMicrosoftMy Test App 那么再后面字段中你就可以用%r%来表示SoftwareMicrosoftMy Test App了,例如在注册表字段中你可以这样写HKLM,%r%,test,0x00010001,3,就等同于HKLM,SoftwareMicrosoftMy Test App,test,0x00010001,3 补充4:关于建立快捷键。形式如下,主要是要在DefaultInstall,DestinationDirs加入相应的项目,并且要建立一个字段,字段名字可以随便取,不过注意三个字段中这个名字都要一样。如:DefaultInstall CEShortcuts = Shortcuts DestinationDirs Shortcuts = 0,%CE14% Shortcuts Sample App,0,sample.exe Sample App,0,sample.exe,%InstallDir% 这里主要是最后一个字段的语法要说明一下,四个域,域之间用逗号隔开,前三个域的内容必须填写。第一个域是快捷键名称,第二个域中0表示是文件,其他任何非零数表示为目录,第三个域就是快捷键的目标程序(目录),第四个域是可选域,是安放快捷键的目录,默认目录就是DestinationDirs中Shortcuts = ,你可以指定其他目录,如你想在开始菜单中加入自己的快捷键的话就在这里写上storagewindowsstartmenu。最后需要说明的是文中的为了方便大家能看清楚,逗号都用全角表示,INF文件涉及系统的东西是不能使用全角符号的,字符串我还没有试过,不过我建议大家能使用英文尽量使用英文. 范本1,我自己写的主题iMac的inf文件VersionSignature = $Windows NT$ Provider = MGCN CESignature = $Windows CE$ CEStringsAppName = iMac CEDevice.ARM720ProcessorType = 0SourceDisksNames 1 =. SourceDisksFilesimac.home.xml = 1alert.jpg = 1app.jpg = 1batterieoff.bmp = 1batterieon.bmp = 1BatteryMask.gif = 1calendar.jpg = 1call1.jpg = 1call.jpg = 1confirm.jpg = 1 contacts.jpg = 1dial.jpg = 1dialback.jpg = 1error.jpg = 1i1.gif = 1i2.gif = 1i3.gif = 1i4.gif = 1incall.jpg = 1info.jpg = 1kbat.ini = 1kdh2.jpg = 1newhome.jpg = 1pro.jpg = 1programs.jpg = 1sm.jpg = 1volume.jpg = 1DefaultInstallCopyFiles = CopyToHomeDir, CopyToiMacDirAddReg = RegDataDestinationDirsCopyToHomeDir = 0,%CE19%HomeCopyToiMacDir = 0,%CE19%HomeiMacCopyToHomeDiriMac.home.xml,iMac.home.xmlCopyToiMacDiralert.jpg, alert.jpgapp.jpg, app.jpgbatterieoff.bmp, batterieoff.bmpbatterieon.bmp, batterieon.bmpBatteryMask.gif, BatteryMask.gifcalendar.jpg, calendar.jpgcall1.jpg, call1.jpgcall.jpg, call.jpgconfirm.jpg, confirm.jpgcontacts.jpg, contacts.jpgdial.jpg, dial.jpgdialback.jpg, dialback.jpgerror.jpg, error.jpgi1.gif, i1.gifi2.gif, i2.gifi3.gif, i3.gifi4.gif, i4.gifincall.jpg, incall.jpginfo.jpg, info.jpgkbat.ini, kbat.inikdh2.jpg, kdh2.jpgnewhome.jpg, newhome.jpgpro.jpg, pro.jpgprograms.jpg, programs.jpgsm.jpg, sm.jpgvolume.jpg, volume.jpgRegData HKLM,SOFTWAREMicrosoftShellRai:CallAlert,BKBitmapFile,StorageApplication DataHomeiMaccall1.jpg HKLM,SOFTWAREMicrosoftShellRai:ErrorBox,BKBitmapFile,StorageApplication DataHomeiMacerror.jpg HKLM,SOFTWAREMicrosoftShellRai:ExclamationBox,BKBitmapFile,StorageApplication DataHomeiMacalert.jpgHKLM,SOFTWAREMicrosoftShellRai:InformationBox,BKBitmapFile,StorageApplication DataHomeiMacinfo.jpgHKLM,SoftwareMicrosoftShellRai: QuestionBox,BKBitmapFile,StorageApplication DataHomeiMacconfirm.jpgHKLM,SOFTWAREMicrosoftShellRai:VolDlg,BKBitmapFile,StorageApplication DataHomeiMacvolume.jpgHKLM,SOFTWAREMicrosoftShellRai:MSStart,BKBitmapFile,StorageApplication DataHomeiMacprograms.jpgHKLM,SOFTWAREMicrosoftShellRai:MSCPROG,BannerImage,StorageApplication DataHomeiMacincall.jpgHKLM,SOFTWAREMicrosoftShellRai:MSCPROG,BKBitmapFile,StorageApplication DataHomeiMacdialback.jpgHKLM,SOFTWAREMicrosoftShellRai:MSCdial,BannerImage,StorageApplication DataHomeiMacdial.jpg HKLM,SOFTWAREMicrosoftShellRai:MSClog,BKBitmapFile,StorageApplication DataHomeiMacprograms.jpgHKLM,SOFTWAREMicrosoftShellRai:MSClog,BKFlags,0x00010001,26HKLM,SOFTWAREMicrosoftShellRai:MSCONTACTS,BKBitmapFile,StorageApplication DataHomeiMaccontacts.jpgHKLM,SOFTWAREMicrosoftShellRai:MSCONTACTS,BKFlags,0x00010001,26HKLM,SOFTWAREMicrosoftShellRai:MSSYNCAPP,BKBitmapFile,StorageApplication DataHomeiMacXprograms.jpgHKCU,ControlPanelHome,Scheme,StorageApplication DataHomeiMac.home.xmlHKCU,ControlPanelHome,BgImage,HKCU,ControlPanelHome,ColorScheme,范本2,e200插件的inf文件Version Signature = $Windows NT$ Provider = Orange CESignature = $Windows CE$ CEStrings AppName = E200s plugin CEDevice.ARM720 ProcessorType = 0SourceDisksNames 1 =. SourceDisksFiles 4orangeh.dll = 1 DefaultInstall CopyFiles = CopyToHomeDir AddReg = RegDataDest

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论