2017-02-27 14 views
0

sqlite dbファイルを使用するプロジェクトがあります。 Visual Studioインストーラを使用してセットアップファイルを作成するまでは、すべて正常に動作します。私はUACの制限を認識しているので、カスタムフォルダ[CommonAppDataFolder] [製造元] [製品名]を作成しました。 (C:\ ProgramData \ MyCompany \ MyProduct) セットアップファイルでフォルダが作成され、DBファイルがそこに置かれますが、プログラムは "読み取り専用データベースを作成しようとしました"という例外でクラッシュします。 最も興味深いのは、Visual Studio Installerを使用して追加した同じDBファイルをC:\ ProgramData \ MyCompany \ MyProductに配置するときに始まります。基本的に同じファイルでなければなりませんが、手動で追加するとすべてうまく動作します。だから私は問題がVisual Studioインストーラであると思う、それはどうにかしてデータベースのパーミッションを駄目にする。 これを解決するにはどこで掘り起こすべきですか? ありがとうございます。セットアップ後にSQLiteデータベースが読み取り専用になる

P.S.私はWindows 7、SP1を使用しています

+0

本当にSQLite DBのアクセス許可はありません。ほとんどの場合、DBは読み取り専用とマークされているか、ファイルシステム上では読み取り専用であるか、WindowsのDBにアクセスするユーザーはdbのパスへの書き込みアクセス権を持っていません。 –

答えて

1

私もこの問題がありました!

問題は、ファイルが読み取り専用として設定されているのではなく、ファイルにアクセスするためのアクセス許可が設定されていないことです。 How to give Read/Write permissions to a Folder during installation using .NET

しかしではなく、フォルダのアクセス権を設定し、あなたがsqliteのファイル自体のためにそれらを設定します。私は私が行うために必要見つけたもの

は、カスタムアクションの設定に次のスレッド上の手順に従ってくださいました。 これはかなり簡単です。ディレクトリの代わりにFile.SetAccessControlsを設定するだけです。

関連する問題