とあるプログラムをセットアッププロジェクトで作成し、インストールできるようにしました。
ですが、今後バージョンアップした同じプログラムを配布する方法で悩んでいます。
現在作っているプログラムは
exeファイル
mdbファイル(データファイル)
という二つの要素から成り立っています。
また、インストール後に、プログラムのインストール先フォルダに
imgフォルダを作成し、そこに画像などを保存できるようにしています。
この状態で、新しいバージョンのセットアッププロジェクトを作ってインストールしようとすると、事前にuninstallが行われるため、ものの見事にデータファイルが消去され、まっさらのデータファイルになってしまいます。
アップデート用のセットアッププロジェクトからデータファイルを消してもやはり消去されます。
重複するファイルのみ上書き・・・みたいな設定は可能なのでしょうか?
InstallShieldを購入すれば可能なようですが、一番安いEditionでも私には高価で買えません。
何かいい方法があれば教えてください。 お願いします。
データフォルダを、アプリケーションフォルダ以外の場所に作成すればいいのではないでしょうか?
たとえば
System.Environment.GetFolderPath(Environment.SpecialFolder.Personal)
で、ログイン中のユーザのマイドキュメントフォルダのパスが得られます。(.NetFramework2.0以降ではSystem.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
画像ファイルなら、マイピクチャフォルダ
System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures
の中にフォルダを作成してもいいかもしれません。
本体プログラム中で、データファイルが存在しない場合は、新規に作るとするのは邪道ですか?
データファイルを作るだけのプログラムを別途用意しておいて、本体プログラム中から呼んでやるとか、
まっさらなデータファイルはひな形として用意しておいて、(本体プログラム中で)コピーするとか。
バージョンアップ用と新規インストール用とを分けるのはどうでしょう?
バージョンアップ用は、ファイルの置き換えやデータの変換のみをするプログラムとするとか。
データ形式を変更しなければならない時や、デフォルトの変更とかの場合、有効だと思います。
ありがとうございます。参考になります。
バージョンアップ用と新規インストールは分けたほうがいいですよね。
一番いいのはmspファイルをもっと安価な方法で作れればいいんですけどね・・・
データフォルダを別フォルダにするというのはありだと思います。
早速取り入れていきます。ありがとうございます。