4

安装程序的最后一个阶段失败并显示以下消息:

安装未完成

安装程序在 [project] 可以安装之前被中断。您需要重新启动安装程序才能重试。

运行msiexec /i installer.msi /l*vx setup.log在设置日志中显示以下条目:

信息:[...] [ApplyWebFolderProperties]:获取 Web 文件夹属性令牌...
信息:[...] [ApplyWebFolderProperties]:令牌是“/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters”。
信息:[...] [ApplyWebFolderProperties]:获取目录“/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters”的 METADATA_HANDLE。
错误:[...] [ApplyWebFolderProperties]:失败:-2147024893
错误:[...] [ApplyWebFolderProperties]:失败:-2147024893
错误:[...] [ApplyWebFolderProperties]:自定义操作失败,代码:'3'
错误:[...] [ApplyWebFolderProperties]:自定义操作失败,代码:'3'
信息:[...] [ApplyWebFolderProperties]:自定义操作完成,返回代码:'3'

以前使用 Web 设置项目安装相同的 Web 应用程序没有问题。该问题在将 Web 应用程序从 .NET 3.5 SP1 升级到 .NET 4.0 后开始。

4

1 回答 1

2

这个博客条目指出了这个问题:

这让我开始思考,我有一个名为filters的子文件夹。除了重命名过滤器子文件夹外,没有其他任何更改 使其正确完成。我假设您可能对名为 apppools、info 或 1 的文件夹也有同样的问题。

(强调我的)

不幸的是,过滤器是动态数据中的硬编码文件夹名称。如果您查看FilterFactory,似乎没有任何方法可以覆盖该值,因为MetaModel的 FilterFactory 属性未标记为虚拟。如果我们无法更改文件夹名称,那么我们必须考虑修复安装程序...

ApplyWebFolderProperties自定义操作引发了安装程序错误。该操作不是 Windows Installer 内置的,而是由 Web 安装项目添加的。这很有帮助,因为这意味着我们可以使用WiRunSQL.vbs删除它:

cscript WiRunSQL.vbs installer.msi "DELETE FROM CustomAction WHERE Action='WEBCA_ApplyWebFolderProperties'" 

请注意,ApplyWebFolderProperties的实际名称是WEBCA_ApplyWebFolderProperties. 鉴于该行动似乎没有在任何地方记录,请注意购买者。不过,这似乎不是太重要。

要自动化解决方法,您可以将命令添加到安装项目的 PostBuildEvent 中,如下所示:

cscript.exe "$(ProjectDir)..\WiRunSQL.vbs" "$(BuiltOuputPath)" "DELETE FROM CustomAction WHERE Action='WEBCA_ApplyWebFolderProperties'"

如果有人知道安装名为Filters的文件夹的更好方法,我很想听听。

于 2011-01-21T16:30:21.530 回答