WINE@Etersoft/Работа с сервисами

Материал из Русский WINE
Перейти к: навигация, поиск

Служба windows (windows service) - приложение, автоматически (если настроено) исполняемое системой при запуске операционной системы Windows.

В wine реализованы службы windows, они запускаются при работе с wine. В остальное время они выключены.


Работа со службой windows

Служба, поставляемая с приложением

Приложения в wine устанавливаются таким же образом как и в windows. Если windows установщик устанавливает сервис, то в wine он установится таким же образом.

Создание собственной службы

С помощью утилиты sc

wine существует реализация windows утилиты sc (service control) С помощью неё сервисы можно создавать, запускать, останавливать (и некоторые другие действия).

Команды sc:

1) Создать сервис

$ wine sc create <имя_сервиса> binpath="<путь_к_запускаемому_файлу>"
Пример:
$ wine sc create http binpath="C:\windows\system32\drivers\http.sys"

2) Запросить информацию о сервиса

$ wine sc query <имя_сервиса>
Пример:
$ wine sc query http

3) Запустить сервис

$ wine sc start <имя_сервиса>
Пример:
$ wine sc start http

4) Остановить сервис

$ wine sc stop <имя_сервиса>
Пример:
$ wine sc stop http

5) Задать описание для сервиса

$ wine sc description <имя_сервиса> "<описание_сервиса>"
Пример:
$ wine sc description http "HTTP server"

6) Удалить сервис

$ wine sc delete <имя_сервиса>
Пример:
$ wine sc delete http

Через редактор реестра

Хоть команда sc и удобна, с помощью неё можно сделать не всё. При необходимости настройки сервисов можно редактировать через редактор реестра.

Для этого нужно:

1) Запустить редактор реестра

$ wine regedit

2) Перейти в папку, в которой расположены службы windows:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\

3) Найти папку соответствующего сервиса, в которой будут находиться параметры, которые можно проверить, отредактировать или добавить

Пример: чтобы указать windows HTTP server запускаться при запуске wine, нужно перейти в папку
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP
Сменить значение параметра Start со значения "3" (ручной запуск) на значение "2" (автоматический запуск)

Запуск службы при запуске системы

В случае, если нужно установить службу windows, которая должна быть активна сразу после запуска linux, нужно:

1) Указать необходимому сервису автоматически запускаться с wine

Для этого установить в regedit параметр
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Start
В значение "2"

2) Установить пакет xvfb-run

$ epmi xvfb-run

3) Создать сервис systemd, для этого:

touch /lib/systemd/system/<имя_сервиса>.service

4) Заполнить его следующим образом:

[Unit]
Description=<описание_сервиса>
[Service]
Type=simple
User=<имя_пользователя_wine>
Group=<группа_пользователя_wine>
ExecStart=/usr/bin/xvfb-run /usr/bin/wine /home/guest/.wine/drive_c/windows/system32/winver.exe
Restart=on-failure
[Install]
WantedBy=default.target


Пояснение: сервис запускает winver.exe при запуске системы, и держит его активным.
Благодаря этому wineserver не выключается и сервисы, работающие в фоне также не выключаются.
Запуск происходит с помощью xvfb-run - скрипта, запускающего процессы с виртуальным X сервером

5) Активировать созданный сервис

$ serv enable /lib/systemd/system/<имя_сервиса>.service
Должен автоматически создаться симлинк /etc/systemd/system/default.target.wants/<имя_сервиса>.service → /lib/systemd/system/<имя_сервиса>.service

6) Для того, чтобы убедиться, что всё работает:

$ serv start <имя_сервиса>
$ serv status <имя_сервиса>
Последняя команда должна отобразить статус сервиса - он должнен быть active (running)