2011-10-31 14 views
0

在其他文件夹中照常安装在一个单独的文件夹中的SQL Server CE数据库和应用程序。在从设备上卸载应用程序时,数据库不会被删除。当在同一设备上重新安装应用程序时,检查数据库是否存在[我们在第一次安装时保存的位置],如果不存在,则保存在所有智能设备的公共文件夹中[如\Program Files\],否则使用现有数据库。安装在单独的文件夹SQL Server CE数据库[的Windows Mobile 6智能设备AP]

我怎么能做到这一点使用C#的Windows Mobile 6 ?????

+0

你在安装什么?出租车司机? – jp2code

+0

我创建了CAB项目,添加了主要输出和所有必需的依赖关系。可以指定要从应用程序安装的数据库文件[并且必须需要该数据库文件路径才能与应用程序连接]。同时卸载时,将数据库文件保存在设备中。当重新安装时,如果数据库文件存在于该路径中,则保留该数据库文件而不是新文件,并使用该文件。 –

回答

0

阅读您的评论后,我建议类似以下的东西:

  • 应用程序启动时,有它在您需要的路径检查你的数据库的存在(或者在路径在INI文件中指定)

  • 如果未找到数据库,请询问用户是否应使用默认数据库(或者,如果他们应该没有选择,只需复制它)。

当应用程序被删除时,该数据库将保留。

当应用程序被重新安装,它可以使用所剩下的数据库。

例子:

namespace DBTest1 { 

    public partial class Form1 : Form { 

    const readonly string MYDATABASE = "\\Application Data\\DBTest1\\sqlce.db"; 

    private void Form1() { 
    InitializeComponent(); 
    CreateIfNotThere(DBTest1.Properties.Resources.sqlcedb, MYDATABASE); 
    } 

    void CreateIfNotThere(object data, string filename) { 
    if (String.IsNullOrEmpty(filename)) { 
     filename = string.Format(@"{0}{1}{2}", 
     Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
     Path.DirectorySeparatorChar, "sqlCe.db"); 
    } 
    if (data != null) { 
     byte[] array = (byte[])data; 
     FileInfo file = new FileInfo(filename); 
     if (!file.Exists) { 
     using (FileStream fs = file.Create()) { 
      fs.Write(array, 0, array.Length); 
     } 
     } 
    } 
    } 
    // other code 
} 

如果你想进入编写定制CABWIZ步骤,有一个很好的写了在How to create the inf file for a smart device cab project from command line?线程。

+0

另一个有用链接的评论:http://www.mobilepractices.com/2008/10/setupdll-sample-and-walkthrough-terms.html – jp2code

相关问题