我正在创建一个具有自己的数据库模式的项目。其他将使用由我的项目创建的DLL的项目将在我的DLL所需的数据库中具有相同的模式。 但是,如果需要为我更改模式,问题就出现了,对于每个将数据库中的所有更改进行更改的客户端都不是一个好的选择。如何创建安装程序以实现数据库模式更改?
所以,我想创建一个安装程序,这将让他们自动做到这一点... 任何建议,想法表示赞赏..
我正在创建一个具有自己的数据库模式的项目。其他将使用由我的项目创建的DLL的项目将在我的DLL所需的数据库中具有相同的模式。 但是,如果需要为我更改模式,问题就出现了,对于每个将数据库中的所有更改进行更改的客户端都不是一个好的选择。如何创建安装程序以实现数据库模式更改?
所以,我想创建一个安装程序,这将让他们自动做到这一点... 任何建议,想法表示赞赏..
看看这个工具 - >http://www.liquibase.org/ 它允许数据库迁移脚本
自动化我会产生上,如果尚未应用的变化检查数据库架构中的每个变化的变化srcipt和我的DLL或与安装的应用程序,将更新的DLL和运行所有的更改脚本出货
谢谢亲爱的..但如何将一个DLL自己运行脚本,只需将其添加到项目中?有道理..没有?? – Manish 2009-07-15 13:23:08
您可以在数据库中维护相应DLL的版本以及此版本的更新日期。 SQL更改脚本可以嵌入到DLL资源中。在应用程序启动时(可能处于其中一个类的静态构造函数中),可以检查版本是否相应,如果不是 - 进行必要的更改 – 2009-07-15 13:38:46
你可能是我们e WiX创建安装程序:GAC对您的程序集只是一个选项,您可以针对数据库执行SQL脚本。
该解决方案使用Visual Studio 2008中的安装项目,并利用.NET框架中的内建Installer
类。其他链接可以参见here和here。
这里是做什么基本轮廓:
Installer
类实例将被安装到客户端的PCInstaller
类的相关方法以从最终用户durin获取数据库连接详细信息摹应用程序安装这里有一个一步
Installer
类:an Installer
类必须安装在要安装的应用程序内部。在Visual Studio的解决方案资源管理器中,选择要安装的应用程序,然后单击菜单项“项目 - >添加新项目 - >安装程序类”。这将添加一个名为“Installer1”的默认安装程序类。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
,开发人员可以使用这些方法来分离数据库或回滚更改或其他任何其他方法。
如果您的安装可以调用,您可以创建一个批处理文件,不只是遵循一个简单的批处理文件:
Liquibase是作为一个Java库实现的,但它应该可以作为一个dll使用ikvm运行 – 2009-07-18 04:00:09