4

安装程序的最后阶段失败,此消息:Web安装项目安装失败的动态数据网站:“安装程序被中断”

安装不完整

,安装程序前被中断[项目]可以安装。您需要重新启动安装程序才能再次尝试。

运行msiexec /i installer.msi /l*vx setup.log显示在安装日志如下条目:

INFO : [...] [ApplyWebFolderProperties]: Getting web folder property token... 
INFO : [...] [ApplyWebFolderProperties]: Token is '/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters'. 
INFO : [...] [ApplyWebFolderProperties]: Getting METADATA_HANDLE for the directory '/LM/W3SVC/1/ROOT/ProjectDir/DynamicData/Filters'. 
ERROR : [...] [ApplyWebFolderProperties]: FAILED: -2147024893 
ERROR : [...] [ApplyWebFolderProperties]: FAILED: -2147024893 
ERROR : [...] [ApplyWebFolderProperties]: Custom Action failed with code: '3' 
ERROR : [...] [ApplyWebFolderProperties]: Custom Action failed with code: '3' 
INFO : [...] [ApplyWebFolderProperties]: Custom Action completed with return code: '3' 

同一Web应用程序已经被安装了Web安装项目之前,没有任何问题。将Web应用程序从.NET 3.5 SP1升级到.NET 4.0后开始问题。

回答

2

This blog entry点出了问题:

这让我开始思考,我有 一个名为过滤器子文件夹。更改 没有别的,只是重命名过滤器 子文件夹使其正确完成。我是 ,假设您可能与名为apppools, info或1的文件夹有相同的 问题。

(重点煤矿)

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

安装程序错误正在由ApplyWebFolderProperties引发自定义操作。该操作不是内置于Windows安装程序—它是由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'" 

如果有人知道一个更好的方式来安装一个名为过滤器,我很乐意听到的文件夹它。