私はここで非常に深いところにいるので、私が何について話しているのか本当にわからないことをお詫びします.
私の目的は、既存の msi を取得し、それにいくつかの変更を加えてから、msi を元の状態のままにして変換を作成することです。他の多くの質問で示唆されているように、私は DTF (WiX の一部) を使用しています。
私の問題は、変換を作成するために 2 つのデータベース オブジェクトが必要であることに起因しています。変更されたデータベースと参照。最初のオブジェクトがロックしているため、同じファイルから 2 つのオブジェクトを作成することはできません。単純なオプションは、一時ディレクトリにファイルのコピーを作成し、新しいファイルパスから新しいオブジェクトを作成することです。ただし、プログラムは VM、ローカル ストレージ、およびネットワーク ストレージのさまざまな組み合わせで使用される可能性があるため、変換を保存する場合を除き、ディスクへの書き込みは避けたいと考えています。
私が収集したことによると、DTF ではハンドルからデータベース オブジェクトを作成できます。そのため、私の現在のアプローチは、何らかの方法でハンドルを使用してメモリ内に msi のコピーを作成し、それをデータベース コンストラクターに渡して一時オブジェクトを作成することです。変換を作成する前に変更を加えることができます。
ただし、これを達成する方法がわかりません。それが可能かどうかさえわかりません。MemoryMappedFile は開始するのに適した場所のように思えましたが、ファイルから作成する場合は永続的であり、ファイルに基づいて非永続的な mmf を作成する方法や、非永続的な mmf を作成してから読み取る方法がわかりません。それにmsi。
ディスク上に msi が 1 つしかないトランスフォームを作成する実行可能な方法はありますか? 私は明らかに私の深みから外れているので、ディスクへの書き込みを受け入れるだけのアイデア/ガイダンス/アピールを絶対に受け入れてください。