Я создаю новую версию существующего настольного приложения Windows, которое хорошо работает уже несколько лет. Приложение использует базу данных SqlServerCe, которая устанавливается в DataDirectory машины. Новая версия приложения создается для совместимости с 64-битными машинами. Я перенес код на виртуальную машину Parallels под управлением Windows 10 на моем Macbook, и я создаю новую версию с помощью Visual Studio 2017. Сборка работает нормально (я использую проект мастера установки для создания файлов установки). Но когда я устанавливаю приложение, я получаю сообщение об ошибке при первой попытке доступа к базе данных.
Ошибка: доступ к файлу базы данных запрещен. [1884, имя файла = C: \ ProgramData \ CompanyName \ ApplicationName \ AppDataBase.sdf, SeCreateFile].
Файл .sdf не помечен как доступный только для чтения. Если я перейду к файлу .sdf после его установки и дам права на чтение, запись и изменение для всех (с помощью проводника файлов), тогда приложение сможет получить доступ к файлу и ошибки не возникнет. Однако, если я попытаюсь сделать это из своего кода с помощью File.SetAccessControl, я снова получу ошибку доступа. Я не вижу способа установить разрешения для файла .sdf в процессе установки с помощью функциональных возможностей мастера установки (просмотр файловой системы).
Вот строка подключения, которую я использую:
<connectionStrings>
<add name="ApplicationName.Properties.Settings.ApplicationNameConnectionString"
connectionString="Data Source=|DataDirectory|AppDataBase.sdf"
providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
Это отлично работало при сборке с использованием Visual Studio 2010 и развертывании на машинах x86. Заранее благодарим вас за любой совет, который вы можете дать.