これは、Windows 2008の自動ビルドスイートが ICEs ( WiX 2.0からWiX 3.0に移行した後)を実行しているときにスローされるエラーです。
LGHT0217:ICEアクション 'ICE01'の実行中にエラーが発生しました。この種のICE障害の最も一般的な原因は、誤って登録されたスクリプトエンジンです。この問題の詳細と解決方法については、 http://wix.sourceforge.net/faq.html#Error217 を参照してください。次の文字列形式は、外部UIメッセージロガーでは想定されていません:「Windowsインストーラサービスにアクセスできませんでした。これは、Windowsインストーラが正しくインストールされていない場合に発生する可能性があります。サポート担当者に問い合わせてください。」 light.exe(0、0)
さらに、これらはイベントログに表示されるエラーです。
MSIInstaller:サーバーへの接続に失敗しました。エラー:0x80070005製品:[ProductName]-エラー1719。Windowsインストーラサービスにアクセスできませんでした。これは、Windowsインストーラが正しくインストールされていない場合に発生する可能性があります。サポート担当者に問い合わせてください。
直感的に:
今のところアイデアはありません。
ICE検証を維持しながらこの問題を解決するにはどうすればよいですか?
ストーリーの終わり:
統合アカウントの権限、 [〜#〜] dcom [〜#〜] 、サービスのアクティブ化などを運が悪かった後、ついに継続的統合ビルドでICE検証を無効にしました。ローカルビルドでそれを維持しながら。
ICE検証を無効にするには、.wixprojファイルでSuppressValidationをtrueに設定します。
<PropertyGroup>
<SuppressValidation>true</SuppressValidation>
</PropertyGroup>
または、-sval
へのコマンドラインオプションlight.exe
。
TFSビルドコントローラーアカウントをローカルの管理者グループに追加し、Windowsサービスを再起動すると、うまくいきました。
根本的な原因を見つけました。 Re:[WiX-users] light.exeがICEの実行時にランダムに失敗する]に投稿されているものと同様のカスタムバリデーター拡張機能を含め、見つけたものすべてを試しました。。
これは、さまざまなスレッドで提案されている同時実行性の問題ではありません。大きすぎるプロセス環境ブロック(PEB)が原因です。
Windowsインストーラーは、32 KBを超えるプロセス環境ブロックを処理できないことがわかりました。私の環境では、ビルドシステムによって設定された変数の数とそのサイズ(たとえば、重複する値が複数含まれている PATH変数 )のため、PEBは約34 kBでした。
興味深いことに、環境変数、Windows XPおよび2003にはPEBのハード制限がありました32キロバイトに設定します。これにより、ビルドの初期段階で簡単にビルドブレークが発生する可能性があります。新しいWindowsにはそのような制限はありませんが、Windowsインストーラ開発者は内部環境のバッファを32 kBに制限したと思います値を超えると、正常に失敗します。
問題は簡単に再現できます。
set Variable<number>=<text longer than 1024 characters>
にすることができます。smoke.exe
を実行してパッケージを検証するか、またはmsiexec /i Package.msi
を実行しますError 1719 - Windows Installer could not be accessed
を報告します。したがって、解決策は-ビルドスクリプトを確認し、環境変数の数とサイズを減らして、すべて32 kBに収まるようにすることです。次のコマンドを実行すると、結果を簡単に確認できます。
set > environment.txt
目標は、ファイルenvironment.txt
を30 KB以下にすることです。
問題の正しい説明(ソリューションなし、ただしCruiseControlアカウントをローカル管理者グループに追加できる場合を除く)は次のとおりです。
からの引用 Wix 3.5&Cruise Controlでエラーが発生するLGHT0217:
ICEの検証には、インタラクティブアカウントまたは管理者権限が必要です。たとえば、WiXプロジェクトとTFS 2010チームビルドの比較(2009-11-14)またはRe:[WiX-users] Help with building patch(2009-11-20).
イマジは完全に正しいです!これが本当の答えだとは信じられませんでした。検証を抑制してTFSユーザーをAdministratorにすることは良い解決策ではありません。さらに、NT\Authorityが見つからなかったため、Administratorsグループに追加できず、完全に行き詰まりました。
Windows Server 2012 Datacenterでビルドエージェントと同じエラーが発生しました。問題を解決するため :
"PF86"
_ "C:\Program Files (x86)"
と等しい"PF"
_は_"C:\Program Files"
_と等しい"C:\Program Files (x86)"
を_%PF86%
_に、すべての_"C:\Program Files"
_を_%PF%
_に置き換えて、PATH変数を編集しますhttp://wix.sourceforge.net/faq.html#Error217 から:
WiX v3では、Lightは検証が自動的に実行されます- Windows Installer Internal Consistency Evaluators(ICEs) -ビルドが成功するたびに。検証は、サービスの問題につながる可能性のある一般的なオーサリングエラーをキャッチするための優れた方法です。そのため、デフォルトで実行されます。残念ながら、Windows VistaおよびWindows Server 2008で発生する一般的な問題により、ICEが失敗する可能性があります。原因と修正方法の詳細については、 Heath Stewart's Blog および Aaron Stebner's WebLog を参照してください。
同じICEエラーが発生しましたが、問題はWindowsインストーラサービスの破損でした。このソリューションは私にとってうまくいきました: http://support.Microsoft.com/kb/31535
また、SYSTEMアカウントに、WindowsレジストリのHKEY_CLASSES_ROOTハイブへのフルコントロールアクセス許可があることを確認します。場合によっては、管理者アカウントの追加が必要になることもあります。
私は同じ問題に直面し、ICE検証を抑制したくありませんでした。私のセットアップ:Visual Studio Online(VSO)で、自分のコンピューターをビルドエージェントとして使用しました。私の解決策は、私のマシンでサービスを実行するために使用されるアカウントを変更することでした。 Network ServiceやLocal Serviceを使用する代わりに、必要なすべての権限を持つ自分のアカウントでサービスをログオンさせました。
いくつか提案があります。
上記の提案のどれも私にとってはうまくいきませんでした、私にとってはアンチウイルス(McAfee)が問題になり、vbscript.dllレジストリエントリを誤ったDLL場所に更新しました。これらは覚えておくべきこと:
問題を解決するために私が取った手順は次のとおりです。
パスを更新すると、すべてが通常どおり機能し始めました。
ビルドマシンに移動し、Windowsインストーラサービスを再起動します