我正在创建一个拥有自己的数据库架构的项目。将使用我的项目创建的DLL的其他项目将在我的DLL所需的数据库中具有相同的模式。 但问题是,如果需要为我更改架构,对于在数据库中进行所有更改的每个客户端说这都不是一个好的选择。
所以,我想创建一个安装程序,它会自动为它们执行此操作... 任何建议,想法赞赏..
答案 0 :(得分:1)
查看此工具 - > http://www.liquibase.org/ 它允许自动化数据库迁移脚本
答案 1 :(得分:0)
我会在数据库模式的每个更改上生成一个更改srcipt,检查是否尚未应用更改并将其与我的DLL或安装应用程序一起发送,这将更新DLL并运行所有更改脚本
答案 2 :(得分:0)
您可以使用WiX来创建安装程序:GAC'您的程序集只是一个选项,您可以对数据库执行SQL脚本。
答案 3 :(得分:0)
此解决方案使用Visual Studio 2008中的安装项目,并使用.NET框架中的内置Installer
类。可以找到其他链接here和here。
以下是该怎么做的基本概要:
Installer
类实例添加到将安装到客户端PC的项目Installer
类上的相关方法,以便在应用程序安装期间从最终用户获取数据库连接详细信息以下是分步指南:
Installer
类:必须在要安装的应用程序中放置Installer
类。在Visual Studio的Solution Explorer中,选择要安装的应用程序,然后单击菜单项“Project-> Add New Item-> Installer Class”。这将添加一个名为“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
,开发人员可以使用这些方法来分离数据库或回滚更改或其他任何方法。
答案 4 :(得分:0)
如果您的安装程序可以调用简单的批处理文件,则可以创建一个只执行以下操作的批处理文件: