Установка MySQL с приложением winforms.NET

progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Please wait... ");
progressDialog.setCancelable(false);
progressDialog.show();
6
задан 18 December 2008 в 03:52
поделиться

6 ответов

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

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

Шаг 2: Примите решение, теперь, когда нам правильно сообщают

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

  1. Переключатель далеко от MySQL до 'клиентской' базы данных, такой как SQLite или SQL Server Компактный Выпуск.
  2. Бездельничайте проблемы установки приложения для сервера.

Я лично рекомендовал бы переключиться на SQLite (или подобный) как можно скорее. Это - "правильная вещь", чтобы сделать, и Вы не должны будете поддерживать взломы в течение последующих лет.

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

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

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

Таким образом со всем этим в памяти, я сказал бы, что Ваш лучший выбор состоит в том, чтобы настроить xcopyable mysql

4
ответ дан 9 December 2019 в 22:41
поделиться

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

Можно выполнить исполняемые файлы от пользовательского действия в проекте развертывания .NET, это - то, что я рекомендовал бы. (Посмотрите в соответствии с заголовком "Вызов исполняемого файла как пользовательское действие"),

Надо надеяться, все может заботиться о через командную строку. В противном случае попробуйте установщик в виде сценария как Мудрый или InstallShield, я думаю, что у них есть лучшая поддержка материала как это.

Надежда, которая помогает!

2
ответ дан 9 December 2019 в 22:41
поделиться

Если Вы используете или можете использовать, NSIS, необходимо считать это: Тихий MySQL Install

Относительно восстановления Вы смогли писать сценарий чего-то, что использование одного из MySQL включало utils или изменяет часть этого старого сценария NSIS

Удачи!

2
ответ дан 9 December 2019 в 22:41
поделиться

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

-1
ответ дан 9 December 2019 в 22:41
поделиться

Я имею, отправляют ответ по другому вопросу

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

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

3
ответ дан 9 December 2019 в 22:41
поделиться

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

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

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

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

Подходит ли этот подход? Или есть более подходящий способ сделать это?

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

и, наконец, создать экземпляр базы данных, все в сценарии (конечно, эти шаги должны выполняться США, а не пользователем, поскольку это очень редкий случай.)

Этот подход подходит? Или есть более подходящий способ сделать это?

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

и, наконец, создать экземпляр базы данных, все в сценарии (конечно, эти шаги должны выполняться США, а не пользователем, поскольку это очень редкий случай.)

Этот подход подходит? Или есть более подходящий способ сделать это?

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

1
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: