用VS自带的打包程序打包Web程序,在Win7安装时出现错误1603

     最近用VS2005的打包程序对一个Web程序进行打包,在Win7系统中进行安装,总是出错错误,直接双击安装程序,就弹出:

clip_image002

     在Xp的机器上安装是好的,换另外一台Win7的机器,进行安装,竟然也是好的。由此证明,安装程序肯定是没有问题,有可能是两台机器的设置不同而导致的。但是它又没报具体是什么错误导致的。只好在Windows的系统日志中去找,幸好有相关的记录。

clip_image004

     找到来源为“MsiInstaller”的那条信息,双击

clip_image006

     看到上面显示“安装成功或错误状态:1603”,和其他电脑上安装成功的消息一对比,发现安装成功的返回的是0而不是1603,好,那就在网上搜索安装时返回1603的错误。

      结果别人说这个错误是一个非常抽象的错误,在安装过程中遇到很多问题后都会返回这个错误,根本不具体。最后找到一个外国人的文章,说是启动一下安装程序的日志,你安装的时候,就会在C:\Users\用户名\AppData\Local\Temp中生成一个msi*.log的日志文件。查看这个日志文件,里面有详细的记录。

      一般的电脑在默认的情况下,并不会去记录这个日志文件,需要修改注册表的选项,启动附件中的“命令提示符”,运行以下命令

   1: reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Debug /t REG_DWORD /d 7 /f 
   2:  
   3: reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Logging /t REG_SZ /d voicewarmupx! /f
   4:  

      然后重新启动你的安装程序,它肯定还是有错误,不能安装,不过不要紧,你再查看你的C:\Users\用户名\AppData\Local\Temp中,就会生成一个msi*.log的日志文件。例如,我的电脑上生成的是下面的日志文件:

clip_image008

     打开这个日志文件。查找“return value 3”,如果是中文的操作系统,就查找“返回值 3”,找到后,查看这句话,上面的几行,那里就是具体的错误信息。

clip_image010

    我的上面报的错误是

SetTARGETSITE  CustomAction WEBCA_SetTARGETSITE returned actual error code 1603

    我就搜索这个错误,在这个网站http://social.msdn.microsoft.com/Forums/zh-CN/winformssetup/thread/a62d76f1-1b1f-4609-8779-555cac8329f4找到了一个答案

clip_image012

     解决方法就是把IIS设置成兼容IIS6.我们知道win7系统中的IIS都是7.0及以上版本,我是用VS2005进行打包的,又因为是Web程序,所以它可能需要在IIS6兼容的模式下进行工作。

     我尝试一下,在控制面板中,打开“添加或删除Windows功能”,用两台电脑进行对比,发现,果然能成功安装的电脑中,已经设置了IIS6兼容,不能成功安装的没有设置。我在那台安装失败的电脑上进行了设置,让它兼容IIS6,打上勾即可。

clip_image014

    再重新安装应用程序,安装成功。问题顺利的解决。

需要注意的问题:

1. 大家在查看日志文件的时候,会发现里面有这样的语句:

VSDNETURLMSG = 此安装程序需要 .NET Framework 版本 2.0.50727。请安装该 .NET Framework 版本,然后重新运行此安装程序。可以从 Web 获得 .NET Framework。要立即做此事吗?

Property(C): VSDIISMSG = 此安装程序需要 Internet Information Server 4.0 或更高版本,以及 Windows NT 4.0、Windows 2000 或更高版本。此安装程序无法安装在 Windows 95、Windows 98 或 Windows Me 上。请安装 Internet Information Server,然后重新运行此安装程序。

Property(C): VSDUIANDADVERTISED = 不会安装该公布应用程序,因为它可能不安全。请与管理员联系将程序包的安装用户界面选项更改为基本。

Property(C): VSDNETMSG = 此安装程序需要 .NET Framework 版本 2.0.50727。请安装该 .NET Framework 版本,然后重新运行此安装程序。

Property(C): VSDINVALIDURLMSG = 指定的路径 '[2]' 不可用。Internet Information Server 可能并未运行或者是路径已重定向到另外的计算机。请检查 Internet Services Manager 中虚拟目录的状态。

有很多人就误以为是FrameWork的版本不对,我发现,就算是成功安装,它的日志文件里面也会出现这些信息,这就证明,这不是错误的原因。所以大家在找错误的时候,记得一定要去查找“reutrn value 3”的前面几行,或者是“返回值 3”的前面几行,这才是真正的错误的地方。

2.为了让系统记录安装的日志文件,我们修改了注册表,增加了两个键,用完之后,如果你怕以后产生一些不必要的垃圾日志文件,最后是把这两个键给删掉,以后不让它记录日志文件,删除的方法是,运行以下命令

reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Debug /f

reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer" /v Logging /f

参考文章:

http://blogs.msdn.com/b/astebner/archive/2005/03/29/403575.aspx

http://blogs.msdn.com/b/astebner/archive/2008/02/27/7927123.aspx

http://social.msdn.microsoft.com/Forums/zh-CN/winformssetup/thread/a62d76f1-1b1f-4609-8779-555cac8329f4

http://social.msdn.microsoft.com/Forums/zh-CN/windowsgeneraldevelopmentissues/thread/d01e1909-4ae3-4009-a7a6-81038053695f

原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2498850.html