Если запустить wineboot -u в хостовой системе или в контейнере, он нормально отработает, в частности присвоит системные переменные, включая %ProgramFiles%.
Если запустить wineboot -u при сборке образа (RUN wineboot -u), он вроде бы отработает так же, но %ProgramFiles% останется пустой.
А без %ProgramFiles% не работает winetricks и не ставятся рантаймы VC. Можно это как-то обойти?
P.S. А если wine ставится в /opt, и пакет добавляет путь в PATH, путь в PATH не добавляется.
Debian:stable-slim, wine 1.8.7 (последний дебиановский) или 4.0 (последний стабильный на WineHQ).
Воркэраунд: wineboot -u && winetricks vcrun2005
Но после него опять не видит эти переменные.
Ответ 1: Каждая строка RUN выполняется в отдельном шелле, который завершается при выходе из последней команды в строке. Если какие-то из команд породили процессы, например, wineserver, эти процессы убиваются, и не успевают сохранить результаты. Добавление в конце строки wineboot -s не помогает, так как она тоже завершается до завершения wineserver. Необходимо дождаться завершения самого wineserver, например
RUN wineboot -i && wineserver -w
Но пока не решил, что делать с PATH.
Ответ 2: Похоже, сам пакет wine-stable не прописывает /opt/wine-stable/bin в PATH, и это следует делать вручную. Добавил соответствующую команду ENV.
Итого получился 3-гигабайтный образ вместо 14-гигабайтного с Windows. Возможно, стоит поставить какой-нибудь сервер X, чтобы избавиться от ошибок OLE.