2012-04-20 135 views
3

我制作了一个应用程序,放在Win CE(Compact Flash卡)的硬盘上。我的问题是应用程序正在使用SQL Server CE 3.5数据库,但它看起来像是使用SQL Server CE 3.0创建的。当我开始构建图像时,我无法选择3.5版本。Windows CE 6.0 - 将SQL Server CE 3.5安装到运行时映像中

3.5版本的DLL部署我每次调试应用程序,所以这个问题从来没有在开发阶段显示时间。

现在,应用程序启动时有例外的消息窗口弹出,不要让应用程序启动时(OS启动时它会自动启动)。我的问题是如何将SQL Server CE 3.5安装到映像中,或者稍后或每次启动时使用CAB文件安装它。

当我运行上运行的OS系统,它安装了3.5版本,我的应用程序启动,但是当我再次重新启动操作系统的更改将不会保存并提交正确的CAB文件(三级CAB)。必须有一种解决方案,在构建映像之前在目录中添加3.5版本,或者在每次启动时安装它,或者在第一次启动后最后一次选择永久安装它。

如果您可以为我提供每次系统启动时安装CAB的解决方案它适用于我,但考虑到我必须运行将在系统上使用SQL Server CE 3.5数据库的应用程序启动以便CAB的安装必须先于应用程序自动启动。

在此先感谢。

回答

1

您有几个选项。最不可取的是在启动时运行CAB。

一种选择是把最新的SQLCE二进制文件到操作系统,如果你能。这可在目录中获得,前提是您已安装所有更新的QFE。如果由于某种原因无法安装QFE,则始终可以替换Platfrom Builder从%WINCEROOT%\OTHERS\SQLCOMPACT处获取的源二进制文件。

另一种选择是只包括所有的SQLCE二进制文件在您的应用程序部署。您不需要CAB,只需将DLL放入您的应用程序文件夹(如果您使用此路线防止本地DLL冲突,则从操作系统中删除SQLCE是个不错的主意)。这些二进制文件的来源是%PROGRAM_FILES%\Microsoft SQL Server Compact Edition\v3.5\Devices。这实际上是我更喜欢的路线,因为SQLCE的更新不需要新的操作系统。

+0

我同意你的最佳解决方案将二进制文件放入应用程序部署中。我会尝试,但看着OTHERS \ SQLCOMPACT我找到了正确的二进制文件,但在我的开发图像中,它是一个SQLCE 3.0版。当我在正在运行的WinCE映像上安装CAB时,应用程序可以正常工作,但在重新启动后,所有内容都将丢失我会尝试你的解决方案,所以我们会看到。最后,我会把这个解决方案放在这里。谢谢。 – Patrik 2012-04-20 20:58:56

+0

@Patrik你最终的解决方案是什么? – 2014-03-17 01:35:44

+0

我以两种方式解决了我的问题。 1.在启用持久性存储和注册表保存功能的映像上运行CAB。我制作了几张CF卡。 2.解决方案是将SQLCE的DLL与可执行文件一起保存在持久性存储中。 – Patrik 2014-03-17 19:13:34