




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Installshield进阶指南1 说明(适用范围)阅读对象:对IS有一定基础的使用者。适用版本:IS10IS12目的 :本手册为例子工程Example Project工程的配套文档,文档中的具体代码或设置可在Example Project中看到。本手册使用is 12中的Windows Installer-Installscript MSI Project作为安装讲解工程。2 实例说明2.1 修改环境变量2.1.1 利用“Enviornment Variables”视图修改环境变量可以在Installation Designer界面的“System Configuration”“Enviornment Variables”节点中修改环境变量,如图:要创建一个新的环境变量或者修改该现有的环境变量值:1、打开Environment Variables视图2、右键单击EnvironmentVariables并选择AddEnvironment Variable。InstallShield将添加一个默认名为 NewEnvironmentVariable x的新环境变量。输入你想创建、修改或删除的环境变量名。3、在右边窗口的环境变量属性表中编辑属性环境变量属性通过配置环境变量属性,你可以指定你想在目标系统上如何编辑现有的环境变量或者创建一个新变量。每一个环境变量的描述如下:属性描述Component选择你想把这个环境变量关联的构件。如果选择的构件安装或者卸载,根据你在环境变量的属性表中的设置,目标系统上环境变量会被创建、修改或删除。单击省略号按钮打开浏览构件对话框。Value输入这个环境变量的路径或值。你可以使用预定义的路径,象INSTALLDIRBin。要输入多个路径,使用分号分隔提示:如果OnInstall 属性设置为Remove,Value属性会被清除并且变成只读。On Install指明在关联的功能部件在目标系统安装时的动作。选择下列中的一个: Set-它与Placement属性协同工作,把Value设置成一个现有的环境变量。这个选项将在目标系统中没有指定的环境变量时创建一个环境变量,并且在安装期间进行设置。如果目标系统上已有指定的环境变量,它会在安装期间被设置。 Create-如果目标系统上没有指定的环境变量,将在目标系统上创建指定的环境变量并设置这个变量的值 Remove-从目标系统上删除环境变量Placement指明相对于现有的环境变量的值如何放置Value区域内的数据。选择下列选项中的一个: Append-这个选项把新值追加到现有环境变量值的后面 Prefix-这个选项把新值放置到现有环境变量值的最前面 Replace-这个选项用新值取代环境变量的原有值提示:如果你在OnInstall属性中选择了Create并且指定的环境变量在目标系统上已经存在,这个Placement属性指明这个新值如何添加到现有的环境变量中或者是否替代现有的环境变量值。尽管这样,如果指定的环境变量如果在目标系统上不存在,它将被创建并且Placement的选项会被忽略。On Uninstall指明在关联的功能部件卸载时,环境变量是否从系统中删除。选择下面选项之一: Remove-这个选项是在关联的功能部件卸载时从目标系统上删除环境变量。如果On Install属性中设置的是Create,删除是删除整个环境变量。如果On Install属性中设置的是Set,删除是只删除变量值中追加的部分。 Leave-这个选项是在关联的功能部件删除时在系统中保留环境变量或者追加的值。Type如果目标系统是Windows NT 或者Windows 2000或者更高,这个属性指明环境变量的使用方式,是整个系统环境变量还是用户环境变量。如果目标系统是Windows9x,这个属性将被忽略。选择下列选项之一: System-创建修改或删除指定系统环境变量 User-创建修改或删除用户环境变量。这个环境变量针对于那个用户运行的安装程序,即谁登录的系统。2.1.2 利用脚本修改环境变量在Behavior and LogicIntallscript视图,可以直接在脚本中设置,修改,删除环境变量。系统环境变量的值保存在注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerEnvironment中;用户环境变量的值保存在注册表HKEY_CURRENT_USEREnvironment中。在脚本中实际上即是对此二项下的各种值进行的操作。例子代码:(该代码修改的是系统环境变量,如要修改用户级变量,替换为szKey=Environment;RegDBSetDefaultRoot(HKEY_CURRENT_USER);即可)#define WM_WININICHANGE 0x001A#define HWND_BROADCAST 0xffffNUMBER nResult;STRING szKey, szEnv;POINTER pEnv;beginszKey = SYSTEMCurrentControlSetControlSessionManagerEnvironment;)RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);nResult=RegDBSetKeyValueEx(szKey,Fame,REGDB_STRING,C:test,-1);if (nResult 0) thenMessageBox(Failed to Set Environment Variable,WARNING);elseMessageBox(Successfully Set Environment Variable,INFORMATION);/ Flush the NT registry to all applications.szEnv = Environment;pEnv = &szEnv;SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );endif;/RebootDialog(,SYS_BOOTMACHINE);end;2.2 调用外部DLL在Behavior and LogicIntallscript视图,通过脚本实现调用外部DLL的功能。1、 在is脚本开头中声明需要调用的函数 如:prototype BOOL MyDllFileName.MyFunc(STRING, STRING, STRING);在InstallShield中如果想改变参数的值,就用传引用的方法,在STRING前加上BYREF。2、 在需要调用函数的function中加载DLL,如:UseDLL(SUPPORTDIRSimpleDll.dll);nResult= ShowDlg(szDir);UnUseDLL (SUPPORTDIRSimpleDll.dll)以本工程中使用到的Simple.dll中三个函数为例:(具体代码参见例子工程中)3、 有些时候有可能调试会报错:错误号码:0x80040704描述:DLL函数调用导致错误的堆栈可能是原型出错:MyDllFileName.MyFunc安装程序将立即终止。解决方法:prototype cdecl BOOL MyDllFileName.MyFunc(STRING, STRING, STRING);可参考网络资源:/forum/dispbbs.asp?boardID=3&ID=285266&page=12.3 修改XML文件2.3.1 利用“XML File Changes”视图修改XML文件可以在Installation Designer界面的“System Configuration”“XML File Changes”节点中修改XML文件,参见“Installshield入门指南”中相关章节。本文介绍一下在此节点中用变量给元素属性赋值的方法。假设我们要实现用自定义变量TESTPATH的值赋给value属性,可以如下图中设置,然后在脚本中加上MsiSetProperty(ISMSI_HANDLE, TESTPATH,TARGETDIR);即可将安装路径赋值给TESTPATH,安装完成后,value属性的值就被替换为安装路径了。(但目前发现通过此节点修改之后,原来的congfig文件第一行被改为:,目前尚不清楚原因)。2.3.2 利用脚本修改XML文件在Behavior and LogicIntallscript视图,可以直接在脚本中读取、添加、修改XML文件中的元素、属性的值。以例子工程中的代码为例:本段代码将用户选择的安装路径赋值给value属性,具体代码见例子工程用户可以在脚本中创建、替换、添加、删除XML文件中的字段。附:XML文件部分操作代码(供参考)prototype CreateXml(STRING); prototype DelteXmlNode(STRING); prototype UpdateXmlNode(STRING); prototype InsertXmlNode(STRING);/创建一个XML文档function CreateXml(szFile) OBJECT objXml; STRING strXML;begin /开始创建XML文档 set objXml = CreateObject(MSXML.DOMDocument);/创建一个DOM对象 if (IsObject(objXml) = FALSE ) then MessageBox(出错,系统不支持使用DOM对象,SEVERE); endif; objXml.async = FALSE; /rn是回车换行 让内容更美观点 呵呵 strXML = rn + rn +One1.0rn +Two2.0rn +Three3.0rn +rn; objXml.loadXML(strXML);/可以用片段很容易就弄一个XML文档出来 objXml.save(szFile); /保存 set objXml = NOTHING;end;/插入一个节点值function InsertXmlNode(szFile) OBJECT objXml; OBJECT objRoot,objNode; OBJECT objBook,objTitle,objAttributeNode;begin set objXml = CreateObject(MSXML.DOMDocument);/创建一个DOM对象 if (IsObject(objXml) = FALSE ) then MessageBox(出错,系统不支持使用DOM对象,SEVERE); endif; objXml.async = FALSE; objXml.load(szFile);/加载原有XML文档 set objRoot = objXml.documentElement; /取根节点 set objBook = objXml.CreateElement(BOOK); /objBook.text = Free; set objTitle = objXml.CreateElement(TITLE); objTitle.text = 4; set objAttributeNode = objXml.CreateNode(attribute,src,); objAttributeNode.text = ww; objTitle.SetAttributeNode(objAttributeNode); /添加属性节点 objBook.appendChild(objTitle); objRoot.appendChild(objBook); /添加节点 objXml.save(szFile); /保存 set objBook = NOTHING; set objTitle = NOTHING; set objXml = NOTHING; end;/更新某个节点值function UpdateXmlNode(szFile) OBJECT objXml; OBJECT objRoot,objNode; begin set objXml = CreateObject(MSXML.DOMDocument);/创建一个DOM对象 if (IsObject(objXml) = FALSE ) then MessageBox(出错,系统不支持使用DOM对象,SEVERE); endif; objXml.async = FALSE; objXml.load(szFile);/加载原有XML文档 set objRoot = objXml.documentElement; /取根节点 /MessageBox(objRoot.xml,SEVERE); /输出所有节点测试 set objNode = objRoot.selectSingleNode(BOOK/TITLE);/查找TITLE节点 /MessageBox(objNode.text,SEVERE); /输出他的值 objNode.text = Hello;/改变值 objXml.save(szFile); /保存 set objNode = NOTHING; set objXml = NOTHING; end;/删除某个节点function DelteXmlNode(szFile) OBJECT objXml; OBJECT objRoot,objNode; begin set objXml = CreateObject(MSXML.DOMDocument);/创建一个DOM对象 if (IsObject(objXml) = FALSE ) then MessageBox(出错,系统不支持使用DOM对象,SEVERE); endif; objXml.async = FALSE; objXml.load(szFile);/加载原有XML文档 set objRoot = objXml.documentElement; /取根节点 /MessageBox(objRoot.xml,SEVERE); /输出所有节点测试 set objNode = objRoot.selectSingleNode(BOOK/TITLE);/查找TITLE节点 /MessageBox(objNode.text,SEVERE); /输出他的值 objNode.ParentNode.removeChild(objNode);/删除该节点 objXml.save(szFile); /保存 set objNode = NOTHING; set objXml = NOTHING; end;2.4 修改INI文件2.4.1 利用“INI File Changes”视图修改ini文件可以在Installation Designer界面的“Server Configuration”“INI File Changes”节点中修改ini文件,如图:更改 .ini 文件数据初始化(.ini)文件适合作为应用程序存储和读取的数据库。一些 .ini文件,象Boot.ini和Wininit.ini是操作系统使用的。INI文件更改视图可以让你配置在目标系统上需要修改的.ini文件。尽管你可以编辑目标系统上任意.ini文件,但是不推荐编辑系统的.ini文件。要编辑一个 .ini文件:1、创建一个.ini文件引用2、添加一个段落到.ini文件中3、添加一个关键词到.ini 文件在你创建一个.ini的文件引用时,你必须最少建立一个构件。如果在创建.ini文件引用时没有构件,那么显示的Create a NewComponent 对话框中将让你创建一个构件。创建 .ini文件引用要更改一个.ini文件的第一步是创建一个到你想要编辑的文件的引用。为了这个,你将需要知道你要编辑的文件的名字和位置。如果你指定的位置没有文件,那么这个文件不会发生任何改变。要创建一个到.ini文件的引用:1、打开INI File Changes视图2、右键单击INI Files并从快捷菜单中选择Add INI File3、要为你选定的条目提供一个新名称,按F2,并输入新名称即可。这个名字只是为引用使用的并不会显示给最终用户。4、在属性表中编辑这个.ini文件的属性在你完成创建一个到.ini文件的引用后你可以进入到下一步,向.ini文件中添加一个段落。.ini文件属性在安装程序中添加一个.ini文件后,设置下列属性:属性描述Display Name输入.ini文件的名称,包括扩展名,例如,你想编辑的文件是-INIFile.ini。你输入的这个值将添加到默认语言的字符串表中。Component选择你想与这个.ini文件关联的构件。单击浏览按钮可以显示安装程序中的所有构件列表。如果当你创建.ini文件时没有构件,将在安装程序中添加一个新构件并且这个.ini文件与之关联Target输入你想编辑的.ini文件的文件夹路径,或者单击浏览按钮来定位这个目录。你可以从列表中选择一个Windows Installer特性文件夹。可以使用反斜杠来分隔子文件夹层次-ProgramFilesFolderMyCompany在.ini文件中添加一个段落一旦你指定了一个想要编辑的.ini文件,你可以移动到第二步:指定文件中的那些部分需要更改。这个.ini文件被关键词分成了几个段落,每个段落都包含自己的关键词。每个关键字是用一对方括号包括起来标记的,例如SectionName要配置一个.ini文件的段落:1、打开INI File Changes视图2、建立到一个.ini文件的引用3、在INI Files窗口中,右键单击你想要添加内容的.ini文件,并选择Add Section4、给这个段落设置一个显示名。你在Display Name属性中输入的名称应该与你相编辑的段落的名称匹配。为了容易定位,这个名字会存储在安装项目的字符串表里。不必要加方括号。当你在.ini文件中添加一个段落后,你可以添加一个关键词。向.ini文件中添加关键词关键词是一个.ini文件中的最底层结构。这些关键词所存储的数据对于一个应用程序的使用必须是连续的。要向一个.ini文件中添加关键词:1、打开INI File Changes视图2、建立一个.ini文件及要添加的段落名3、在INI Files窗口中,右键单击一个段落并选择Add Keyword4、为选择的关键词输入一个内部用名。这个内部名称会不显示给最终用户,只是用与你的引用。5、在属性表中编辑关键词属性。关键词属性属性描述Display Name输入你想编辑的关键词的名称,它将出现在目标的.ini文件中。这个值同时存储在你的安装项目的字符串表中Aciton选择你想要执行的动作。这些动作将定义你如果编辑这个.ini文件Replace Old Value-选择这个选项你将用新的值来替代原有值。如果以前没有值存在,那么将添加一个新值。Do Not Overwrite-选择这个选项是在目标文件中不存在指定的关键词是才添加新的关键词,如果.ini文件中已经有了相应的关键词那么将不会做任何改变。Append Tag-如果你想在一个.ini值添加一个补充选择这个选项。标志是用逗号分隔的。如果你想追加一个标记的关键词不存在,那么将不会做任何改变。Remove Whole Value-如果你想删除整个关键词和它的值那么选择这个选项。如果指定的关键词不存在,不会做任何改变。如果选择了这个选项,那么在值的部分不需要任何输入。Remove Tag-选择这个选项可以让你从这个.ini文件中删除在value中指定的内容。Data Value输入这个关键词的值。如果你想添加或者追加一个值,在这里输入新值。如果你想删除,输入你想删除的内容。在关键词值得部分你可以使用Windows Installer的属性值。要使用这些,把属性用方括号包括起来。例如INSTALLDIR2.4.2 利用脚本修改ini文件在Behavior and LogicIntallscript视图,可以直接在脚本中读取、添加、修改ini文件中的字段。以例子工程中的代码为例:本段代码将用户选择的安装路径为值动态替换了安装目录中AdvPlant.ini文件中GroupInfo段落中的ServerInfoFilePath的原始值。这里修改的效果与在“INI File Changes”视图中修改是一样的。用户可以使用GetProfString、ReplaceProfString、AddProfString、WriteProfString来读取、替换、添加、删除ini文件中的字段。具体例子可参见installshield帮助文档。2.5 对IIS的Web服务扩展进行配置对IIS基本设置已经在“Installshield入门指南”中介绍,本文主要介绍对IIS的web服务扩展进行配置。进入Installation Designer界面,选择“Server Configuration”“Internet Information Services”节点。右键点击“Web Service Extensions”,选择“Add Web Service Extension Ins”,按下图所示对新建的web服务扩展进行相应设置。(注意:如下图中的设置可以启用ASP.NET支持,但是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 龙岩市2025福建省龙岩市市直事业单位招聘工作人员90人笔试历年参考题库附带答案详解
- 长沙县2025湖南长沙市长沙县妇女联合会招聘1人笔试历年参考题库附带答案详解
- 重庆市2025重庆医科大考核招聘紧缺高层次人才50人笔试历年参考题库附带答案详解
- 赣州市2025江西赣州市综合检验检测院引进高层次人才招聘1人笔试历年参考题库附带答案详解
- 茂名市2025广东茂名滨海新区渔港服务中心招聘工作人员3人笔试历年参考题库附带答案详解
- 福州市2025福建福州市城市规划展示馆招聘合同制多媒体设备管理员笔试历年参考题库附带答案详解
- 四、功 率说课稿初中物理苏科版九年级上册-苏科版2012
- 泰州市2025年江苏泰兴市急救中心招聘劳务派遣驾驶员1人笔试历年参考题库附带答案详解
- 河北省河北省煤田地质局事业单位2025年公开招聘工作人员笔试历年参考题库附带答案详解
- 河北省2025年河北经贸大学选聘工作人员笔试历年参考题库附带答案详解
- 2025年辅警招聘考试试题库及完整答案(历年真题)
- 2025湖北宜昌市不动产交易和登记中心招聘编外聘用人员17人考试参考题库及答案解析
- 2025年高考真题-化学(湖南卷) 含答案
- 学术规范与论文写作讲述课件
- 七年级数学学习·探究·诊断上册
- 实验室内质控记录表格完整
- 基层医疗机构抗菌药物合理使用
- 肾动脉狭窄介入治疗PPT课件(PPT 30页)
- 10kV架空线路设计PPT课件(PPT 69页)
- Q∕GDW 12174-2021 智能量测开关技术规范
- 幼儿园绘本:《小宣传员》 红色故事
评论
0/150
提交评论