From 30c7ce02b4117016e57a5f71193811d37e6a5b5f Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Tue, 1 Apr 2025 17:10:52 +0300 Subject: [PATCH] separated install scripts --- winehelper | 66 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/winehelper b/winehelper index 0727e55..9b35aeb 100755 --- a/winehelper +++ b/winehelper @@ -49,6 +49,7 @@ WH_TMP_DIR="$USER_WORK_PATH/tmp" WH_IMAGE_PATH="$DATA_PATH/image" WH_DB_DIR="$DATA_PATH/database" WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall" +WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall" # export WINEDLLOVERRIDES=mshtml,mscoree=" @@ -95,8 +96,6 @@ fi export CLOUD_URL="https://cloud.linux-gaming.ru/portproton" -export WH_AUTOINSTALL="0" - ##### CHECK NOEXEC FOR /HOME ##### if grep "/home" /etc/fstab | grep -q "noexec" ; then fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога." @@ -406,14 +405,14 @@ create_desktop () { cp -f "$USER_WORK_PATH/$name_desktop.desktop" "$(xdg-user-dir DESKTOP)" print_info "На рабочем столе создан $name_desktop.desktop" - if [[ "$USE_AI_SCRIPTS" == "1" ]] \ + if [[ -n "$INSTALL_SCRIPT_NAME" ]] \ && [[ -f "$exe_file" ]] then { echo '#!/usr/bin/env bash' - echo "# cmd_name: $AI_SCRIPT" + echo "# cmd_name: $INSTALL_SCRIPT_NAME" } > "$exe_file".whdb - grep -e "info_" -e "#####" -e "export" -e "var_" "$WH_AUTOINSTALL_DIR/$AI_SCRIPT" \ + grep -e "info_" -e "#####" -e "export" -e "var_" "$INSTALL_SCRIPT" \ | grep -vE "LAUNCH_PARAMETERS|AUTOINSTALL|WIN_FILE_EXEC|echo" \ | awk '{$1=$1;print}' >> "$exe_file".whdb print_info "Создан файл настроек для $exe_file" @@ -476,10 +475,10 @@ init_wined3d () { try_copy_wine_dll_to_pfx_64 "$wined3dfiles.dll" try_copy_wine_dll_to_pfx_32 "$wined3dfiles.dll" done - if [[ "$USE_RENDERER" == "damavand" ]] - then export WINE_D3D_CONFIG="renderer=vulkan" - else export WINE_D3D_CONFIG="renderer=gl" - fi +# if [[ "$USE_RENDERER" == "damavand" ]] +# then export WINE_D3D_CONFIG="renderer=vulkan" +# else export WINE_D3D_CONFIG="renderer=gl" +# fi return 0 else return 1 @@ -834,7 +833,9 @@ init_database () { } prepair_wine () { - if [[ "$WH_AUTOINSTALL" == 1 ]] ; then + if [[ -n "$INSTALL_SCRIPT_NAME" ]] \ + && [[ "$FORCE_INSTALL" != "1" ]] + then print_warning "Лицензионные соглашения использования сторонних компонентов: Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, могут @@ -883,7 +884,9 @@ wine_run () { wine_run_install () { print_info "Запускаем установку приложения $PROG_NAME." - print_warning "Рекомендуется не менять пути для установки приложения!" + if [[ "$INSTALL_MODE" == "manual" ]] + then print_warning "Рекомендуется не менять пути для установки приложения!" + fi [[ ! -f "$1" ]] && fatal "Нет файла для установки: $1" case "${1,,}" in *.exe) wine_run $WINE_WIN_START "$@" ;; @@ -901,8 +904,20 @@ run_autoinstall () { elif [[ $2 == "--clear-pfx" ]] ; then export CLEAR_PREFIX="1" fi - AI_SCRIPT="${1,,}" - if [[ $AI_SCRIPT == "list" ]] || [[ -z "$AI_SCRIPT" ]] ; then + + INSTALL_SCRIPT_NAME="${1,,}" + if [[ -f "$WH_AUTOINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then + INSTALL_SCRIPT="$WH_AUTOINSTALL_DIR/$INSTALL_SCRIPT_NAME" + WH_INSTALL_MODE="auto" + elif [[ -f "$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then + INSTALL_SCRIPT="$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" + WH_INSTALL_MODE="manual" + else + INSTALL_SCRIPT="0" + fi + export INSTALL_SCRIPT INSTALL_MODE + + if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then echo "Список программ с возможностью автоматической установки:" for list in $(ls "$WH_AUTOINSTALL_DIR") ; do AI_INFO="$(grep "info_ru:" "$WH_AUTOINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')" @@ -911,12 +926,11 @@ run_autoinstall () { echo "$AI_INFO" done echo - elif [[ -f "$WH_AUTOINSTALL_DIR/$AI_SCRIPT" ]] ; then - export USE_AI_SCRIPTS="1" - source "$WH_AUTOINSTALL_DIR/$AI_SCRIPT" "$@" - print_info "Завершена установка $AI_SCRIPT" + elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then + source "$INSTALL_SCRIPT" "$@" + print_info "Завершена установка $INSTALL_SCRIPT_NAME" else - fatal "Скрипт автоматической установки для $AI_SCRIPT не найден!" + fatal "Скрипт автоматической установки для $INSTALL_SCRIPT_NAME не найден!" fi } @@ -924,17 +938,17 @@ wh_info () { echo "Использование: $SCRIPT_NAME [команда] Команды: - install|-i list список возможных установочных скриптов - install|-i [скрипт] запустить скрипт установки программы - install|-i [скрипт] --clear-pfx не использовать подготовленный префикс для установки ПО + install list список возможных установочных скриптов + install [скрипт] запустить скрипт установки программы + install [скрипт] --clear-pfx не использовать подготовленный префикс для установки ПО - installed|run список установленных программ - run [программа.exe] запуск программы (отладка) + installed список установленных программ + run [программа.exe] запуск программы (отладка) Параметры: - --help показать эту справку и выйти - --version показать информацию о пакете и его версии - --debug [команда] включить режим логирования работы WINE + --help показать эту справку и выйти + --version показать информацию о пакете и его версии + --debug [команда] включить режим логирования работы WINE " }