私は WiX で利用できる Sql Server カスタム アクションを使いこなせなくなったので、Deployment Tools Foundation を使用して独自のアクションを作成するという大胆な一歩を踏み出しました。私は良き市民になりたいと思っています。しかし、それを行う最良の方法は何ですか?
SQL Server 2005 以降のすべてのエディションをサポートする必要があります。
問題は、Windows Installer が 2 つのフェーズで動作することです。作業を実行し、元に戻す情報を保存します。次に、すべてのピースが配置されると、コミット (元に戻す情報を削除) するか、ロールバックを実行します。
これは、標準的なトランザクションが機能しないことを意味します。それらは私の Execute カスタム アクション内で完了する必要があり、後でロールバックする機会がありません。
必要に応じてロールバック アクションで復元できるデータベースのコピーのみのバックアップを作成することを検討しましたが、単純な方法には欠点があると思います。たとえば、データベースがどのくらい大きくなるかはわかりません。そのため、ターゲット マシンにバックアップを保持するための空き容量があるかどうかは保証できません。また、バックアップと復元が完了するまでに時間がかかる場合があり、通常のインストール (ロールバックが発生しない場合) が不必要に遅くなることは望ましくありません。
つまり、分散トランザクション コーディネーターが起動していることを確認し、変更を行う前に分散トランザクションを初期化し、適切なカスタム アクションでコミットまたはロールバックします。
TransactionInteropクラスのメンバーを使用して、異なるカスタム アクション間でトランザクションを共有できるようにする Cookie をエクスポートできるようです。
この種の経験を持つ人は、それがうまくいく可能性があるかどうかを言うことができますか?