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'" 

如果有人知道一個更好的方式來安裝一個名爲過濾器,我很樂意聽到的文件夾它。