Как выполнить автоматическую установку для любого установщика, использующего Wine?

В winetricks Справка я вижу следующую опцию:

-q, --unattended Не задавайте никаких вопросов, просто установите автоматически

что позволяет автоматически устанавливать множество приложений и игр (winetricks games list) без какого-либо взаимодействия с пользователем.

Как это сделать и как этого добиться для пользовательского бинарного файла (такого как этот)?

Связанный: Программное обеспечение, чтобы заставить установку / установку работать тихо

2 ответа

Решение

Целиком winetricks Программа это всего лишь сценарий оболочки. Для каждой поддерживаемой программы она состоит из нескольких команд для загрузки установщика, его запуска, а затем нажатия кнопок на каждой странице мастера установки. Все это нужно программировать вручную.

Например, посмотрите, как установлен Python:

cd "$W_CACHE"/python26
w_try "$WINE" msiexec /i python-2.6.2.msi ALLUSERS=1 $W_UNATTENDED_SLASH_Q

w_ahk_do "
    SetTitleMatchMode, 2
    run pywin32-214.win32-py2.6.exe
    WinWait, Setup, Wizard will install pywin32
    if ( w_opt_unattended > 0 ) {
         ControlClick Button2   ; next
         WinWait, Setup, Python 2.6 is required
         ControlClick Button3   ; next
         WinWait, Setup, Click Next to begin
         ControlClick Button3   ; next
         WinWait, Setup, finished
         ControlClick Button4   ; Finish
    }
    WinWaitClose
    "

Я не могу помочь дальше, потому что я не знаком с функциями; но, следуя примерам, вы сможете это сделать.

Существует также xdotool что позволяет очень легко подделать ввод с мыши и клавиатуры.

Например:

wine setup.exe &
# Wait until Wine initializes
while : ; do
    echo "Waiting for Wine to initialize..."
    sleep 2
    set +e  # Fix for: https://github.com/jordansissel/xdotool/issues/60
    WINDOW_ID=$(xdotool search --name "Setup*")
    set -e
    [[ -z $WINDOW_ID ]] || break
done

# Set focus on installer window and act to install platform
xdotool windowfocus $WINDOW_ID
xdotool key space Tab Tab Tab Return Tab Tab Tab space Alt+n
Другие вопросы по тегам