2013-08-23 3 views
0

Я разработал небольшое программное обеспечение для Windows через несколько недель и получил проблемы при попытке сделать правильный установщик для этого. У меня получился запрос о том, что файл базы данных должен находиться в той же папке, где программа так может время от времени брать собственные резервные копии.Расположение и окружающая среда базы данных SQLite

Когда я установить его (с помощью Visual Studio 2012 и проект InstallShield Limited Edition) он работает на основном компьютере (W7 64-битного), мой ноутбук (W8 64-разрядные) и мой Buddys Laptop (W8 32-bit) только хорошо.

Мой главный компьютер работает под управлением программы, как положено, он использует файл базы данных из программы Database -folder (C:/Program Files (x86)/Название программы/Название программы/базы данных) и оленья кожа создавать дополнительные файлы БД, но мой ноутбук и мой ноутбук для друзей создают папку «C:/Users/User/AppData/Local/VirtualStore/Program Files (x86)/Название программы/Программа Название/База данных» и используйте базу данных оттуда.

Также я заметил, что сбой программы при запуске на моем другом тестовом компьютере, который запускает W7 32-бит, и я убедился, что .Net Framework установлен.

Строка подключения выглядит следующим образом: sqliteConnection1.ConnectionString = "источник данных =. \\ Database \\ db"; Целью платформы платформы программы является любой процессор, и он использует .Net Framework 4.5, если это помогает.

Любые идеи, которые вызывают это и как я могу это исправить?

ответ

2
файл базы данных должен быть в той же папке, в которой программа так что пользователь может принимать собственные резервные копии

опасность будет Робинсон! Пользователи, не являющиеся администраторами, не могут изменять файлы в общей папке или в папке Program Files. Вы заставляете пользователей запускаться как администраторы или изменять папку Program Files, чтобы не-Admins могли ее модифицировать; оба являются серьезными уязвимостями безопасности.

Если вы устанавливаете базу данных в папку «Программы», база данных является частью данных установки, а не данных пользователя. Это означает, что при восстановлении или удалении приложения удаляются все пользовательские данные. Пользователям это не нравится.

Ваше приложение должно скопировать базу данных приложения в папку пользователя, например Environment.SpecialFolder.ApplicationData, и сохранить все изменения там. Все пользователи могут изменять и копировать данные из своих собственных папок, при этом не требуются уязвимости системы безопасности. Кроме того, когда кто-то ремонтирует или удаляет приложение, все пользователи получают свои данные.

0

Ваша строка подключения использует текущий каталог (.).

Создайте его динамически с помощью Assembly.GetExecutingAssembly().Location.