Запуск клиента МИС МИАЦ под Linux (wine)

Материал из Wiki МИАЦ ВО
Версия от 10:47, 9 октября 2018; Misha (обсуждение | вклад) (Скрипт по созданию шары и регистрации библиотеки midas.dll)
Перейти к навигации Перейти к поиску

И так имеем XUBUNTU 18.04 и все будем делать на ней. При настройке, компьютер должен иметь доступ в Интернет, для обновления системы и установки новых пакетов.

Обновление системы

Входим в консоль:
Пуск -> Эмулятор терминала
Или Ctrl+Alt+t
Выполняем в нем команды

$ sudo apt update
$ sudo apt upgrade

Попросит пароль пользователя - вводим пароль.
Попросит согласиться с установкой пакетов, жмем Y, затем Enter.

Установка пакетов

В консоли набираем

$ sudo apt install mc cifs-utils
  1. mc - Midnight Commander - консольный файловый менеджер для Linux
  2. cifs-utils - программы для монтирования Виндовой шары

Установка WINE

Взято тут
Пакет Wine есть в официальном репозитарии Ubuntu 18.04 (называется wine-stable). И установить его так же легко как любой пакет из репозитария, например в терминале - "sudo apt-get install wine-stable". Однако пакет, который включен в официальный репозитарий, имеет ошибку.

В результате этой ошибки Wine "не виден" в системе, после установки. Программа не ассоциируется с программными файлами Windows (exe). Wine "не виден" в меню приложений. И программы Windows, установленные под Wine, тоже не видны в меню приложений. В результате запуск установщиков программ под Wine нужно выполнять вручную, в терминале, например так - "wine ~/temp/FSViewerSetup55.exe". А после установки программы, нужно вручную создавать для нее файл запуска (desktop файл).

Это все неудобно, не говоря уже о том, что не всем под силу. Это конечно можно победить, тем более что сам по себе Wine работает, однако проще установить из репозитария WineHQ (официальный репозитарий разработчиков программы).

Удаляем wine, если он уже стоял

$ sudo apt purge wine-stable

Добавьте 32-bit архитектуру

$ sudo dpkg --add-architecture i386

Вводим команды

$ wget -nc https://dl.winehq.org/wine-builds/Release.key
$ sudo apt-key add Release.key
$ sudo add-apt-repository "deb https://dl.winehq.org/wine-builds/ubuntu/ artful main"
$ sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

Примечание. Установка выполняется из репозитария для версии 17.10, но этот пакет работает и на версии 18.04.

После установки нужно запустить конфигуратор Wine -

$ winecfg

Конфигуратор, после запуска, должен выдать запрос на загрузку и установку двух дополнительных пакетов - wine-mono и wine-gecko. Однако эти пакеты можно установить и самостоятельно, до запуска winecfg. Кстати, при установке Wine из официального репозитария Ubuntu 18.04, winecfg не загружает и не устанавливает пакеты wine-mono и wine-gecko.

После этого, Wine будет ассоциирован с программными файлами Windows - можно будет их запускать через контекстное меню (правая кнопка мыши).

Также в меню приложений будет пункт меню Wine, в котором будут ярлыки для запуска установленных программ Windows.

И нам осталось установить winetricks, для того чтобы мы могли установить windows библиотеки, скачаем его.

$ wget  https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

Добавляем права на запуск

$ chmod +x winetricks

И перемещаем в директорию /usr/bin

$ sudo mv -v winetricks /usr/bin

Запускаем winetricks

$ winetricks

Программа сама установит дополнительные пакеты такие как: wine gecko и др.

Теперь можно машину перенести в закрытую сеть

Подключение Виндовой шары

Создаем папку /mysql

$ sudo mkdir /mysql

Создаем скрипт, например, /home/user/scripts/mount.sh.
Для этого
1. Запускаем mc

$ mc

2. Идем в папку /home/users
3. Создаем папку scripts. Жмем F7 и вводим имя каталога (scripts) или в консоли набираем

$ mkdir scripts

4. Входим в папку scripts и жмем shift+F4. Система попросит выбрать редактор по умолчанию для мс. Жмем 2. Но Вы можете выбрать и другой. Откроется окно для редактирования. Копируем туда следующий скрипт.

#!/bin/bash
#set -x
directory="/mysql/programm"
if [ -d $directory ]; then
    :
else    
    mount.cifs  //192.168.1.1/mysql /mysql/ -o rw,domain=you_domain,username=login,password=passwd,iocharset=utf8,uid=1000,gid=1000,file_mode=0664,dir_mode=0775
fi

Жмем F2 и вводим имя файла mount.sh
Скрипт проверяет, есть ли в папке, куда будет происходить монтирование папка programm. Если ее нет, то будет пробовать смонтировать, а если есть то ничего делать не будет. Этот скрипт удобно запускать по cron, аналог планировщика в Windows и в файле rc.local (этот скрипт запускается в самом конце загрузки машины)
где
//192.168.1.1/mysql - это ip адрес и шара виндового сервера.
you_domain - имя Вашего домена
login - Логин пользователя виндового сервера.
passwd - его пароль
uid, gid - это цифровые идентификаторы пользователя на Linux машине. Можно посмотеть командой id, выполненной из консоли под логином пользователя.
5. Даем права на выполнение

$ chmod +x /home/user/scripts/mount.sh

6. Пробуем запустить

$  sudo /home/user/scripts/mount.sh

Если в папке /mysql появились файлы, то все ок, тогда идем дальше.
7. В Ubuntu 18.04 убрали службу и файл /etc/rc.local, поэтому его надо включить

Включение службы rc.local

Взято тут
Создаем и делаем исполняемым файл rc.local

$ sudo touch /etc/rc.local
$ sudo chmod +x /etc/rc.local

Добавляем содержание в файл /etc/rc.local.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/user/scripts/mount.sh

exit 0

Я добавил строку для монтирования /home/user/scripts/mount.sh

Включаем

$ sudo systemctl enable rc-local

Описание файла mysql\programm\sql.cfg

Вот содержимое файла

ip_server;new;z:\programm\

ip_server - это ip адрес MYSQL сервера
new - Имя базы данных
z:\programm\ - Путь до папки mysql\programm. Может быть как шара, например, //192.168.1.1\mysql\programm\, или через подмонтированный диск, например, Z:\programm\.

Скрипт по созданию шары и регистрации библиотеки midas.dll

1. Открываем консоль (Ctrl+Alt+t)
2. Идем в папку ~/scripts

$ cd ~/scripts

3. Запускаем МС

$ mc

4. Открываем редактор (Shift+F4) и копируем туда следующий скрипт

#!/bin/bash
#set -x   #Разкоментировать для отладки
# Создаем шару (Диск Z)
rm ~/.wine/dosdevices/z:
ln -s /media/mysql ~/.wine/dosdevices/z:
# Регистрируем библиотеку midas.dll
$ cd /mysql/programm
$ regsvr32 /i midas.dll

5. Сохраняем в файл wine_begin.sh (F4 и вводим имя файла)
6. Запускаем скрипт

$ sh wine_begin.sh

Тоже самое можно сделать вручную. Смотри следующие 2 пункта.

Изменение шары на Linux wine

Открываем консоль
Запускаем

winecfg 

Вкладка Диски
Встаем на диск Z:
Указываем путь /mysql

Регистрация библиотеки midas.dll

Открываем консоль.

$ cd /mysql/programm
$ regsvr32 /i midas.dll
0032:err:user:load_desktop_driver failed to load L"C:\\windows\\system32\\winex11.drv"
regsvr32: DLL «midas.dll» успешно зарегистрирована
regsvr32: «DllInstall» не реализован в DLL «midas.dll»

Редактирование sql.cfg

Для того, что бы программа работала и на Windows и на Linux клиентах делаем следующее
1. Z диск в wine - это корень машины под Linux. Поэтому надо изменить файл /mysql/programm/sql.cfg на Windows сервере.

ip_server;new;z:\programm\

2. На всех виндовых клиентах подмонтировать ресурс mysql как z:

Настройка значка запуска

Жмем правую кнопку мыши на рабочем столе и из меню выбираем Создать значок запуска
Вводим

  1. Имя - Статистика и счета ЛПУ
  2. Команда - wine Project2.exe
  3. Рабочий каталог - /mysql/programm
  4. Выбираем понравившийся значок и жмем Создать

На экране появится ярлык с программой.
Запускаем ее и на вопрос Жмем Сделать исполняемым