Golden Basim Ответов: 1

Система не может найти файл указанный при запуске службы mysql


Я пытаюсь установить и запустить службу MySQL для работы с моим проектом.

1 - я скачал MySQL server 5.7.17 и настроил его следующим образом : ручная установка и настройка MySQL 5.7 на Windows 10

2 - я скопировал папку MySQL и поместил ее в папку моего проекта (MyProject\bin\Debug\mysql)

3 - Использование этого кода для установки и запуска службы MySQL с пользовательским именем.
var serviceExists = ServiceController.GetServices().Any(s => s.ServiceName == "mysqlTests");
            if (!serviceExists)
            {
                ServiceProcessInstaller ProcesServiceInstaller = new ServiceProcessInstaller();
                ProcesServiceInstaller.Account = ServiceAccount.LocalSystem;
                ProcesServiceInstaller.Username = null;
                ProcesServiceInstaller.Password = null;

                ServiceInstaller ServiceInstallerObj = new ServiceInstaller();
                InstallContext Context = new System.Configuration.Install.InstallContext();
                String path = String.Format("/assemblypath={0}", "mysql/bin/mysqld.exe");
                String[] cmdline = { path };

                Context = new InstallContext("", cmdline);
                ServiceInstallerObj.Context = Context;
                ServiceInstallerObj.DisplayName = "mysqlTests";
                ServiceInstallerObj.Description = "MySQL";
                ServiceInstallerObj.ServiceName = "mysqlTests";
                ServiceInstallerObj.StartType = ServiceStartMode.Automatic;
                ServiceInstallerObj.Parent = ProcesServiceInstaller;

                System.Collections.Specialized.ListDictionary state = new System.Collections.Specialized.ListDictionary();
                ServiceInstallerObj.Install(state);

            }

            ServiceController controller = new ServiceController();
            controller.ServiceName = "mysqlTests";
            if (controller.Status == ServiceControllerStatus.Stopped)
            {
                // Start the service
                controller.Start();
            }

я думаю, что служба установлена успешно, но эта ошибка появляется : $exception {"не удается запустить службу mysqlTests на компьютере '.'."} System.Win32Exception исключение InvalidOperationException: не удается найти указанный файл

как изображение вложения: имя службы, похоже, установлено


ОБНОВЛЕНИЕ:я обновляю код :
string appPath = Path.GetDirectoryName(Application.ExecutablePath);
 String path = String.Format("/assemblypath={0}", appPath + @"\mysql\bin\mysqld");

ошибка :
Система.InvalidOperationException: 'не удается запустить службу mysqlTests на компьютере '.'.'
Win32Exception: служба не ответила на запрос запуска или управления своевременно

Что я уже пробовал:

Я попытался установить службу вручную с помощью команды :

mysqld --install mysqlTests

служба успешно установлена.

и успешно начать

E:\MyProject\bin\Debug\mysql\bin>net start mysqlTests


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

j snooze

Если вы посмотрите на административную панель в сервисах и найдете сервис mysql, то каков путь к exe-файлу, который он ищет? Есть ли exe-файл там?

Golden Basim

я не знаю где ( административная панель), но в свойствах сервиса mysql путь не содержит .exe

Dave Kreskowiak

Start -> Run -> введите services.msc и нажмите enter. Найдите службу MySQL и дважды щелкните ее, чтобы открыть страницу свойств. Там ты найдешь тропинку.

Golden Basim

да..

"mysql\bin\mysqld.exe"

Dave Kreskowiak

Ну, если ваше приложение не установлено в корне C:, это не сработает. Копия MySQL не является "установленной" копией и не будет работать как сервис.

Серьезно, почему вы пытаетесь установить MySQL из своего собственного приложения? У обычных пользователей нет прав на установку чего-либо, так что это не сработает.

Golden Basim

Я пытался установить MySQL server с помощью расширенного установщика, но у меня больше не получалось.

Dave Kreskowiak

Сделайте себе огромное одолжение и просто установите MySQL отдельно от вашего собственного установщика приложений.

Golden Basim

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

Dave Kreskowiak

Я понятия не имею. Я никогда ни для чего не использую MySQL.

Golden Basim

"mysql\bin\mysqld.exe"

Golden Basim

я обновляю код :
строка appPath = Path.GetDirectoryName(Application.ExecutablePath);
String path = строка.Формат("/assemblypath={0}", appPath + @"\mysql\bin\mysqld");

ошибка :
Система.InvalidOperationException: 'не удается запустить службу mysqlTests на компьютере '.'.'
Win32Exception: служба не ответила на запрос запуска или управления своевременно

1 Ответов

Рейтинг:
7

#realJSOP

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


Golden Basim

я попробовал это сделать с помощью расширенного установщика
как и этот пост
https://www.advancedinstaller.com/forums/viewtopic.php?f=2&t=21072&sid=f168367743c73f2972865634d11ef5bd

и я попробовал еще один апроач :
https://www.advancedinstaller.com/forums/viewtopic.php?f=2&t=35086

но появляется та же ошибка