2

マネージド ブートストラッパーにチェーンされた複数の EXECPackages があります。次に例を示します。

<ExePackage Id="Test1" SourceFile="D:\Test\TestBatch.bat" Vital="yes" Compressed="yes" 
              InstallCommand="Testinstall1"
              UninstallCommand="Testuninstall1"
              />
<ExePackage Id="Test2" .../>

ロールバックで Uninstall コマンドを実行したい。生成されたログ ファイルには、次の情報が含まれます。

ロールバック: アンインストール。ロールバック パッケージの適用: Test2、アクション: アンインストール、パス: C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat、引数: '"C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46Datch15B4CFD9172" ][2013-06-05T14:45:10]e000: エラー 0x80070003: パスの CreateProcess に失敗しました: C:\ProgramData\Package Cache\AD944C8E8D75C79F57819C331F46D15B4CFD9172\TestBatch.bat [24F4:246C][2013-06:-05T1 10]e000: エラー 0x80070003: EXE パッケージの実行に失敗しました。[1654:27A8][2013-06-05T14:45:10]e000: エラー 0x80070003: コンピューターごとの EXE パッケージの構成に失敗しました。

ロールバックがトリガーされると ( Result.Cancel)、Exe パッケージ ペイロードを含むキャッシュ フォルダーが から削除されることに気付きましたC:\ProgramData\Package Cache

ただし、これは以前は機能していました。

4

1 に答える 1

3

UninstallCommandパッケージがインストールされている場合は、ロールバック時に実行されます。ExePackageこの問題は、単一の .xml 内の複数の要素に同じ実行可能ファイルが使用されている場合に発生することがわかっていますChain。Burn エンジンがパッケージをキャッシュする方法は、実行可能ファイルのハッシュを使用して場所を特定します。したがって、同じ実行可能ファイルをその中に入れると、Chain時期尚早に削除される可能性があります。すべての実行可能パッケージがバンドル内で一意であることを確認してください。

PS: ExePackage に DetectCondition を設定することを強くお勧めします。

于 2013-06-22T20:50:35.977 に答える