引言
在最近的项目部署时,需要将含用WEB应用的程序打包到安装包中. 打包之后在各种操作系统上测试安装包是否可用,程序的功能是否正常. 测试的操作系统有Windows XP Professional, SBS 2003, Server 2003, Windows 7 Ultimate/Professional 中文版. 在这些操作系统的安装都很正常. 然而将安装包交给客户安装在Windows 7 Ultimate英文版时,则出现了错误码为1603的错误提示"Error: -1603 Fatal Error during installation".如下图所示:
过程
由于Windows 提示了错误及给出了错误码.于是用Google一通猛找,然而大多数人众口一词: 1. 将UAC降到最低; 2.看%Temp%目录下在的安装日志.然而试完所有找到的资料中提到的方法,均无法解决问题. 后仔细观察安装程,发现在前面的各个步骤都很顺利,但当进行到将要复制完文件时,看到进度条上面出现"Rolling back action:"的字样, 接着就弹出下面的提示:
当时我想,复制完文件后,应该是InstallShield配置程序池,产生IIS站点与建立虚拟目录这一过程. 在其它可安装成功的系统中,此时应该出现一个配置IIS的黑色的DOS窗口的,但现在却没有.而是直接跳到了Finish窗体. 难道是配置IIS时出现了问题? 为了印证我的想法,我又做了一个空的,仅有部署WEB部分的安装包,然后拿到Windows 7 Ultimate 英文版下测试,结果是一样的,同样是出现1603错误.
为了解决此问题,我将在Google中的搜索关键字设成了"installshield IIS 1603", 得到了一些英文结果,其中一个贴子(http://www.nitiative.com/portal/Home/tabid/36/EntryId/15/IIS7-Web-Setup-Install-Error-Status-1603.aspx)引起了我的注意,原文如下:
So, its been a while since I have had the opportunity to blog, but this one was obscure enough that I had to share a little bit of 'know'. Recently I built a staging environment for my company to be able to push our applications through typical deployment 'tiers', and decided that Windows Server 2008 and IIS7 would be a jolly challenge for the web environment. So, off I went installing the minimum amount of information needed in order to deploy our compiled web setup MSIs.
The time came to install the MSI for the web solution, and the setup simply died with the message 'The installer was interrupted before <product> could be installed. You need to restart the installer to try again'. Like a good little instruction follower, I did, to the same result. Upon inspecting the application log files, this knowledge packed message gets displayed:
Windows Installer installed the product. Product Name: <product>. Product Version: <version>. Product Language: 1033. Installation success or error status: 1603.
Long nights and story short, in order to install a web setup project on Windows Server 2008 and IIS 7, you need to install the IIS 6 Metabase Compatibility role service.
I hope this serves you as well as it served me.
其中红色部分字体就是最关键的.于是找到了微软提供的解决办法(http://technet.microsoft.com/zh-cn/library/bb397374%28EXCHG.80%29.aspx):解决办法就是:
若要解决此问题,请在目标计算机上安装 IIS 6 元数据库兼容性组件,然后重新运行 Microsoft Exchange 安装程序。使用服务器管理器工具在 Windows Server 2008 R2 或 Windows Server 中安装 IIS 6.0 管理兼容性组件
依次单击“开始”、“管理工具”和“服务器管理器”。
在导航窗格中,展开“角色”,右键单击“Web 服务器(IIS)”,然后单击“添加角色服务”。
在“选择角色服务”窗格中,向下滚动到“IIS 6 管理兼容性”。
单击以选中“IIS 6 元数据库兼容性”和“IIS 6 管理控制台”复选框。
在“选择角色服务”窗格中,单击“下一步”,然后单击“确认安装选择”窗格中的“安装”。
单击“关闭”退出“添加角色服务”向导。
在 Windows 7 或 Windows Vista 中从控制面板安装 IIS 6.0 管理兼容性组件
依次单击“开始”、“控制面板”、“程序和功能”和“打开或关闭 Windows 功能”。
打开“Internet Information Services”。
打开“Web 管理工具”。
打开“IIS 6.0 管理兼容性”。
选中“IIS 6 元数据库与 IIS 6 配置的兼容性”及“IIS 6 管理控制台”所对应的复选框。
单击“确定”。
结语
1603错误只是一个很抽象的错误提示, 它并不能提示我们到底哪里出现了错误. 因此出现错误时,仍需要根据实际情况进行分析. 如本例.它事实上是由于缺少支持组件而产生的安装过程错误.