InstallShield软件打包完整教程

1.1 InstallShield的安装

  InstallShield 2010下载地址  点击这里 ,安装方法网上有很多就不赘述了。

1.2 绿色版安装包的前期准备

如果你需要打包的绿色版软件比较小(1G以内),或者文件结构比较简单,请忽视此段,由于我所要打包的软件体积比较大,最重要的是文件结构比较复杂,内部文件夹嵌套较多,且例如图片,xml等小文件较多,这样 InstallShield软件在打包导入的时候会非常慢,我尝试导入了10多个小时也没有结束就放弃了,所以在这里我建议对文件结构复杂的软件进行压缩处理,压缩方式请转

RAR打包为自解压exe文件教程,得到一个单独的 EXE文件(自解压格式)后进行接下来的操作。

2.1创建新的 Windows Installer | InstallScript MSI Projcet

这种类型的工程既有打包向导,又可以写一点脚本实现自定义操作,比较适合使用。

2.2 打包向导主界面

这里是InstallShield提供的向导主界面,我们是通过点击选择下方的动作条进行操作。

2.3应用程序信息

公司信息,应用程序名称等等,这里没什么好说的。

2.4 安装要求

这里要说一下,大家可能会把这里理解为是安装依赖,但是这里与其说是依赖不如说是安装的前提或要求,这里勾选的环境 会在你双击setup后立即开始检测,并且在不满足条件时,只会对你做相应的提醒(如:请安装Adobe reader6!)后直接结束安装并退出,并没有引导用户安装的选项。明显与我们想将缺少的依赖环境集成引导加以安装的需求不相符,但是考虑到有些人会有这样的需求,也在接下来简单讲一下。

2.4.1 系统安装要求的勾选

对于InstallShield软件已经列出的选项直接勾选就可以,不再赘述。

2.4.2 自定义系统安装要求

对于InstallShield没有列出的我们可以通过左侧 创建一个自定义软件条件 来自行添加,如下图,你可以选择不同的满足条件(如 注册表某一项的值为XXX或 系统的某一路径下存在某一文件等等),这里的选项可以满足自定义几乎所有的安装要求。

2.5安装体系结构

在这里可以新建多个Feature,每一个Feature代表一类安装软件,具体以例子说明,见下面第二张图。

这中类型的图片大家一定很熟悉,这是大多数软件点击自定义安装后出现的界面, 以下图为例,My sql数据库,MuseMail这两个选项就对应两个Feature,也就是上一幅图中的defaultFeature和New_Feature2这两个,然后属于musemail类里面的多个软件就被添加到MuseMail的Feature下,对于MuseMail->初始化工具,则要创建初始化工具的Feature,以此类推。

2.6应用程序文件

在此界面为每一个Feature添加文件。若有多个文件可选择添加文件夹。 这些Feature将是用户自定义安装时选择的对象。

2.7 应用程序快捷方式

在这里添加在上一部分添加的文件中,每一个在你安装后的系统可能用到的文件的快捷方式,建议只添加必须的。右侧可以选择快捷方式出现的位置。

2.8应用程序注册表

在这里可以选择应用程序想要写入注册表的信息,右键添加即可,比较简单。

2.9安装本地化

这一部分用来选择安装语言

2.10构建安装

选择生成安装包。讲到这里比较简单的安装包已经可以打包好了,已经可以点击生成了,选择对应的生成类型即可。

选择安装设计器界面—>应用程序数据—>可再分发,在这里可以选择系统所需的环境,并且在环境不满足的情况下弹出下载安装的提醒。

InstallShield软件已经集成了部分依赖环境,可以勾选添加,并且可以在部署前下载,这样可以添加到安装包中,免除用户在安装过程中下载过程。但是InstallShield中不包含的怎么办呢,接下来来讲自定义依赖环境。

InstallShield提供的依赖环境是以 .prq文件的方式提供的,目录是    X:\..\InstallShield\2010\SetupPrerequisites,在这里有很多.prq文件,自定义不存在的依赖环境就是在网上下载.prq文件,或自己创建

常用prq文件地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<!-- 安装条件:检测注册表 -->
<conditions>
<condition Type="2"
Comparison="2"
Path="HKEY_LOCAL_MACHINE\SOFTWARE\test"
FileName="test"
ReturnValue="1"/>
</conditions>

<!-- 操作系统支持 -->
<operatingsystemconditions>
<!-- Windows XP SP2+ -->
<operatingsystemcondition MajorVersion="5" MinorVersion="1"
PlatformId="2" CSDVersion=""
Bits="1" ProductType="1"
ServicePackMajorMin="2"/>
<!-- Windows Server 2003 -->
<operatingsystemcondition MajorVersion="5" MinorVersion="2"
PlatformId="2" ProductType="2|3"/>
<!-- Windows Server 2003 x64 -->
<operatingsystemcondition MajorVersion="5" MinorVersion="2"
PlatformId="2" Bits="2" ProductType="1"/>
<!-- Windows Vista -->
<operatingsystemcondition MajorVersion="6" MinorVersion="0"
PlatformId="2"/>
<!-- Windows Server 2008 -->
<operatingsystemcondition MajorVersion="6" MinorVersion="0"
PlatformId="2" ProductType="2|3"/>
<!-- Windows 7 / Server 2008 R2 -->
<operatingsystemcondition MajorVersion="6" MinorVersion="0"
PlatformId="2" ProductType="1"/>
</operatingsystemconditions>

<!-- 文件下载配置 -->
<files>
<file LocalFile="<ISProductFolder>\SetupPrerequisites\test\test 3.5\test3.5.exe"
URL="http://download.test.com/download/test3.5.exe"
CheckSum="D481CDA2625D9DD2731A00F482484D86"
FileSize="0,242743296"/>
</files>

<!-- 执行命令配置 -->
<execute file="Helper.exe"
cmdline="/p dotnetfx35.exe /l 1033 /v &quot;/q /norestart&quot;"
cmdlinesilent="/p dotnetfx35.exe /l 1033 /v &quot;/q /norestart&quot;"
returncodetoreboot="1641,3010"
requiresmsiengine="1"/>

<!-- 依赖包属性 -->
<properties Id="{074EE22F-2485-4FED-83D1-AAC36C3D9ED0}"
Description="This prerequisite installs the .NET Framework 3.5 Service Pack 1 full package."
AltPrqURL="http://saturn.installshield.com/is/prerequisites/microsoft .net framework 3.5 sp1.prq"/>

<!-- 重启行为 -->
<behavior Reboot="2"/>
</SetupPrereq>

关键配置说明

配置项 说明
<conditions> 安装前检测条件,如注册表键值
<operatingsystemconditions> 支持的操作系统版本
<files> 需要下载的依赖文件
<execute> 安装执行命令及参数
<properties> 依赖包标识和描述
<behavior> 安装后的重启行为

使用步骤

  1. .prq 文件保存至 InstallShield\SetupPrerequisites 目录
  2. 重启 InstallShield 软件
  3. 应用程序数据 → 可再分发 中勾选该依赖