Как создать установщик для реализации изменения схемы базы данных? - PullRequest
1 голос
/ 15 июля 2009

Я создаю проект, который имеет собственную схему базы данных. Другие проекты, которые будут использовать DLL, созданную моим проектом, будут иметь в своей базе данных ту же схему, что и моя DLL. Но проблема возникает, если мне нужно изменить схему, поэтому не стоит говорить это каждому клиенту, который вносит все эти изменения в вашу базу данных.

Итак, я хочу создать установщик, который сделает это автоматически для них ... Любые предложения, идеи приветствуются ..

Ответы [ 5 ]

1 голос
/ 15 июля 2009

Проверьте этот инструмент -> http://www.liquibase.org/ Позволяет автоматизировать сценарии миграции базы данных

0 голосов
/ 16 июля 2009

Если ваш установщик может вызвать простой пакетный файл, вы можете создать пакетный файл, который выполняет следующие действия:

  1. Использует osql для запроса таблицы с номером версии схемы. В этом случае предположим, что в таблице хранится «3».
  2. Используйте osql снова для запуска следующего обновления версии, файл с именем 4.sql
  3. Используйте osql для обновления номера версии
  4. Затем, если существует 5.sql, сделайте следующий и т. Д.
0 голосов
/ 15 июля 2009

Это решение использует проект установки в Visual Studio 2008 и использует встроенный класс Installer, найденный в .NET Framework. Другие ссылки можно найти здесь и здесь .

Вот основной план того, что делать:

  1. Добавить экземпляр класса Installer в проект, который будет установлен на ПК клиента
  2. Добавить проект установки, который установит приложение на ПК клиента
  3. Определение действий в рамках проекта установки, которые будут выполняться в определенные моменты во время установки
  4. Переопределите соответствующие методы в классе Installer, чтобы получить сведения о подключении к базе данных от конечного пользователя во время установки приложения
  5. Сохранить настройки подключения к базе данных (в случае удаления)
  6. Запустите пользовательский метод / класс / исполняемый файл в контексте установщика и сделайте то, что должно быть сделано

Вот пошаговое руководство:

  1. Добавить Installer класс: класс 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 голосов
/ 15 июля 2009

Вы можете использовать WiX для создания установщика: GAC'-сборка - это просто вариант, и вы можете выполнять сценарии SQL для базы данных.

0 голосов
/ 15 июля 2009

Я бы сгенерировал srcipt для каждого изменения в схеме базы данных с проверкой, не было ли это изменение уже применено, и отправил его вместе с моей DLL или установочным приложением, которое обновит DLL и запустит все сценарии изменения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...