2009-07-15 38 views
1

我正在创建一个具有自己的数据库模式的项目。其他将使用由我的项目创建的DLL的项目将在我的DLL所需的数据库中具有相同的模式。 但是,如果需要为我更改模式,问题就出现了,对于每个将数据库中的所有更改进行更改的客户端都不是一个好的选择。如何创建安装程序以实现数据库模式更改?

所以,我想创建一个安装程序,这将让他们自动做到这一点... 任何建议,想法表示赞赏..

回答

1

看看这个工具 - >http://www.liquibase.org/ 它允许数据库迁移脚本

自动化
+0

Liquibase是作为一个Java库实现的,但它应该可以作为一个dll使用ikvm运行 – 2009-07-18 04:00:09

0

我会产生上,如果尚未应用的变化检查数据库架构中的每个变化的变化srcipt和我的DLL或与安装的应用程序,将更新的DLL和运行所有的更改脚本出货

+0

谢谢亲爱的..但如何将一个DLL自己运行脚本,只需将其添加到项目中?有道理..没有?? – Manish 2009-07-15 13:23:08

+0

您可以在数据库中维护相应DLL的版本以及此版本的更新日期。 SQL更改脚本可以嵌入到DLL资源中。在应用程序启动时(可能处于其中一个类的静态构造函数中),可以检查版本是否相应,如果不是 - 进行必要的更改 – 2009-07-15 13:38:46

0

你可能是我们e WiX创建安装程序:GAC对您的程序集只是一个选项,您可以针对数据库执行SQL脚本。

0

该解决方案使用Visual Studio 2008中的安装项目,并利用.NET框架中的内建Installer类。其他链接可以参见herehere

这里是做什么基本轮廓:

  1. 添加Installer类实例将被安装到客户端的PC
  2. 项目添加安装项目,将应用程序安装到客户端的PC
  3. 定义安装过程中某些点将引发的操作
  4. 覆盖Installer类的相关方法以从最终用户durin获取数据库连接详细信息摹应用程序安装
  5. 保持数据库连接设置(在卸载的情况下)
  6. 安装程序的环境中运行您的自定义的方法/类/可执行文件,并做必须做什么

这里有一个一步

  1. 添加Installer类:an Installer类必须安装在要安装的应用程序内部。在Visual Studio的解决方案资源管理器中,选择要安装的应用程序,然后单击菜单项“项目 - >添加新项目 - >安装程序类”。这将添加一个名为“Installer1”的默认安装程序类。
  2. 在Visual Studio的解决方案资源管理器中,选择安装项目并右键单击它。选择“查看 - >自定义操作”以显示要在安装期间执行的自定义操作。
  3. 在“自定义操作”窗口中,添加了“安装”和“卸载”
  4. 转到Installer类(“Installer1”),并覆盖OnBeforeInstall自定义操作。

这里的东西是如何工作的伪代码:

[Installer1.cs]

protected override void OnBeforeInstall(IDictionary savedState) 
{ 
    base.OnBeforeInstall(savedState); 

    MessageBox.Show("OnBeforeInstall: " + GetProperties(savedState)); 

    using (ConnectionDialog d = new ConnectionDialog()) 
    { 
     d.ShowDialog(); 

     savedState["database"] = d.Database; 
     savedState["user"] = d.User; 
     savedState["password"] = d.Password; 
     savedState["integrated"] = d.Integrated; 
    } 
} 

IDictionary例如,通过安装在传递是用户可以填充键/值对的集合与他们的相关数据。同样的信息被传入其他方法,例如OnBeforeUninstall,开发人员可以使用这些方法来分离数据库或回滚更改或其他任何其他方法。

0

如果您的安装可以调用,您可以创建一个批处理文件,不只是遵循一个简单的批处理文件:

  1. 使用OSQL来查询架构版本号的表。在这种情况下,让我们说表中存储了“3”。
  2. 使用OSQL再次运行的下一个版本更新,一个名为4.SQL
  3. 使用OSQL更新的版本号
  4. 然后,如果5.sql存在做下一个,等
相关问题