ci: wine shim uses absolute wine64 path (stripped PATH in act)
Release / build-windows (push) Failing after 3m50s
Release / publish-update-feed (push) Has been skipped

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-11 22:53:08 +08:00
parent 875f8cbb3b
commit d3cdc468b5
2 changed files with 15 additions and 2 deletions
+14 -1
View File
@@ -33,13 +33,26 @@ jobs:
# electron-builder подхватывает makensis; wine64 — для win-утилит (rcedit и т.п.).
# Пакет `wine` (мета) тянет wine32 → снова i386. electron-builder ищет именно `wine` в PATH.
- name: Зависимости Win-сборки на Linux (amd64, без multiarch i386)
shell: bash
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates \
nsis \
wine64
printf '%s\n' '#!/bin/sh' 'exec wine64 "$@"' | sudo tee /usr/local/bin/wine >/dev/null
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
W64="$(command -v wine64 2>/dev/null || true)"
if [[ -z "$W64" || ! -x "$W64" ]]; then
for p in /usr/bin/wine64 /usr/lib/wine/wine64; do
if [[ -x "$p" ]]; then W64="$p"; break; fi
done
fi
if [[ -z "${W64:-}" || ! -x "$W64" ]]; then
echo "wine64 binary not found after apt install wine64" >&2
dpkg -L wine64 2>/dev/null | head -80 >&2 || true
exit 1
fi
printf '%s\n' '#!/bin/sh' "exec $W64 \"\$@\"" | sudo tee /usr/local/bin/wine >/dev/null
sudo chmod +x /usr/local/bin/wine
wine --version
+1 -1
View File
@@ -100,7 +100,7 @@ Gitea **не запускает** workflow на своём процессе: н
### Требования к машине под наш `release.yml`
В workflow для job **`ubuntu-22.04`** идут **`sudo apt-get`** (пакеты **`nsis`**, **`wine64`**) на **Linux**. Multiarch **i386** намеренно не включается — на Debian с репозиториями только под amd64 (nginx, sury и т.п.) установка **wine32** часто падает с «unmet dependencies». После установки **`wine64`** в CI создаётся скрипт **`/usr/local/bin/wine`**, вызывающий **`wine64`**: electron-builder проверяет именно команду **`wine`** в `PATH`. Поэтому:
В workflow для job **`ubuntu-22.04`** идут **`sudo apt-get`** (пакеты **`nsis`**, **`wine64`**) на **Linux**. Multiarch **i386** намеренно не включается — на Debian с репозиториями только под amd64 (nginx, sury и т.п.) установка **wine32** часто падает с «unmet dependencies». После установки **`wine64`** в CI создаётся скрипт **`/usr/local/bin/wine`** с **`exec` по полному пути** к **`wine64`** (в job у act_runner иногда пустой/урезанный `PATH`, тогда имя `wine64` без пути не находится). electron-builder проверяет именно команду **`wine`** в `PATH`. Поэтому:
- Нужен **Linux x86_64** (идеально **Ubuntu 22.04**), либо **WSL2** с Ubuntu 22.04 на Windows.
- Запускать раннер на «голом» Windows с меткой `ubuntu-22.04` **бессмысленно** — шаги с `apt` не выполнятся.