web-dev-qa-db-ja.com

WiX 3.0は継続的な統合によって実行されているときにエラー217をスローします

これは、Windows 2008の自動ビルドスイートが ICEsWiX 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インストーラが正しくインストールされていない場合に発生する可能性があります。サポート担当者に問い合わせてください。

直感的に:

  • VBScript および JScript は管理者として登録されました。
  • 統合サービスには、デスクトップインタラクションとすべてのファイルに対する権限があります
  • 同じマシンで別のユーザーまたは統合アカウントとしてログインしたユーザー( [〜#〜] rdp [〜#〜] によって手動で実行された場合、ビルドは成功します)

今のところアイデアはありません。

ICE検証を維持しながらこの問題を解決するにはどうすればよいですか?

62
Rinat Abdullin

ストーリーの終わり

統合アカウントの権限、 [〜#〜] dcom [〜#〜] 、サービスのアクティブ化などを運が悪かった後、ついに継続的統合ビルドでICE検証を無効にしました。ローカルビルドでそれを維持しながら。

ICE検証を無効にするには、.wixprojファイルでSuppressValidationをtrueに設定します。

    <PropertyGroup>
        <SuppressValidation>true</SuppressValidation>
    </PropertyGroup>

または、-svalへのコマンドラインオプションlight.exe

48
Rinat Abdullin

TFSビルドコントローラーアカウントをローカルの管理者グループに追加し、Windowsサービスを再起動すると、うまくいきました。

30

根本的な原因を見つけました。 Re:[WiX-users] light.exeがICEの実行時にランダムに失敗する]に投稿されているものと同様のカスタムバリデーター拡張機能を含め、見つけたものすべてを試しました。

これは、さまざまなスレッドで提案されている同時実行性の問題ではありません。大きすぎるプロセス環境ブロック(PEB)が原因です。

Windowsインストーラーは、32 KBを超えるプロセス環境ブロックを処理できないことがわかりました。私の環境では、ビルドシステムによって設定された変数の数とそのサイズ(たとえば、重複する値が複数含まれている PATH変数 )のため、PEBは約34 kBでした。

興味深いことに、環境変数、Windows XPおよび2003にはPEBのハード制限がありました32キロバイトに設定します。これにより、ビルドの初期段階で簡単にビルドブレークが発生する可能性があります。新しいWindowsにはそのような制限はありませんが、Windowsインストーラ開発者は内部環境のバッファを32 kBに制限したと思います値を超えると、正常に失敗します。

問題は簡単に再現できます。

  • サイズが32 KBを超える環境変数を設定する.batファイルを作成します。たとえば、32行のset Variable<number>=<text longer than 1024 characters>にすることができます。
  • Cmd.exeを起動します
  • 作成したバッチファイルを実行する
  • 同じcmd.exeウィンドウから:
    • ORでICE検証付きのWiXを使用してMSIパッケージをビルドしてみてください
    • smoke.exeを実行してパッケージを検証するか、または
    • 単にmsiexec /i Package.msiを実行します
  • 上記のコマンドはすべてError 1719 - Windows Installer could not be accessedを報告します。

したがって、解決策は-ビルドスクリプトを確認し、環境変数の数とサイズを減らして、すべて32 kBに収まるようにすることです。次のコマンドを実行すると、結果を簡単に確認できます。

set > environment.txt

目標は、ファイルenvironment.txtを30 KB以下にすることです。

23
imagi

問題の正しい説明(ソリューションなし、ただしCruiseControlアカウントをローカル管理者グループに追加できる場合を除く)は次のとおりです。

からの引用 Wix 3.5&Cruise Controlでエラーが発生するLGHT0217

ICEの検証には、インタラクティブアカウントまたは管理者権限が必要です。たとえば、WiXプロジェクトとTFS 2010チームビルドの比較(2009-11-14)またはRe:[WiX-users] Help with building patch(2009-11-20).

9
vlad2135

イマジは完全に正しいです!これが本当の答えだとは信じられませんでした。検証を抑制してTFSユーザーをAdministratorにすることは良い解決策ではありません。さらに、NT\Authorityが見つからなかったため、Administratorsグループに追加できず、完全に行き詰まりました。

Windows Server 2012 Datacenterでビルドエージェントと同じエラーが発生しました。問題を解決するため :

  1. リストアイテム
  2. ビルドエージェントマシンの環境変数に移動します
  3. 2つのシステム変数を作成する
  4. _"PF86"_ "C:\Program Files (x86)"と等しい
  5. _"PF"_は_"C:\Program Files"_と等しい
  6. 文字を保存したいのでとても短いです。TEMP、TMPなどが作成されたため、最後のバックスラッシュなしで作成し、これらの変数はMS標準に固執することにしました。
  7. すべての"C:\Program Files (x86)"を_%PF86%_に、すべての_"C:\Program Files"_を_%PF%_に置き換えて、PATH変数を編集します
  8. 閉じてビルドしてお楽しみください!
  9. それは私のために働いた。 :)
4
Ognyan Dimitrov

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 を参照してください。

2
gregmac

同じICEエラーが発生しましたが、問題はWindowsインストーラサービスの破損でした。このソリューションは私にとってうまくいきました: http://support.Microsoft.com/kb/31535

  1. 管理者としてコンピュータにログオンします。
  2. [スタート]をクリックし、[実行]をクリックします。
  3. [名前]ボックスにcmdと入力し、[OK]をクリックします。
  4. コマンドプロンプトで「msiexec.exe/unregister」と入力し、Enterキーを押します。
  5. Msiexec/regserverと入力し、Enterキーを押します。
  6. Windowsを再起動します。

また、SYSTEMアカウントに、WindowsレジストリのHKEY_CLASSES_ROOTハイブへのフルコントロールアクセス許可があることを確認します。場合によっては、管理者アカウントの追加が必要になることもあります。

2

私は同じ問題に直面し、ICE検証を抑制したくありませんでした。私のセットアップ:Visual Studio Online(VSO)で、自分のコンピューターをビルドエージェントとして使用しました。私の解決策は、私のマシンでサービスを実行するために使用されるアカウントを変更することでした。 Network ServiceやLocal Serviceを使用する代わりに、必要なすべての権限を持つ自分のアカウントでサービスをログオンさせました。

1
nath

いくつか提案があります。

  • ビルドサーバーでMicrosoftインストーラーのバージョンを更新してみてください
  • WiX 3.0の最新リリースは現在安定しているため、必ず最新リリースを使用してください。
  • 他のすべてが失敗した場合は、アクセス許可をいじることができる特定のビルドユーザーでビルドサービスを実行してみてください...
1

上記の提案のどれも私にとってはうまくいきませんでした、私にとってはアンチウイルス(McAfee)が問題になり、vbscript.dllレジストリエントリを誤ったDLL場所に更新しました。これらは覚えておくべきこと:

  1. WiX ICE検証の一部は、VBSCRIPTを使用して実装されています。
  2. そのため、MSIのコンパイル中、ビルドサーバーはc:\ windows\system32\vbscript.dllにアクセスする必要があります。
  3. おそらく、ビルドを実行するユーザーがこのDLLにアクセスできなくなった可能性があります。
  4. 上記の回答で述べたように、管理者アクセス/レジストリアクセスを探して、ユーザーがそれを持っていることを確認してください。

問題を解決するために私が取った手順は次のとおりです。

  1. ビルドエージェントマシンでcmd(管理者として実行)を開きます。
  2. RegEditを実行する
  3. ルートを選択し、ctrl + fをクリックして、次のレジストリエントリを検索します。{B54F3741-5B07-11cf-A4B0-00AA004A55E8}
  4. InprocServer32\Defaultキーを探します

enter image description here

  1. ビルドエージェントで、パスがMcAfee DLL=場所に置き換えられました。パスをc:\ windows\system32\vbscript.dllに更新しました。
  2. 保護されたレジストリエントリであるため、レジストリエントリの編集は簡単ではありませんでした。以下のリンクを使用して、プロパティを編集する前にアクセス許可を変更しました: 保護されたレジストリエントリの編集

パスを更新すると、すべてが通常どおり機能し始めました。

0
Isaiah4110

ビルドマシンに移動し、Windowsインストーラサービスを再起動します

0
TVSuser1654136