操作系统:中文Windows 2000专业版+SP3
安装程序制作工具:InstallShield X
服务器操作系统:中文Windows 2003 Server
InstallShield作为一个专业的安装程序制作工具,为用户的应用程序的分发提供了完善的技术解决方案。除了制作传统的安装程序外,还可以制作出适合于局域网和广域网的网络安装程序。
在使用InstallShield为开发的应用程序制作安装程序的时候,在进行编译前,选中“Internet installation”,InstallShield可以为用户生成适用于网络安装的应用程序,并且会为用户生成一个用于网络安装的示例网页。通过查看在这个网页的脚本,我们可以看到InstallShield为用户提供了关键的实现代码,并配有详细的注释说明。用户可以在这个脚本的基础上进行修改,制作出符合自身要求的安装网页。
已往,我们要在Windows 2000 上部署制作好的远程安装程序,只需要在服务器的IIS中通过建立虚拟目录的方式指定好安装程序所在的位置,然后再指定默认的首选页面(即网络安装网页)后就可以实现远程计算机通过网络直接安装服务器上的应用程序了。
但是在Windows 2003中,Microsoft加强了系统内置的IIS6.0的安全管理机制,再沿用这种传统的方法就不能成功的在服务器上部署远程安装程序了。主要表现就是在通过IE打开远程安装程序的网页来执行远程安装程序命令的时候系统会报出编号为-6002的错误。如下图所示:
即使是使用InstallShield在编译网络安装包的时候自动生成的示例安装网页也还是会报出同样的错误。
为了能够在Windows 2003服务器上成功部署远程安装程序,笔者经过一番研究后,找出了一个比较成功的解决方案。
第一步:在Windows 2003服务器的桌面上鼠标右键点击我的电脑,然后依次打开计算机管理->服务和应用程序->Internet信息服务(IIS)管理器,用鼠标右键点击“Internet信息服务(IIS)管理器”,如下图所示:
第二步:选择属性,打开属性窗体,如下图所示:
第三步:先勾选“允许直接编辑配置数据库”(这是为了方便后面要紧行的系统参数修改操作),点击“应用”按钮使这一操作生效;
第四步:点击“MIME类型”按钮,打开窗体,如下图所示:
在这里,记录了IIS能够处理的文件类型。
第五步:点击“新建”按钮,打开窗体如下图所示:
在弹出的窗体中分别输入下列数据:
扩展名
MIME类型
.boot
application/octet-stream
.skin
application/octet-stream
.bin
application/octet-stream
.hdr
application/octet-stream
.ibt
application/octet-stream
.inx
application/octet-stream
.isn
application/octet-stream
.ini
text/plain
第六步:点击“确定”按钮关闭“MIME类型”窗口;
第七步:点击“应用”按钮,再点击点击“确定”按钮关闭属性窗口;
第八步:查找系统配置文件\WINDOWS\system32\inetsrv\metabase.xml,用文本编辑器打开对其进行编辑操作;
第九步:在metabase.xml查找“AspMaxRequestEntityAllowed”字段,这里记录的是系统允许的实体请求的大小,因为笔者的安装程序的大小在60M左右,所以修改后面的数值为“81920000”,保存该文件,结束编辑;
最后一步,为了使前面的所有操作生效请重新启动IIS。
分析:IIS 早期版本包含通配符 MIME 映射,允许 IIS 处理任何文件而无需考虑扩展名。IIS 6.0 不包含该通配符 MIME 映射,不能处理在 IIS 元数据库中的 MimeMap 节点以外定义的任何类型的扩展名。
可以看出,这一解决方案的核心就是通过增加Web服务器上的MIME类型定义,使得IIS6.0能够处理InstallShield的文件类型,进而实现在配置了IIS6.0的Windows 2003服务器上实现成功部署远程安装程序的。