4

インストーラーの最後のフェーズは、次のメッセージで失敗します。

インストールが不完全です

[プロジェクト]をインストールする前にインストーラーが中断されました。再試行するには、インストーラーを再起動する必要があります。

実行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アプリケーションを.NET3.5SP1から.NET4.0にアップグレードした後に発生しました。

4

1 に答える 1

2

このブログエントリは問題を指摘しています:

考え始めたのは、filtersという名前のサブフォルダーです。フィルタサブフォルダの名前を変更する以外は何も変更 せず、正しく終了しました。apppools、info、または1という名前のフォルダーでも同じ問題が発生する可能性があると思います。

(エンファシスマイン)

残念ながら、Filtersは動的データでハードコードされたフォルダー名です。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'"

Filtersという名前のフォルダをインストールするためのより良い方法を誰かが知っているなら、私はそれを聞いてみたいです。

于 2011-01-21T16:30:21.530 に答える