【发布时间】:2011-12-02 16:12:49
【问题描述】:
我正在尝试以 x86-64 位架构安装在 Visual Studio 2008 中生成的 Web 设置项目,当我尝试将其安装在 Windows 2003 服务器中时,x64 表示无法安装并且设置退出。
我检查了管理工具中的事件日志,发现一条一般错误消息。后来在 msiexec.exe 中使用详细日志记录我发现了这个:
(UNKNOWN) La acción se inició a las 08:32:22: WEBCA_EvaluateURLsNoFail.
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Custom Action is starting...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: CoInitializeEx - COM initialization Apartment Threaded...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Enumerating table using SQL statement: 'SELECT * FROM `_UrlToDir`'
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Calling MsiGetActiveDatabase...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: MsiDatabaseOpenViewW - Prepare Database to view table...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: TMsiViewExecute - Open Database view on table...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: MsiRecordGetStringW - Fetching value...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: MsiRecordGetStringW - Getting value from column '1'...
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Getting App Root for Url Property: TARGETURL
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Getting AppRoot From Url key 'TARGETURL'.
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: MsiGetPropertyW - Determine size of property 'TARGETSITE'
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Property 'TARGETSITE' retrieved with value ''.
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: RESULT:
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: FAILED: -2147024809
(UNKNOWN) ERROR : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Custom Action failed with code: '87'
(UNKNOWN) INFO : [12/02/2011 08:32:22:609] [EvaluateURLsNoFail ]: Custom Action completed with return code: '87'
(UNKNOWN) DEBUG: Error 2769: Custom Action WEBCA_EvaluateURLsNoFail did not close 1 MSIHANDLEs.
任何想法如何解决这个问题?
更新(具体问题来源)
查询 SELECT * FROM '_UrlToDir' 检索 IIS 元数据库配置 LM/W3SVC/1/ROOT/3001 的默认值。问题在于 MSI Websetup 项目始终假定默认网站在您的元数据库中具有 1 作为 id,如果由于任何原因此配置不存在或已损坏,则会发生错误。
在我的具体情况下,出现问题是因为我安装了 Crystal Reports 2008 Runtime,后来又在我的生产 Web 服务器中安装了 WSUS 服务器。
扣除发生的事情(因为我没有更多信息),WSUS 将我当前正在运行的 Web 服务器配置实例移动到另一个 id(不知道为什么需要这样做),并且显然没有检测到配置Crystal Reports 安装程序插入元数据库,结果是我以前的网站的部分配置迁移到另一个 id,WSUS 插入了他自己的 id(顺便说一句不是 id 1)并保留 id 1 与损坏的配置信息。
可能的解决方案
使用 IIS 6 资源工具包中包含的元数据库资源管理器查找无效 ID 并尝试将其删除,然后使用 IIS 管理员脚本尝试使用以下命令将运行配置移回 id 1:
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs STOP_SERVER W3SVC/[OLD_ID]
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs MOVE W3SVC/[OLD_ID] W3SVC/[NEW_ID]
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs START_SERVER W3SVC/[NEW_ID]
我真的很害怕在这一点上会变得非常丑陋,我会在将来的某个时候尝试,但不是现在。
【问题讨论】:
标签: asp.net iis-6 windows-installer windows-server-2003 crystal-reports-2008