2

C#アプリケーションを開発し、Wixでインストール可能なMSIファイルにパッケージ化します。アプリケーションの実行可能ファイルと.dllファイルは、ProgramFilesFolderの標準の場所にインストールされます。

アプリケーションを起動すると、ローカルの.sdfファイル(データベース)が存在しない場合は作成されます。

アンインストールすると(たとえば、新しいバージョンへのアップグレードの一環として)、この.sdfファイルを除くすべてが削除されます。新しいバージョンをインストールすると、古い.sdfファイルが取得され、引き続き使用されます。

ここで問題となるのは、.sdfファイルが現在ProgramFilesFolderの下にも存在することです。「旅行かばんをエンジンルームに保管」したくないので、この.sdfファイルをProgramDataに移動します

したがって、アプリケーションコードでこの変更を行います。つまり、別のパスで.sdfファイルを使用します。次回アップグレードするときは、既存の.sdfファイルをProgramFilesFolderからProgramDataに移動する必要あります。

質問-このファイルを移動する理想的な方法は何ですか?

1)Wixセットアップコードで-「古い」バージョン(.sdfファイルの場所を変更したバージョンより古い)から「新しい」(新しいバージョンまたは同じバージョン)にアップグレードが行われているかどうかを認識します変更)、この場合はファイルを移動します。ここでの良い点は、Wixがすべてのバージョン番号を「認識」しており、それらに基づいて条件付きで移動できることです。

2)C#アプリケーションコードでは、WixでCustomActionを作成するよりもおそらく簡単です。ただし、アプリケーションコードはバージョンについて何も知らないため、Wixの場合と同じ「古い」バージョンと「新しい」バージョンを使用するロジックを使用することはできません。したがって、一般的なロジックのみを使用できます。たとえば、新しい場所に存在する場合は新しい場所のファイルを使用します。そうでない場合は、ファイルが古い場所に存在するかどうかを確認してから、ファイルが両方に存在する場合は新しい場所に移動します。古い場所で、新しい場所のファイルを使用します。

最善の方法を選ぶのを手伝っていただけませんか?

説明されているアプローチの欠点/リスクはありますか?

より良い解決策はありますか?

4

1 に答える 1

1

プロパティと条件を設定して、インストールプロセスで目的の動作を取得できるため、すべてを WIX で制御します。

ここから始めることをお勧めします

CA で行う必要がある変更は、見つかったバージョンに応じてファイルを移動するかどうかです。

より大きな変更が必要な場合は、これを見てください 自分自身を置き換える

HTH

于 2012-11-22T15:24:59.813 に答える