InstallShield 2009制作集成.NET Framework 2.0 Service Pack 2的安装包

1       概要

InstallShield 2009安装后Redistributables(可分发组件包)中包括了.Net Framework 2.0 sp1。个别项目要求打包时需要集成.Net Framework 2.0 sp2。下面介绍下手动如何扩展Redistributables,增加自己需要的发布组件包。

 

2       详细过程

2.1     获取.Net Framework 2.0 sp2分发组件包

当然要去Microsoft的官方网站。

http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f&DisplayLang=zh-cn

 

NetFx20SP2_x86.exe,大小23.8 MB

2.2     创建InstallShield Prerequisite文件(*.prq)

在X:/Program Files/InstallShield/2009/SetupPrerequisites目录下保存*.prq文件,它就是utf-8编码的xml文件。创建一个Microsoft .NET Framework 2.0 SP2.prq。

文件说明,主要节点:

<conditions>验证目标机组件包是否存在的条件,可以通过注册表、特殊文件版本等;

<files>本地组件包文件路径;

还有其他一些节点,这里不做详细说明了,建议大家不要自己编写prq文件内容,直接从现有的prq文件复制一个新的Microsoft .NET Framework 2.0 SP2.prq文件即可。至于文件里的内容可以通过InstallShield的界面来修改。

2.3     配置InstallShield Prerequisite

Microsoft .NET Framework 2.0 SP2.prq文件创建好后,进入InstallShield的Redistributables列表后可以看到Microsoft .NET Framework 2.0 SP2组件,当然现在还不能直接使用,需要进入Edit Prerequisite来进行一些必要的配置。一共6个选项卡,其中Conditions、Files to Include非常重要必须配置。

Conditions中包含如何验证目标系统中是否包含Microsoft .NET Framework 2.0 SP2,或指定特殊的操作系统。通过Add按钮来增加验证条件,这里是通过验证注册表里是指定键值(HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v2.0.50727下sp的键值是否等于2)来判断的,具体设置:

  • Select the type of condition:A registry entry has a specified value
  • Properties:
    • Specify the registry key name to check:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v2.0.50727
    • Specify the registry value name to check:SP
    • Specify the registry value data to check:2
  • Check the following registry location on a 64-bit system:Default
  • Run this prerequisite if the specified registry value data has the following relationship to:is not equal to

 

Files to Include中File和Url分别是设置本地组件包的路径,通过http下载的url。

Application to Run设置组件包运行时必要的参数。

Behavior设置组件包安装前权限条件或重启方式。

最后File-Save来保存配置。

 

以上都设置好后之需要把Microsoft .NET Framework 2.0 SP2勾选上,再编译就OK了。打包后的安装程序会通过注册表验证目标机是否有Microsoft .NET Framework 2.0 SP2组件包,没有的话就会提示用户安装。

你可能感兴趣的:(framework)