2017-04-25 8 views
0

Innosetupインストーラを使用して、バイナリとINIファイルをシステムにインストールしています。 アップグレードでは、既存のバイナリを削除して新しいバイナリをインストールするだけです。 しかし、INIファイルとは少し異なります。ユーザーがiniファイルの値を編集できるため、その変更を保存したいからです。更新されたiniファイルをインストールする前に、名前に_copyを追加して既存のiniファイルをコピーし、元のiniファイルを削除し、デフォルトで新しいiniファイルをインストールしてから、_copy iniファイルを読み込み、(Section、key )。プロダクションシステムで人はどのようにiniファイルを管理しますか?

---キーの名前を変更したりセクション名を変更するまで、このシステムはうまく動作します。次に、インストール後のiniファイルを更新するスクリプトを用意する必要があります。

私が現在の戦略で長期的に見ている問題は、ユーザーが1.0.1から1.0.9に更新したい場合です。どのように対処しますか? 1.0.1から1.0.9の各インストーラーを強制的に実行しますか? 移行ツールを作成しますか?誰かが現在使っている戦略はありますか?

答えて

1

これは、データベースとバージョン管理されているすべての構造化データに適用されます。 移行をサポートするかどうかを決定する必要があります。移行する場合は、各バージョン間を移動する移行スクリプトまたはユーティリティを作成します。バージョン別に、特定のユーザーデータリソースのデータのスキーマを変更する各バージョンを意味します。各移行を別々にしておき、一度に1つずつ移行してください。したがって、4つのバージョン間で移行する必要がある場合は、1-> 2 2-> 3 3-> 4に移行してください。移行ライブラリの中に移行するためのコードをすぐに分離します。ある時点で、移行のためにサポートしているバージョンを決定する必要があります。移行パスのサポートを停止する場合は、まず古いバージョンをインストールする必要があります。基本的には、移行を提供しますが、サポートしているものについては合理的です。

可能であれば、元のユーザーデータのバックアップを残しておき、ユーザーに残しておいてください。このようにして、手動のロールバックまたはアップグレードが可能になります。

これは、私が唯一の経験であるため、セールスエンジニアがいるエンタープライズ製品または顧客との直接の直接関係があると想定しているようなものです。あなたの製品が大量消費の場合、レガシーiniをサポートし、ユーザーデータだけを残しておくほうが賢明かもしれません。私は、YAML/JSONやデータベースのような構造化データに移行する必要のあるスキーマの更新を期待していますが、INIファイルのような単純なものは、単にキー/値としてレガシーバージョンをサポートするのが簡単です。

0

ユーザーINIファイルはユーザーにのみ適用され、決して変更しません。

  • デフォルト値は、アプリケーションまたは別のデフォルトのINIファイルにハードコードされていますか。
  • 最新の名前が見つからない場合は、レガシーキー名またはセクション名にアプリケーションをフォールバックさせます。
+0

バージョンアップ中にINIファイルを編集するのではなく、レガシーファイルを処理するコードを変更したくないと思います。 –

+1

@lukesignhこれは、タイムスタンプと.bak拡張子を持つ以前のバージョンのバックアップを残しておく必要があります。そのため、移行に問題がある場合は、手動でロールバックまたはアップグレードするオプションがあります – Novaterata

関連する問題