Windows-скрипты на Arch запускаются, и виртуалка для этого не нужна. Ставим wine и wine-mono одной командой, sudo pacman -S wine wine-mono, и запускаем нужную утилиту прямо из терминала. У меня так работает рекламный инструмент Direct Commander, который без Windows-окружения не живёт.
Всё началось с рекламной утилиты Direct Commander. Инструмент нужен для работы с рекламными кабинетами, и существует он только под Windows. Ни аналогов под Linux, ни веб-версии, ни нормальной замены. Пришлось крутиться.
Казалось бы, на Arch есть всё. Но часть инструментов существует только под Windows. Рекламные утилиты, парсеры, мелкие бизнес-программы, скрипты на PowerShell. Переписывать их под Linux никто не собирается, а работать с ними надо.
Тут и приходит Wine. Это прослойка, которая переводит Windows-вызовы в Linux-вызовы. Программа думает, что работает в Windows, а на деле сидит в обычном процессе на Arch. Для скриптов и утилит этого хватает с головой.
Отдельно стоит wine-mono. Это свободная реализация .NET Framework. Многие Windows-скрипты написаны на PowerShell или C#, и без .NET-рантайма они не стартуют. wine-mono закрывает эту дыру.
Вместе оба пакета тянут примерно 818 МиБ. Звучит внушительно, но это разовая плата, дальше всё работает из коробки.
Сначала обновляем систему, это стандартное правило Arch:
sudo pacman -Syu
Потом ставим сам Wine:
sudo pacman -S wine wine-mono
Пакеты лежат в официальных репозиториях, так что никаких AUR и сборок. Всё, что нужно, pacman притащит сам, включая зависимости.
После установки проверяем версию:
wine --version
Если в ответ строка вида wine-10.x, значит, всё на месте.
Запуск выглядит до смешного просто. Переходим в папку с программой и пишем:
wine DirectCommander.exe
Первый запуск займёт время. Wine создаст префикс в ~/.wine, настроит окружение, инициализирует wine-mono. Дальше утилита стартует как обычное приложение.
У меня Direct Commander поднялся без единой пляски с бубном. Скрипт увидел своё окружение, подтянул настройки, и всё заработало. Единственный нюанс: окно программы выглядит как Windows-окно, но это ожидаемо.
Если скрипт требует PowerShell, wine-mono даёт и его. Windows-скрипты на .NET запускаются тем же wine, без дополнительных телодвижений.
Если утилита капризничает, загляни в winecfg. Там можно выставить версию Windows, посмотреть установленные компоненты и пересоздать префикс. Для большинства скриптов хватает настроек по умолчанию.
Запускать утилиту из терминала каждый раз неудобно. Решение простое: создаём .desktop-файл, и программа появляется в меню как обычное приложение.
Файл кладём в ~/.local/share/applications/, например direct-commander.desktop. Полный формат и опции описаны на странице Desktop entries в ArchWiki:
[Desktop Entry]
Name=Direct Commander
Comment=Рекламная утилита через Wine
Exec=wine /home/user/.wine/drive_c/Program Files/DirectCommander/DirectCommander.exe
Type=Application
Categories=Utility;
Путь к исполняемому файлу подставляй свой. После этого ищи Direct Commander в меню приложений, как любую другую программу.
Первое, с чем сталкиваются все, это медленный первый запуск. Wine создаёт префикс, ставит wine-mono, и на это уходит пара минут. Не пугайся, второй запуск будет мгновенным.
Второе: скрипт ругается на отсутствие .NET. Значит, wine-mono не подхватился. Лечится пересозданием префикса через winecfg.
Третье: пункт меню не появился. Проверь, что файл лежит в ~/.local/share/applications/ и что путь в Exec верный. Иногда помогает перелогиниться.
Wine и wine-mono занимают много места? Около 818 МиБ вместе. Это один раз, и за это вы получаете запуск Windows-скриптов без виртуалки.
Можно ли убрать wine после запуска скрипта? Не советую. Скрипты вроде Direct Commander нужны регулярно, и каждый раз ставить и сносить Wine глупо. Пусть живёт, места он больше не попросит.
Wine сломает мою систему?
Нет. Wine работает в своём префиксе ~/.wine и не трогает системные пакеты. Это обычный пользовательский процесс.
Что делать, если скрипт не запускается?
Смотри вывод в терминале. Чаще всего проблема в отсутствии wine-mono или в кривом префиксе. Помогает winecfg, он пересоздаёт окружение.
Нужна ли виртуалка вместо Wine? Для скриптов нет. Виртуалка съедает ресурсы и требует отдельной Windows-лицензии. Wine справляется с утилитами на ура.
Wine на Arch решает задачу, которую иначе решать нечем. Одна команда установки, и Windows-скрипты работают рядом с Linux-программами. У меня Direct Commander живёт так уже давно, и я про него забыл, пока не сел писать эту статью.
Если тема Windows-совместимости интересна, глянь статью про PortProton, там тот же Wine, но для игр. А если захочешь автоматизировать установку таких инструментов, тебе в AUR, про него тоже есть статья.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии