Фон
Мы используем System Center 2012 для развертывания приложения в стиле Metro в стиле Windows 8 на планшетах Samsung в области Windows 8 Enterprise x64. Сланцы соединяются с доменом и поддерживают постоянное соединение DirectAccess, позволяя System Center подталкивать приложения и обновления к устройствам.
Мы должны развернуть наше приложение на потенциально сотни устройств в поле, поэтому мы пошли по пути System Center. Сертификат подписания кода устанавливается на каждом устройстве с использованием групповой политики. Чтобы развернуть приложение, вы просто предоставляете выход пакета и указываете коллекцию устройств для его установки. Приложение просто появляется на устройстве через несколько минут.
Проблема, с которой мы сталкиваемся, заключается в том, что когда System Center развертывает наше приложение, зависимость SQLite теряется, и ни один из наших данных не работает.
О нашем проекте
Наше приложение - это приложение WinJS, использующее SQLite в качестве бэкэнд. Однако весь наш код доступа к данным находится в проекте С# WinMD, который ссылается на проект WinJS. Мы используем библиотеку sqlite-net, чтобы поговорить с SQLite - мы включили источник этого в наш проект С#.
В Visual Studio мы установили расширение SQLite для Windows Runtime, как описано в статье Тима Хейера. Приложение Metro ссылается на это.
Тестирование с использованием других методов развертывания
Доступ к данным SQLite из приложения отлично работает при его отладке или запуске локально - как в Debug/Release, так и в x86/x64.
Процесс упаковки приложений предоставляет PowerShell script, который можно использовать для установки приложения и лицензии разработчика, если это необходимо. При установке нашего приложения с помощью PowerShell script доступ к данным SQLite также отлично работает. Проверено это путем упаковки и установки версий Debug/Release и x86/x64 приложения.
Устранение неполадок
Когда приложение сначала пытается использовать SQLite, мы видим, что исключение не может найти sqlite3.dll.
Мы пробовали/проверяли следующее:
- Подтвердите, что мы развертываем сборку Release/x64
- Изучите приложение в WinRAR и убедитесь, что он содержит sqlite3.dll
- Ссылка на расширение SQLite для Windows Runtime из проекта С# вместо проекта WinJS
- Также ссылается на время выполнения С++, это вызвало отказ System Center при развертывании приложения. Не знаю, почему еще, но изучая его.
UPDATE Проблема в том, что System Center испытывает проблемы с развертыванием зависимости библиотеки Visual С++ Runtime, необходимой библиотеке SQLite. К сожалению, это уже не вопрос программирования. Мы получаем некоторую помощь в этом, и я отправлю исправление.