Установка MYSQL с приложением .NET winforms - PullRequest
6 голосов
/ 18 декабря 2008

У меня есть приложение на C #, которое использует MYSQL. Я нахожусь на стадии бета-версии и мне нужен установочный пакет, включающий мое приложение, а также MYSQL. В общем, мне нужно установить MYSQL и выполнить восстановление из моего установочного пакета .NET.

Любая помощь будет принята с благодарностью.

Ответы [ 6 ]

4 голосов
/ 06 января 2009

Шаг 1: Вы делаете это неправильно

Вы пытаетесь установить сервер mysql . Это должно быть вашей первой подсказкой, что что-то не так. Большинство серверных приложений предназначены для установки на серверах, а не на клиентах. Примечательным моментом здесь является то, что серверные приложения любят предполагать, что они «владеют» сервером. Это гигантское нет-нет для клиентских приложений.

Шаг 2: Примите решение, теперь, когда мы проинформированы должным образом

Теперь, когда мы установили, что делаем это неправильно, нам нужно выбрать, что делать. У нас есть 2 варианта:

  1. Переключение с MySQL на «клиентскую» базу данных, такую ​​как SQLite или SQL Server Compact Edition.
  2. Обойти проблемы с установкой серверного приложения.

Я лично рекомендовал бы перейти на SQLite (или аналогичный) как можно скорее. Это «правильная вещь», и вам не придется поддерживать хаки в течение многих лет.

Шаг 3: Вы все равно захотите взломать MySQL, потому что это, вероятно, кажется проще.

Вы были предупреждены. Вот некоторые вещи, о которых вам нужно знать, и смягчить их:

  1. MySQL хочет установить в программные файлы \ mysql. Если пользователь уже установил MySQL самостоятельно. Ты все сломаешь
    • Вам нужно будет указать свою версию MySQL для установки в пользовательскую папку. Я бы порекомендовал это как подпапку вашего приложения
  2. MySQL хочет работать как сервис (и сервис, скорее всего, будет называться «mysql»). Опять же, если у пользователя уже есть MySQL, вы все сломаете.
    • Вам нужно будет запустить службу под другим именем
  3. Сервер MySQL, вероятно, захочет записать файлы в Program Files \ etc.
    • Вам нужно изменить его конфигурацию, чтобы он записывал в% APPDATA% и так далее
  4. MySQL предполагает, что он всегда запускается одним и тем же пользователем. Если у вас на компьютере есть 2 пользователя, которые хотят использовать вашу программу, вам нужно будет соответственно взломать ее, либо запустив MySQL как локальную учетную запись службы (недостатки безопасности), либо установив отдельный mysql для каждого пользователя.

Итак, учитывая все это, я бы сказал, что вам лучше всего установить xcopyable mysql

3 голосов
/ 18 декабря 2008

Я отправил ответ на другой вопрос

Мы выбрали другой подход к этому. Мы делаем MySQL xcopy-способным, написав оболочку для создания файла конфигурации перед вызовом MySQL (для правильной настройки базового пути и т. Д.). Затем у нас установлен другой сервис с использованием стандартной настройки. Этот сервис позаботится о запуске MySQL и других необходимых фоновых программ (в нашем случае Apache) для нас. Поскольку MySQL развернут нами, мы хотели иметь полный контроль над ним.

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

2 голосов
/ 05 января 2009

Если вы используете или можете использовать NSIS, вы должны прочитать это: Silent MySQL Install

Что касается восстановления, вы можете написать что-нибудь, используя одну из утилит MySQL, или изменить часть этого старого NSIS-скрипта

Удачи!

2 голосов
/ 18 декабря 2008

Этот вопрос очень похож на другой вопрос . Однако ответы не очень помогают.

Вы можете запускать исполняемые файлы из настраиваемых действий в проекте развертывания .Net , это то, что я бы рекомендовал. (Смотрите под заголовком «Вызов исполняемого файла как пользовательского действия»)

Надеюсь, все можно решить с помощью командной строки. Если нет, попробуйте инсталлятор с использованием скриптов, такой как Wise или InstallShield, я думаю, что они лучше поддерживают такие вещи.

Надеюсь, это поможет!

1 голос
/ 28 августа 2009

@ Орион Эдвардс

Большое спасибо за шаги. У меня было то же самое сомнение. Фактически, мы просто отказались от SQLite, потому что нашему автономному приложению требовались некоторые процедуры и ограничения внешнего ключа. Но теперь я чувствую, что SQLite всегда является лучшим выбором для автономного настольного приложения, если оно действительно развертывается на клиентских компьютерах.

Пока я должен придерживаться MySQL. Поэтому я использую различные виды сценариев и механизмов для обработки различных возможных ситуаций. Например:

  • Если на клиентском компьютере предварительно не установлен mysql, есть сценарий, который полностью устанавливает сервер и создает базу данных, необходимые для моего приложения.
  • Если mysql предустановлен на клиентском компьютере, я прошу пользователя ввести имя пользователя и пароль root для mysql, а также настроить базу данных и пользователей из приложения.
  • И в-третьих, если по какой-то причине на клиентском компьютере ранее был установлен сервер MySQL, а затем он был удален, так как MySQL отслеживает предыдущий пароль root даже после удаления, я запускаю .msi сервера MySQL, сбрасываю пароль (вручную выполняю некоторые шаги) и, наконец, создайте экземпляр базы данных, все в пределах скрипта (конечно, эти шаги должны быть выполнены США, а не пользователем, поскольку это очень редкий случай.)

Этот подход в порядке? Или есть лучший, подходящий способ сделать это?

В будущем, я думаю, я буду придерживаться SQLite ! :-p

0 голосов
/ 04 января 2009

Посмотрите, как использовать пакет и средство развертывания Visual Studio. Он должен автоматически вводить зависимости MySQL, если вы подключаетесь напрямую (компоненты MySQL .NET), а не через соединение ODBC. В любом случае это позволяет вам добавить другое программное обеспечение в программу установки, которая может быть автоматически распакована, если вам это нужно. Я использовал его для развертывания приложений на C # с использованием библиотек MySQL, которые вы загружаете с веб-сайта MySQL, и для сторонних библиотек CoreLab MySQL.

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