部署使用SQLite的Windows 8 Metro应用程序
背景
我们正在使用System Center 2012,在运行Windows 8 Enterprise x64的现场向三星板卡部署Windows 8 Metro风格的应用程序。板条连接到域,并具有一个持久的DirectAccess连接,允许System Center将应用程序和更新推送到设备。 我们必须将我们的应用程序部署到现场的数百个设备中,这就是为什么我们去了System Center路由。代码签名证书使用组策略安装在每个设备上。要部署应用程序,您只需提供程序包输出并指定要安装的设备的集合。应用程序只需几分钟即可在设备上显示。 我们遇到的问题是,当System Center部署我们的应用程序时,SQLite依赖项丢失,我们的数据访问都不可用。 关于我们的项目 我们的应用程序是使用SQLite作为后端的WinJS应用程序。但是,我们的所有数据访问代码都在WinJS项目引用的C#WinMD项目中。我们正在使用sqlite-net库与SQLite交谈 – 我们在C#项目中包含了这个源代码。 在Visual Studio中,我们按照Tim Heuer’s article所述安装了SQLite for Windows Runtime扩展。Metro应用程序引用了这一点。 使用其他部署方法进行测试 当您在Debug / Release和x86 / x64中进行调试或本地运行时,应用程序的SQLite数据访问都可以正常工作。 应用程序打包过程提供了PowerShell脚本,您可以在必要时使用它来安装应用程序和开发人员许可。使用PowerShell脚本安装我们的应用程序时,SQLite数据访问也可以正常工作。通过打包和安装应用程序的Debug / Release和x86 / x64版本进行验证。 故障排除 当应用程序首次尝试使用SQLite时,我们会看到一个异常,因为它无法找到sqlite3.dll。 我们已经尝试/验证了以下内容: >确认我们正在部署Release / x64版本 UPDATE 问题回顾 当从我们的Metro项目引用Visual C运行时程序包时,System Center无法将应用程序部署到设备,因为在适当的体系结构和构建风格中部署适当版本的依赖关系时出现问题。 运行Visual Studio 2012(并打包部署项目)的开发机器使用的是新版本的Visual C运行时(50727),而不是新安装的Windows 8(50712)中可用的。 与System Center团队合作,并确认这是我们正在使用的版本中的错误,并且在未来的版本中已经解决。我们将努力升级环境,但需要几周的时间。 解决方法 我确认并测试了以下解决方法: >从Metro项目中删除对Microsoft Visual C运行时程序包的引用 作为一个魅力,因为正确版本的依赖关系已经存在。显然不是一个长期的解决方案,如果我们选择也瞄准x86和ARM,但会让我们超过这个驼峰。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |