installshield详细制作说明_第1页
installshield详细制作说明_第2页
installshield详细制作说明_第3页
installshield详细制作说明_第4页
installshield详细制作说明_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

虽然网上关于 InstallShield 的制作说明已经很多,但是看的时候还是会有些晕乎乎的,不得 不说很复杂。前段时候做了一次,后面需要升级,在重新做的时候发现有些地方自己又忘 了,所以有必须将自己看的教程和实际操作的体会结合起来,认真的写个特别详细的制作 说明,使步骤尽可能简化清晰,为了自己也为其他同仁。各位可以先下载已做好的安装包, 看看是否符合你的需求。 一、在制作安装包前,先整理一下安装文件 先来看“先决条件安装文件” ,这里我们用来存放运行该产品需要的基本环境(比如:Net Framework、数据库等 )的安装文件。另外还放了图标和许可协议,制作的时候需要,放一 起便于管理。 再来看看“XX 软件” ,可以看看 QQ 在安装后的开始菜单里,会先有腾讯软件-QQ2013- QQ 这样的目录结构,这样的结构使得一个公司的产品放在一起便于用户查看。所以我也 采用这种结构来先整理目录结构,这个结构也是用户安装产品后的目录结构。 上面 APP_1 和 APP_2 是独立的应用分开放,外面的数据库配置是公用部分放最外面。当然, “XX 产品”里面的目录需要根据你实际情况来决定。不过,在你制作安装包前,一直要试 一下各个 exe 程序能不能正常运行,否则做好后运行不了,找不到原因就麻烦了,毕竟快 捷方式只是个链接。 这里说明一下为什么会有这个 DataBaseSetting.exe 呢,因为我们的产品可能需要新建数据 库、需要修改注册表等操作,但是用 InstallShield 来做这些,对于不熟悉的人来说还是很麻 烦的,或许就不能做,所以还是用 C#写了个小程序来做这些工作要简单的多,只是要多点 下按钮,但更灵活。 二、新建一个“InstallScript MSI Project”工程 三、在引导条上配置基本属性 Project Assistant 是类似于界面操作 【Project Assistant】-【Application Information】,输入公司名,产品名,版本号,网址。再 修改卸载图标,这个图标是将在【控制面板】的【添加或删除程序】看到。 【Project Assistan】-【Installation Requirements】, 这里你可以指定运行的系统和先决条件, 我试过限制系统,应用没试过,一般这里可以都不修改。 四、设置安装的组件 Component 打开【Installation Designer】-【Component】面板,先删掉默认的 DefaultComponet,下面 开始逐个添加 Component。 右击【Component 】新增【New Component】,命名为 APP_1,与上面文件夹名对应,这里是 不可以用中文的。 这里先指定 APP_1 的安装路径,点击 APP_1,选择右侧【Destination】 ,会弹出【Browse for Directory】 ,这里可以看到【ProgramFilesFolder】就是指 C 盘下的 Program File。现在的目 录比较乱,先删除掉【My Company Name】和【My ProductName】,然后再在【XX 产品】 下新建【APP_1】 ,这个路径就是 APP_1 中的文件将要安装到的路径了。 注意,这里你点击【XX 产品】 ,会看到 INSTALLDIR,但不能修改,你可以点击【Installation Designer】-【Installation Information】-【General Information】,查看到 INSTALLDIR,也是可 修改的。你可能还会看到变量 TARGETDIR,这个是安装过程中让用户选择的安装路径。而在 InstallScript MSI 和 Basic MSI 工程中,安装路径变量是 INSTALLDIR。 然后选择 Files,在右侧面板中点击【Add】, 添加文件,可以选择也可以直接拖进来。 同样,新增【APP_2】组件,与上面一样也要指定 Destination。 然后添加文件,这里我故意多加了个 Folder 的文件夹,上面的单目录结构,直接拖进去就 可以了,但是多目录结构是不行的,需要右击选择【Dynamic File Linking】,然后打开 【Modify Dynamic Links】面板,再点击【New Link】,打开【Dynamic File Link Settings】面板, 然后点击【Browse】, 选择 App_2 的文件夹,再确定就添加成功了。 还有一些和 APP1、APP2 同级的文件放哪呢,我们再新建一个 ROOT 的 Component 用来链 接它们。 这里我们不需要指定 destination 了,因为这些文件是需要装在【XX 产品】下的。 五、创建快捷方式 打开【Installation Designer】-【Component】面板,这里将创建 APP1、APP2 的桌面快捷方 式,和 APP1、APP2 、Root 的开始菜单快捷方式。 点击【APP_1】的【Shortcuts】 上图【Programs Menu】即对应的”所有程序”, 【Desktop 】即桌面。 右击【Programs Menu】,选择【New Folder】来新建结构”XX 公司-XX 产品”。然后,再右 击【XX 产品】 ,选择【New Shortcut】, 找到 DemoApp_1.exe,点击【Open】,即会创建快捷方 式。然后可以通过右击选择【Rename】来修改名称,通过 【Change shortcut icon】来修改 快捷图标。 同样,按照上面的步骤来新建其他的快捷方式。但是你在创建 APP_2 的快捷方式的时候, 你会发现找不到 APP_2.exe,这是因为 APP_2 是通过动态链接加入进来的,所以需要重新在 【File】下,将原来的 APP_2.exe 的链接单独加进来。右击不能删除,直接将 APP_2 拖进来 覆盖就可以了,图标和之前不一样了。 这里 DataBaseSetting.exe 我没有创建桌面快捷指示创建了开始菜单,避免桌面图标过多, 具体根据实际情况。 最后,我们在跳转到面板【Project Assistant】-【Application Shortcuts】, 点击左侧的 【Create an uninstallation shortcut】即会创建一个卸载的快捷方式。 在回到【Installation Designer】-【Component】面板,会看到多了一个 【NewComponent1】 ,这个组件就是卸载程序的组件,我们先把名字改成 Uninstall,把快捷 方式的 nameh 改成中文。 还有把卸载的 Display Name 也需要修改掉,直接改好像总是不起作用,直接点击【】打 开 Select String 面板,将原来的删除掉,新增一个 String。 六、创建特性 Features 打开【Installation Designer】-【Organization 】-【 Feature】,在这里我们将创建特性 Feature,我们经常安装程序的时候会看到用户可选择的安装项,这些其实就是 Feature,安装 包的安装就是针对 Feature 来安装的。上面我们已经建好了 Component,这里继续为每一个 component 建一个 Feature。 删除掉默认的 DefaultFeature,在新建 Feature. 这里和 component 一样不能用中文,但你可 以把右侧的 Display Name 修改为中文,这就是让用户勾选时,显示的名字 另外,Root 和 Uninstall 这两个 Features,我们是不打算让用户选择安装的,而是默认就会装 的,所以把这两个 Features 的 Display 设置为 Not Visible 接下来就是要让这些 Feature 与 Component 关联起来。 打开【Installation Designer】-【Organization】-【Setup Design】面板 选中 APP_1,右击选择【Associate Component】,然后再弹出的对话框中选则 APP_1 的 Component,这样就关联上了。 到这里你可以先编译一下看看效果了,点第一个红色按钮,编译,第二个将打开编译后生 成文件所在文件夹。点击“setup.exe”就可以安装了。如果你重新点击【build】 ,如果提示 错误,可能是你没有把生成的 setup 所在的文件夹关闭掉。 安装已经基本成型了,但是这种皮肤、安装步骤都不一定符合我们实际的需求,所以我们 都会去修改定制,下面说一下我的修改内容。 七、皮肤 打开【Installation Designer】-【User Interface】-【Dialogs】面板 点击【Dialogs】 ,可以看到 Skins,这就是各种不同的皮肤,这里我改为“BlueTC” 下面的【All Dialogs】 ,就是我们在安装过程中所看到的一个个对话框 八、许可协议 打开【Installation Designer】-【Behavior and Logic】-【Support Files/Billboards】面板 这里【Language Independent】是指的设置将在任何语言下都会起作用相当于默认,下面还 有【中文(简体)】 ,就相当于分支,只有中文下起作用。这里我们就只做通用的,在 【Language Independent】 ,添加“软件许可协议.txt”文件。 然后,再点击【Disk1】,这里我们存放一些运行系统所需的先决条件,这些文件是不会打包 到 setup.exe 里面,而是跟 setup.exe 平级的,因为这些条件不是每台机器都需要的,也不 属于产品内的东西。 九、安装脚本 这部分是最复杂,也是最重要的。打开【Installation Designer】-【Behavior and Logic】- 【InstallScript 】面板 脚本事件主要有三大类:Before Move Data(安装数据前)、Move Data(安装数据过程中) 、 After Move Data(安装数据后)。 OnBegin:在初始化后,被调用 OnFirstUIBefore:第一次安装时,在复制安装数据之前触发的事件,更改这个事件的脚本可 自定义安装步骤(一般我们都是修改这个) OnMainUIBefore:在修改或卸载时,在复制安装数据之前触发的事件,例如安装程序在安装 时添加了服务,在卸载时安装程序不会将此服务反安装,这就需要脚本删除服务。 OnSQLLogin:Ms SQL SERVER 数据库安装登录函数。 MoveData:一般很少有人会去改 OnFirstUIAfter: 第一次安装时,在复制安装数据之后触发的事件,例如有些地方需要设置 路径,在安装前路径不存在,必须安装后才能设置。 OnMainUIAfter: 在修改或卸载时,在修改或卸载数据之后触发的事件 OnEnd:在安装完成之后触发的事件,即点击【完成】按钮后触发的事件。 我们先写许可协议界面,可以看到现在脚本是空的。在右侧,将下拉列表选为 【BeforeMoveData】 【OnBegin】 。这里注意不要看当前是 OnBegin,就不选了,一定要选一 下,才会触发代码生成。begin 与 end 之间的内容就是我们要具体要执行的动作了。 function OnBegin() begin /禁用上一步 Disable(BACKBUTTON); /判断安装程序处于何种状态,安装、修复、重新安装或卸载状态,后三者属于 MAINTENANCE 状态,因此判断只有在正常安装的状态下才显示许可协议 if(!MAINTENANCE)then /TRUE 表示默认选中接受协议 SdLicense2(“软件许可协议“,“,“,SUPPORTDIR“ 软件许可协议 .txt“,TRUE); endif; end; SdLicense2(szTitle,szOpt1,szOpt2,szLicenseFile,bLicenseAccepted); 参数 szTitle: 界面左上角的标题,填” 则默认为”License Agreement” 参数 szOpt1、szOpt2: 两个选项 “同意”和“不同意” 。默认值 “I accept the terms of the license agreement”和“I do not accept the terms of the license agreement” 参数 szLicenseFile:指定需要显示的文档,包含路径和带扩展名的文档名。 “软件许可协议. txt”上面放在了 supportfile 下了,这个路径在 Installshield 里有专门的静态变量,即 SUPPORTDIR,后面再加上文件名,用来连接,文件名需要加引号 这里细说一下 SdLicense2,这个你可以去【User Interface】-【Dialogs】,下面了一堆的对话 框,你也可以自定义对话框。所以上面 SdLicense2 直接就是对话框的名字,这种用法就跟 构造器一样,那参数呢,你可以看到对话框右侧下方,有简单说明,你点击那个链接就会 打开 API 文档了,那里会详细解释每个字段的含义。 下面在 OnFirstUIBefore 中添加先决条件和安装路径,点击下拉列表生成代码 如果上面你已经试过编译,你会发现安装的步骤还挺多的,其实每一个步骤都对应着生成 的代码中的 Dlg_XXXXXX,有很多可能你都不需要的,下面是我修改后的代码。主要就是检查 是否安装了 NetFramework,MySQL,没有则安装,另外就是让用户指定要安装的 Feature。Dlg_XXXXXX 是按顺序执行的,当然你也可以看到通过 goto 可以跳转。 function OnFirstUIBefore() NUMBER nResult, nSetupType, nvSize, nUser; STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile; STRING szLicenseFile; BOOL bCustom, bIgnore1, bIgnore2; STRING SETUPEXEDIRMAX_PATH + 1; /获取安装程序 Setup.exe 自身所在的路径 NUMBER nBuffer; / local buffer-size variable STRING svMsiexec,svMsiPackage,svParam; begin if( REMOVEONLY ) then Disable( DIALOGCACHE ); szMsg = SdLoadString( IDS_IFX_ERROR_PRODUCT_NOT_INSTALLED_UNINS

温馨提示

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

评论

0/150

提交评论