Installshield 制作安装包心得.docx
- 文档编号:23104280
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:770.58KB
Installshield 制作安装包心得.docx
《Installshield 制作安装包心得.docx》由会员分享,可在线阅读,更多相关《Installshield 制作安装包心得.docx(16页珍藏版)》请在冰豆网上搜索。
Installshield制作安装包心得
Installshield学习心得体验
陈楚丰
一.说明。
阅读对象:
本人,IS的初学者。
适用版本:
Installshield12。
目的:
为了让初学IS的朋友少走些弯路,虽然不是很好的宝典,但里面很多细
节都是制作安装包常碰到的经典问题。
另外,也为了给自己留一些资料,
方便以后查询,人的记忆力有限嘛。
内容:
制作一个简单的安装包;制作定制的安装包;其它细节注意;
二.Installshield介绍。
1.公司介绍。
InstallShield软件公司是美国的一家专业从事安装软件开发工具生产的著名软件公司。
该公司由VireshBhatia和RickHarold于1987年创建。
自Windows软件开发之初,InstallShield软件公司就已经专注于通用安装软件制作工具的开发并解决Windows操作系统发展和变革所带来的挑战,以满足开发人员及最终用户的需要。
其主打产品InstallShield为满足各种平台和不同的安装需求提供完整的软件安装解决方案,并且已经形成人们所熟悉的一套软件安装的工业标准。
2.产品介绍。
在微软Windows2000操作系统引入WindowsInstaller(WI)服务之前,InstallShield公司以其拥有的标准的标准和技术在同类公司中遥遥领先。
但由于WI的出现后,WI使得用户可以利用微软提供的API函数构建符合微软标准的安装软件,并充分享用微软WI服务的诸多好处。
为了跟上安装软件技术的自然进化,满足用户的需求和接受新挑战,1999年9月,InstallShield公司开始宣布InstallShield2000专业版(简称ISPro2K)面世,这是该公司首次将软件安装开发工具划分采用自身传统标准的InstallShieldProfessional和采用微软标准WindowsInstaller标准的InstallShieldforWindowsInstaller两个不同版本。
三.制作简单的安装软件。
声明:
下面的教程,是把读者当做完全没接触过IS的角度来制作的。
1.启动InstallShield12。
建立一个InstallShieldMSIProject,如图:
2.建好后,选择ProjectAssistant.
你会发现下边有8个选项。
接下来就一项一项开始设置。
3.点击ApplicationInformation.
输入公司名称,应用程序的名称(注意:
这个不是打包完后安装包的名称,默认的安装包名称为Setup.exe,不过可以自己定义,稍后讲),版本号,公司网址,选择“添加/删除程序”中的图标。
4.点击InstallationRequirements.
这里可以选择自己的打包软件适合运行的操作系统和必须安装的第三方软件。
选不选根据自己的需要。
5.点击InstallationAchitecture。
这里可以定义打包文件的组织结构,默认有个DefaultFeature,将文件放在这个feature下,则都默认是必须安装的。
有印象的朋友会记得,在安装某些软件的时候,会有,“typical(典型)”“custom(自定义)”界面提示,选择典型安装,就是所有文件都安装,选择自定义安装,就可以去掉一些不需要安装的文件,但其它文件就是必须安装的。
这个还是需要自己反复折腾一下才能明白。
至于怎么加文件到feature下面,稍后讲述。
6.点击ApplicationFiles。
这里讲述如何添加文件。
上面图片的红色区域中的文件就是我加进去的,加到了安装目录下了(注意:
有个INSTALLDIR)。
在这里,你就可以把你要打包的所有文件加进来。
加入你安装目录下有文件夹,则先在左边右击GAGA,添加文件夹,再往里面添加文件。
注意:
添加完文件后,全选文件,右击,选中“AlwaysOverwrite”。
否则有时会出现重新安装后,有些文件没有被覆盖。
7.点击Applicationshortcut。
为自己的安装程序生成快捷方式,可以创建开始菜单和桌面的快捷方式,细心发现的话,你会看见左边有个“Createanuninstallationshortcut”的选项,那个就是用来创建一个卸载方式的,不过很遗憾,这个快捷方式卸载后有时会有些文件删除不干净,不能做到完美卸载。
关于怎么创建卸载快捷方式,做到完美卸载,在后面会讲。
8.点击ApplicationRegistry。
点完后就直接跳过吧,简单的安装工程,基本不用到这个。
要了解如何操作注册表,在后面会说。
9.点击InstallationLocalization。
这里我们选上“Chinese”,默认是选上英文。
如果要设置中文为默认语言的话,需要点击InstallationDesigner->InstallationInformation->GeneralInformation->Stringtable,右击Chinese,选择“Makedefault”。
如图:
返回ProjectAssistant.这下还可以把英文去掉,因为之前英文被设为默认,所以不能直接在这里去掉,非得这么折腾一番。
10.点击BuildInstallatio。
这里可以选择Single或者CD-ROM,区别在于第一种只生成一个.exe文件,而后
者会生成好多文件,包括.msi文件等。
第一种生成格式适合于制作升级程序,一般
的升级程序都只要一个.exe文件就好了。
点击“BuildInstallations”就可以生成安
装包了,生成的安装包,点击”Openreleasefolder”就可以找到了。
四.制作定制的安装软件。
声明:
该部分主要是根据自己本身在项目当中打包安装软件的时候碰到的一些问题,稍微整理一下作为这部分主要讲解的内容,由于项目功能的局限还有本人能力的有限,只能讲解自己解决的一些经典问题,并不能全面覆盖到强大的IS的各个方面,仅供读者参考。
这部分的内容貌似比较吸引人哦,“定制”两字给人比较实用,有趣的感觉。
这部分内容我们和上面制作简单的安装软件走不一样的道路,这部分内容需要新手对IS有一定的折腾后再来看,就比较适合啦。
废话不再讲,开始讲解吧。
点击InstallationDesigner,如图:
1.点击InstallationInformation
Ø管理员权限安装设置:
点击GeneralInformation,选择SummaryInformationStream,选择RequireAdministrativePriviledge,将该项选择“Yes”。
这样设置之后,用户就可以有管理员的权限去安装该安装文件了,避免用户在安装的时候出现权限不够的问题。
如图:
Ø更改“添加/删除程序”面板中软件的图标。
GeneralInformation->AddorRemovePrograms->DisplayIcon
Ø设置”添加/删除程序”面板中软件可卸载。
GeneralInformation->AddorRemovePrograms->DisableChangeButton,DisableRemoveButton,DisableRepairButton,这三个至少要有一个选为“NO”,全部设为“YES”的话,则在这个面板中,对应的软件没有“更改/删除”的按钮可以点击,即在这里就卸载不了软件了。
那就得自己去注册表里胡搞乱改,把它搞掉了。
Ø设置“软件名称”,“版本号”还有“安装路径”。
GeneralInformation->ProductProperties->NAME,VERSION,INSTALLDIR
Ø关于“ProductCode”和“UpgradeCode”以及版本升级问题。
这两个关乎到版本升级问题,理论上,XP是不允许用户安装两个相同ProductCode的同一个软件的,即时,每一个版本的安装包,都必须有新的ProductCode。
但其实,很多时候,我们在项目的时候,并不是每一次release都是一个新版本,因为有可能只是更改了一点点,不足以作为一个新版本,这是我们可以称为是一个小版本,比如,V1.0.0-》V1.0.1。
我查了一下帮助文档,找到了”ChaningtheProductCode”这篇文章,里面开头有这么一句:
Anupdatethatmeetsthefollowingguidelinesgenerallydoesnotrequireachangeoftheproductcodeandcanbehandledasasmallupdate,oriftheversionistochange,asaminorupgrade。
(详细请按F1,官方文档才是王道)
这句话的意思是,当update属于smallupdate或者minorupgrade的时候,就不用更改productcode,这两者的区别在于,minorupgrade更改了productversion。
除了这两个之外,剩下的一个就是majorupgrade,生成这种安装包的时候,就需要更改productcode和producrversion。
(还是不明白的请看官方帮助文档)
另外,还有个叫做packagecode的东西,当你每次release一个新的安装包的时候,无论是上面哪一个,这个packagecode都会改变,这是IS给安装包自动重新生成的。
不用用户区设置。
这是作为每个release包的唯一区别。
总的来说:
当你生成一个大版本,如V1.0.0->V2.0.0,这是就需要换ProductCode了(方法:
GeneralInformation->ProductProperties->ProductCode,选中它,左下方有个GenerateGUID的按钮,点击它就可以重新生成,记得与Media->Release->PROJECT_ASSISTANT中的ProductCode保持一致,否则在卸载的时候会出现问题),否则就不用更改。
当小版本实现覆盖安装的时候,记得还要在Media->Upgrades->UpdateWindowsInstallerSetup中,common下选中prompt,这样,当你覆盖安装的时候,系统就会提示你是否要覆盖安装,否则则会提示你,已经安装了某个ProductCode的产品,不让覆盖安装。
Ø去掉安装界面还有卸载界面上面的”InstallShieldWizard”等字眼。
GeneralInformation->StringTables
选中你采用的那个语言。
在“Value”列中,将”InstallShieldWizard”这些字眼全部替换掉空格或者其它信息,自己决定。
(注意:
安装还有卸载的时候,进入的第一个界面还有最后退出的界面的”InstallShieldWizard”是去不掉的,因为去掉这些字眼本来就违反了IS的协议,你用别人的东西,肯定要标记一下别人公司的标志)
2.点击Organization
Ø设置Feature(组件)的安装类型
在制作简单的安装软件的过程中,已经提到过类型安装:
Minimal,Custom,Typical.
选择SetupTypes,你会发现无论点击这三个中的任何一个,DefaultFeature都是必选的。
3.点击ApplicationData
Ø如何添加我要打包的文件到工程中
选择FilesandFolders,点击右边的***[INSTALLDIR]这个文件夹,然后在“Sourcecompuoter’sfloders”选中你要加入的文件夹,右边的“Sourcecomputer’sfiles”框栏中就显示这些文件,把这些直接拉到“Destinationcomputer’sfiles”中。
(注意:
如果发现拉入的文件不对,想要删除,则不能在这里删除,而要到Organization->Components下把文件删除,这样才能删的彻底,否则会出错。
另外,加入好文件后,全选这些文件,右击打开属性,选择”AlwaysOverwrite”,这样可以强制覆盖安装。
)
4.点击SystemConfiguration
Ø如何建立桌面和开始程序的快捷方式
像上面图片一样,建完快捷方式后,记得把每个快捷方式的”WorkingDirectory”设置为”[INSTALLDIR]”.否则会出错。
5.点击BehaviorandLogic
Ø怎么定制安装和卸载过程出现的界面
点击InstallScript,IS的installscript在安装的时候首先调用的是OnFirstUIBefore函数,卸载的时候首先调用的是OnMaintUIBefore函数,这两个函数都在BeforeMoveData.而在安装结束时调用的函数是OnFirstUIAfter函数,而卸载结束的时候调用的是OnMaintUIAfter.
Ø如何在卸载的时候不弹出“修改”“修复”“删除”的界面,直接进入删除
在OnMaintUIBefore函数中,从Dlg_Start到Dlg_SdFeatureTree之间的代码全部注释,然后加上nType=REMOVEALL;
Ø如何除去安装和卸载过程中标题中的“InstallShieldWizard”字眼
安装和卸载过程中,第一个出现的界面和最后退出的界面标题的字眼是无法去除的,或者说我不知道怎么去吧,哈…其它界面上的标题可以通过:
在OnFirstUIBefore中添加:
SetTitle(“安装”+IFX_PRODUCT_NAME,0,BACKGROUNDCAPTION);卸载也是一个道理,添加以上语句的函数是:
OnMaintUIBefore
Ø怎么用脚本创建一个卸载快捷方式,如何“完美卸载”
IS自带的建立卸载快捷方式(ProjectAAssistant->ApplicationShortcuts->Createanuninstallationshortcut)是有问题的,会出现卸载不完全的现象。
解决方法是写脚本:
InstallScript->AfterMoreData->OnFirstUIAfter中添加:
STRINGszFile;
NUMBERnResult;
szFile=UNINSTALL_STRING+“/UNINSTALL”;
nResult=StrFind(szFile,”.exe”);
if(nResult>=0)then
StrSub(szMsg1,szFile,0,nResult+4);
StrSub(szMsg2,szFile,nResult+4,200);
LongPathToQuote(szMsg1,FALSE);
LongPathToQuote(szMsg2,FALSE);
szFile=“\”+szMsg1+“\”+szMsg2;
endif;
AddFolderIcon(FOLDER_PROGRAMS^“AliProbe”,“UninstallAliProbe”,szFile,WINDIR,WINDIR^“System32\\msiexec.exe”,0,REPLACE);
然后在OnMaintUIAfter()中添加:
//删除开始所有程序中的AliProbe文件夹
DeleteProgramFolder(“AliProbe”);
//删除桌面上的快捷方式
STRINGszItemName=“AliProbe”;
STRINGszProgramFolder=FOLDER_DESKTOP;
DeleteFolderIcon(szProgramFolder,szItemName);
//删除安装目录文件夹
DeleteProgramFolder(TARGETDIR);
Ø向注册表写入安装路径
prototypeAliprobeReg();//声明函数
functionAliprobeReg()
numbernRootKey,nType,nSize;
stringszKey,szNumName,szNumValue,szClass;
begin
//修改注册表
nRootKey=HKEY_LOCAL_MACHINE;
RegDBSetDefaultRoot(nRootKey);//置根为nRootKey
//注册子项
szKey="SOFTWARE\\Aliprobe\\";
ifRegDBKeyExist(szKey)<0then//不存在“SOFTWARE\\Aliprobe”,创建这个项
RegDBCreateKeyEx(szKey,"");
endif;
//初始化每个键的公共值
nType=REGDB_STRING;
nSize=-1;
//注册安装路径
szNumName="PATH";
szNumValue=TARGETDIR;
RegDBSetKeyValueEx(szKey,szNumName,nType,szNumValue,nSize);
end;
在OnInstallFilesActionAfter()中调用上面的函数。
Ø安装结束后启动进程和readme文件
在OnFirstUIAfter()中添加:
szMsg1="AliProbe已经安装完成";
szMsg2="";
bOpt1=TRUE;
bOpt2=TRUE;
szOption1="打开readme文件";
//szOption2="启动Aliprobe";
szOption2="";
nResult=SdFinish(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);
if(bOpt1)then
if(FindFile(TARGETDIR,"readme.txt",szFile)=0)then
LaunchApp(WINDIR^"Notepad.exe",TARGETDIR^"readme.txt");
endif;
endif;
if(bOpt2)then
if(FindFile(TARGETDIR,"AliProbe.exe",szFile)=0)then
LaunchApp(TARGETDIR^"AliProbe.exe","");
endif;
endif;
6.点击Media
Ø对于小版本,提示覆盖安装
当小版本更新的时候,由于ProductCode没有更改,所以,必须设置让它提示升级安装。
选择Upgrades->UpgradeWindowInstallerSetup,选择Common,勾上prompt
Ø如何更改安装包的名字,不要默认的Setup.exe
Release->PROJECT_ASSISTANT
修改Setupfilename就可以了。
另外,ProductName和ProductVersion也要做相应的修改,ProductCode和UpgradeCode要保持和GeneralInformation->ProductProperties的ProductCode和UpgradeCode要保持一致,否则会出现卸载失败。
五.其它细节注意。
1.Cannotrenamedirectory或ErrorCode=-1014
关闭工程release的目标文件夹,即**/**/../Disk,这个文件夹,此时很有可能因为它开着而导致错误。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Installshield 制作安装包心得 制作 安装 心得