0

この質問に最適なタイトルがあるかどうかわかりません。自由に変更するか、変更を提案してください。自分で編集します。

アプリケーションに固有のsettings.binファイルを維持したいスタンドアロンの実行可能ファイルがあります。それを行うには2つの明白な方法があります。

1.実行可能ファイルが存在するローカルディレクトリからファイルを作成/読み取ります

  • ポジティブ:ユーザーはexeファイルとbinファイルを複数のディレクトリにコピーし、settings.binファイルが異なる複数のバージョンを持つことができます。
  • ネガティブ:実行可能ディレクトリを汚染したくない。

2.ローカルアプリケーションデータフォルダなどの「非表示」の場所からファイルを作成/読み取ります。

  • ポジティブ:実行可能ディレクトリを汚染していません。
  • ネガティブ:settings.binファイルは、実行可能ファイルの場所に関係なく、実行可能ファイルのすべてのインスタンス間で共有されます。

どちらも私の要件の両方を満たしていないため、これらのソリューションのいずれかを実行したくありません。

  • 実行可能ディレクトリを汚染しないでください(つまり、ローカルファイルを作成しないでください)。
  • settings.binファイルは、実行可能ファイルの場所によって異なります。

何かご意見は?settings.binファイルをリソースとして埋め込みたかったのですが、埋め込まれたリソースに書き込めないことがすぐにわかりました。私はすべてアイデアがありません。

4

2 に答える 2

1

ネガティブポイントをキャンセルする小さな変更を加えたオプション2を使用します(共有されません)

exeファイルを区別できるものが必要です。

すべてが異なるパスに存在する場合、私は次のことを行います。

1)実行可能ファイルの場所をハッシュします(パスのmd5)

2)ハッシュを使用してappdataにディレクトリを作成します

3)ファイルをそこに保存します

それ以外の場合は、他のプロセスと比較して自分自身を列挙しようとします。

1)開始時にアプリのデータを確認します。

2)書き込み用にファイルをロックしてみます:[アプリデータ] \ 1 \ sem.oi

3)それが失敗した場合は、次の場所に書き込むためにファイルをロックしようとします:[アプリデータ] \ 2 \ sem.oi

ファイルを開くことができたディレクトリの設定を使用します

お役に立てれば。

于 2012-09-11T20:06:33.213 に答える
0

シーケンスkey-valueペアのように、構成データをアプリケーションリソースファイルに定義できます。このようにして、その情報がバイナリファイルに埋め込まれるので、両方の要件を満たすことができれば幸いです。

  • 構成用に特別に作成されたファイルはありません
  • また、すべてのファイルに独自の組み込み構成を設定できます。つまり、この場合は異なるビルドを作成する必要があります。

ファイルを作成せずに、パスに基づいてローカルマシンで柔軟な構成を行うexe場合は、ネットワークアクセスや、(私の意見では)奇妙なアーキテクチャを介さない限り、ほとんど不可能だと思います。

このような要件がある理由を説明すると、現在のようになっていない場合に備えて、より適切な回答を提供できる可能性があります。

于 2012-09-11T19:33:17.783 に答える