0

Visual Studio Installer を使用してプロジェクトのインストーラーを作成しました。私の製品は頻繁に更新されます。そのため、一定期間内に最新情報を提供する必要があります。製品コードを変更し、古いアップグレード コードをそのまま維持することで、バージョンを作成できます。

しかし、問題は、

アプリケーション フォルダー (インストール フォルダー) にインストールされている SQLite データベースを使用しています。

次の更新バージョンでは、DB のスキーマが変更される可能性があります。ただし、データベースが更新され、スキーマがわずかに変更された場合でも、以前のバージョンで保存されたデータは最新のバージョンでも必要になります。

私の考えは、次のバージョンをインストールする際に、以前のバージョンのバックアップをとることです。最新バージョンがインストールされると、変更された DB はバックアップ フォルダ内の以前の DB からデータを取得し、更新する必要があります。新しいバージョンのインストール中に何らかの例外が発生した場合は、インストール プロセスをロールバックして、以前のバージョンをそのまま維持する必要があります。この場合、VSI のカスタム アクションが役立つことがあります。

それを達成する方法はありますか?問題を解決する他の方法がある場合は、それを知りたいです。

4

1 に答える 1

1

そのため、一定期間内に最新情報を提供する必要があります。

既存のアプリケーションを更新するための最善の解決策は、より洗練された方法で更新をクライアント マシンにプッシュできる Microsoft テクノロジであるOnceClickを使用することです。

最新バージョンがインストールされると、変更された DB はバックアップ フォルダ内の以前の DB からデータを取得し、更新する必要があります。

更新中に何か問題が発生した場合、およびすべてを回復したい場合は、常にデータベースのバックアップを作成する必要があることに同意します. しかし、どのようにしてバックアップ データベースからデータを取得し、新しいデータベースを更新するのでしょうか? 各テーブルのデータを読み取り、新しいデータベース テーブルに挿入しますか?

アプリケーションの更新時に新しいデータベース スキーマをコピーするのではなく、更新パッケージに含めることdelta scriptをお勧めします。このデルタは、列のサイズやデータ型の変更などにすぎない可能性があります。

あなたがしなければならないことは、

  1. データベースのバックアップを取る
  2. 既存のデータベースでデルタ スクリプトを実行すると、データベースが新しいバージョンにアップグレードされます。

このアプローチでは、言及したアプローチに従う場合に処理する必要がある多くの複雑さを取り除きます(新しいデータベースをコピーして古いDBからデータを取得する)

于 2013-10-01T09:19:42.397 に答える