C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

インストーラ Microsoft SetupProject [1]

[トピック内 23 記事 (21 - 23 表示)]  << 0 | 1 >>

■88750 / inTopicNo.21)  Re[18]: インストーラ Microsoft SetupProject
  
□投稿者/ とっちゃん (534回)-(2018/09/23(Sun) 17:34:14)
No88747 (ぽんすけ さん) に返信
> とっちゃん様■No88747 (ぽんすけ さん) に返信
> 以下、初回起動時の処理になります。
> ※TestDb.mdf、TestDb.ldfは%ProgramData% に配置しております。

ProgramData の直下ではなく
会社名や、アプリ名など、ユニークになるであろうサブフォルダに格納することをお勧めします。


昨今の状況では、会社名\バージョン依存アプリ名、会社名\バージョン非依存アプリ名、会社名だけ、アプリ名だけ
などまちまちなので、どういう形が望ましいというものはあまりないようです。
自分のマシンでの使われ方などを参考に考えてください。

AppDataと同じ使い方でも問題はないと思います。


>//コマンドラインを指定("/c"は実行後閉じるために必要)
>p.StartInfo.Arguments = @"/c sqllocaldb create TEST";
>
これを行っているということは、TestDb.mdf/ldf の情報とは別のものを使っているということになると思います。
mdf/ldf は事前に作ったDB(要するにテーブルと中身)を使う方法です。

また、その場でDBを作るなら共有インスタンス(マシン内の複数ユーザーで使うインスタンス)にする必要があると思います。


>//接続して、ログイン、パスワード追加
>string ConnectionStr = @"Data Source=(localdb)\TEST;Integrated Security=true;Trusted_Connection=yes;Connection Timeout=60;Pooling=True;Database=master";

とりあえず、一番最初の接続文字列を引っ張っていますが。。。

ファイル参照させるなら
「AttachDbFileName=ファイルパス」
でパス指定する必要があるはずです。

前に、LocalDBを使ったら?とあったスレッドでもいろいろ情報出ていたと思います。

SQL Server は、自分で使わないのでこれ以上の詳しいことはよくわかりませんので、このスレッドでの回答はあまり望めないと思います。


それと、もう一つ考えておかなければならないものがあります。

以下の状況でDBをどうするのか?を考える必要があります。
1. アプリをアンインストールしてインストールしなおした場合
2. アプリをアップデートした場合

1の時にDBは消えたほうがいいのか消えたら困るのか?
同様に2の時はどうなのか?


今の状況で正しく動いたとすれば最低でも1の時は必ず消えていることになります。
(アンインストールで消しているため)。

そして、1の状況で正しく消えるという場合、ほぼ間違いなく2の状況でも消えます。

これは、アップデートの仕組みに基づいているのですが、インストールしてアンインストールまたは
アンインストールしてインストールという処理を1回のアップデートインストール時にまとめて行うからです。

どういうパターンの場合でもアンインストールという処理が行われるため
アンインストール時にDBを消すという処理が行われた場合、
結果として、アップデート時にもそのDBはなくなってしまうことになります。


引用返信 編集キー/
■88751 / inTopicNo.22)  Re[19]: インストーラ Microsoft SetupProject
□投稿者/ ぽんすけ (43回)-(2018/09/23(Sun) 21:44:04)
No88750 (とっちゃん さん) に返信
とっちゃん様

ご返信いただきありがとうございます。
いつもお手数をお掛けして申し訳ありません。
DBファイルの格納先につきましては、もう少し考えて配置するようにします。

共有インスタンスにすることにつきましては、確かに複数ユーザで
使用するため、そのように変更いたします。

あと、考えておかなければならないことについて、
1.のアンインストール後の再インストールについては、DBは消えててもよいのですが、
2.のアプリのアップデートの場合には消えないでほしいと思っておりました。
ご説明いただいた内容によれば、これはできなさそうですね・・・。
アンインストール時に消すか、あるいは残しておくか。。。
もう少し検討してみたいと思います。

ほんとにいつもありがとうございます。
では失礼いたします。

引用返信 編集キー/
■88764 / inTopicNo.23)  Re[20]: インストーラ Microsoft SetupProject
□投稿者/ とっちゃん (535回)-(2018/09/25(Tue) 16:51:17)
No88751 (ぽんすけ さん) に返信
> 共有インスタンスにすることにつきましては、確かに複数ユーザで
> 使用するため、そのように変更いたします。
>
複数のユーザーが利用する場合、同じDBに書き込んで大丈夫ですか?
「同じDBに書き込む==ほかの人が書いた内容でも読める」
ということになります。

もちろん、ユーザーごとの固有値をセットしておけば同じDBでも絞り込みできるから
大きな問題はありませんが(カラムにログオンIDなどを用意しておいて、検索時には where で絞ればいいだけ)。

> あと、考えておかなければならないことについて、
> 1.のアンインストール後の再インストールについては、DBは消えててもよいのですが、
> 2.のアプリのアップデートの場合には消えないでほしいと思っておりました。
> ご説明いただいた内容によれば、これはできなさそうですね・・・。
> アンインストール時に消すか、あるいは残しておくか。。。
> もう少し検討してみたいと思います。
>
アンインストールが完全に使用終了を指す場合のアンインストールであればデータファイルに当たるものは
一緒に消えたほうが便利だと思いますが、

ほとんどすべてのアプリで、AppDataフォルダや、ProgramData に書き込んだファイルは残したままです。
バージョンアップ時に古いものを削除(新しいところに吸い上げ)ということはありますが
それ自体が珍しいほうです。

商用アプリも、個人用アプリも。

このあたりが、UWP アプリでは残らないといううたい文句につながっていたりします(レジストリも同様)。

引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ