2

最終的に、組み込みの chainer msi を実行し、C# chainer.exe の Installer.InstallProduct を介して 4 つのサブ msi をインストールしました (stackoverflow の他の場所にある唯一の chainer の例で説明されているように)。私の問題: 後でパッケージをアンインストールすると、"transaction.Join" が呼び出されたときに、今回は MSI エラー: 不良ハンドルで失敗します。taskmanager で msiexec.exe プロセスを強制終了する必要があり、その後はすべて正常に実行されています。

助言がありますか?

補遺: Windows Installer 4.5 を使用していますが、MsiEmbeddedChainer テーブルにはエントリが 1 つしかありません。4 つの msi は、chainer 実行可能ファイルによって次々に処理されます。

4

2 に答える 2

0

確認すべきいくつかの提案があります。

1)複数パッケージのWindowsインストーラインストールのトランザクション処理は、Windowsインストーラ4.0以前のバージョンではサポートされていません。複数のパッケージのインストールを単一のトランザクションとしてロールバックするには、Windowsインストーラ4.5以降が必要です。インストーラーがアプリケーションをインストール、修復、更新、または削除するときに問題を引き起こす可能性のあるWindowsインストーラーの機能は、次のとおりです。複数パッケージのインストール

2) MsiEmbeddedChainerテーブルに複数のエントリがある場合。起動できる組み込みチェーンは1つだけです。複数のエントリが両方とも実行するように条件付けられている場合、どちらのエントリが実行されるかは未定義です。

于 2012-11-26T23:35:17.393 に答える
0

最後に、問題は修正されました: ac# 組み込み chainer の標準的な例にバグがあります:

行: IntPtr ptr = new IntPtr(Convert.ToInt32(args[0], 16)); 「16」を「10」に変更する必要があります。

それ以外の場合、組み込みチェイナーによって開始されたトランザクションが 10 個を超える場合 (5 つのサブ msi がインストールされている私のセットアップのように)、「transaction.Join」によって使用されるハンドルは、ある時点で間違っており、「bad」を返します。ハンドル」エラー。

この問題を解決してくれた Microsoft に感謝します。

于 2013-08-08T09:49:36.600 に答える