我们正在使用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版本
>检查WinRAR中的appx,并确认它包含sqlite3.dll
>从C#项目而不是Winjs项目引用“sqlite for windows Runtime”扩展
>还引用C运行时,这导致System Center在部署应用程序时失败。不知道为什么,但看着它。
UPDATE
问题是System Center无法部署sqlite库所需的Visual C运行时库依赖项。不幸的是,这不是一个编程问题了。我们得到一些帮助,我会发布修复。
问题回顾
当从我们的Metro项目引用Visual C运行时程序包时,System Center无法将应用程序部署到设备,因为在适当的体系结构和构建风格中部署适当版本的依赖关系时出现问题。
运行Visual Studio 2012(并打包部署项目)的开发机器使用的是新版本的Visual C运行时(50727),而不是新安装的windows 8(50712)中可用的。
与System Center团队合作,并确认这是我们正在使用的版本中的错误,并且在未来的版本中已经解决。我们将努力升级环境,但需要几周的时间。
解决方法
我确认并测试了以下解决方法:
>从Metro项目中删除对Microsoft Visual C运行时程序包的引用
>安装Visual Studio 2012 – http://www.microsoft.com/en-us/download/details.aspx?id=3的Visual C Redistributable的x64版本
>部署应用程序
作为一个魅力,因为正确版本的依赖关系已经存在。显然不是一个长期的解决方案,如果我们选择也瞄准x86和ARM,但会让我们超过这个驼峰。
总结以上是内存溢出为你收集整理的部署使用SQLite的Windows 8 Metro应用程序全部内容,希望文章能够帮你解决部署使用SQLite的Windows 8 Metro应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)