Веб-версияОткрыть в Telegram

ВеткаУ меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nu…

11 сообщений · –
P
Ссылка
нажмите — покажем
У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nuitka. И вот этапы борьбы поиска удобного решения. ▫️ Dual Boot Пока был дуалбут, я перезагружался в Windows, копировал исходники и запускал сборку. Рабочий вариант, но времени занимает слишком уж много. К тому же дуалбута давно нет. ▫️ VirtualBox Если нет дуалбута, то выручает VirtualBox. Тут стало проще, я расшарил папку с проектом в Windows как сетевой диск. Просто запускаю готовый скрипт сборки и готово. Файл сохраняется сразу на место. Но горький опыт заставил делать шару ReadOnly, что требует сначала копировать проект на локальный диск в виртуалку и только потом запускать сборку. После чего перебрасывать результат. В общем, тоже так себе вариант 😖 Ясное дело, что эти два способа достаточно наивны и никакой автоматики. Поэтому пошли далее... ▫️ Wine Выглядит всё просто. Выполняем обычные виндовые команды в терминале, просто в начале нужно дописывать wine. Попробуйте выполнить команду wine cmd и вы окажетесь в "обычной" виндовой консоли. Ну а там просто выполняем команды сборки. Главное - установить все необходимые зависимости. В целом запускается, но дебажить не удобно. Проверить запуск на "чистой винде" тоже не получится, только через тот же Wine. Поэтому в итоге я остановился на следующем варианте. ▫️ VirtualBox CLI Это тоже самое что пункт 2 но полностью на автомате. Используя команду VBoxManage можно манипулировать виртуалкой. - VBoxManage startvm - запускает виртуалку по имени, в том числе headless - VBoxManage guestcontrol "VM_NAME" "CMD" позволяет запускать шел-команды - copyto и copyfrom - позволяет копировать туда-сюда файлы В результате, мы можем кодом запустить виртуалку, выполнить необходимые действия, забрать результат и погасить виртуалку! В скрипте я запускаю VM, копирую в неë батник сборки и исходники и запускаю. После сборки файл копируется обратно на хост в dest. А если надо, запускаем виртуалку в обычном режиме и визуально дебажим скрипты сборки и само приложение. Из минусов только 20 занятых гигов на винду. Итого, получился такой демо-проект↗️ со сборкой простого диалога на PySide6. В проекте примеры с wine и VirtualBox CLI Не обещаю, что у вас запустится сразу, но у скрипты точно рабочие! Какие еще есть варианты ▫️В Docker контейнере. Например есть такой cdrx/pyinstaller-windows ▫️Говорят PyOxidizer в будущем сможет делать это без танцев с бубном, но пока не реализовано. Только вот проект 2 года не обновляется, может и не реализуют уже 😢 #pyside #linux
6 · 686 ·
  1. С
    Есть же qemu/kvm. Зачем городить огород? Если хотите обвязку, то самое простое - libvirt. Если надо гуй, то aqemu.
    1. P
      Python Заметки - Чат
      Это следующий этап поисков)
  2. С
    винду гонять для сборки чего-то там. можно поставить либвирт с кему и там можно разбудить машинку с виндой, пихнуть там сборку, скрипт в винде высосет из гита репу или шареный диск обновит, запустит всякие питоны и вижуалкоды, положит куда надо результат. потом либвирт усыпит машинку, чтоб не мешала и не жрала ресурсы.
    1. P
      Python Заметки - Чат
      Спасиб, посмотрю
  3. С
    там есть и модуль к питону, чтобы прямо из питона всем этим управлять
  4. С
    Я больше на шеле писал обвязки к либвирту без питона. Там есть virsh тула, ею можно сделать всё нужное. Для гуя, если кушать не сможете без нуя, есть vnc на машинки автоматом. Либвирт умеет lxc, если линухи в контейнерах запускать. Это как докер, только маленький и лёгкий.

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем