用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM