diff --git a/winehelper b/winehelper index 42558a3..3ad5eb4 100755 --- a/winehelper +++ b/winehelper @@ -841,9 +841,9 @@ get_base_pfx () { fi } -init_wineprefix () { +check_prefix_var () { if [[ -z "$WINEPREFIX" ]] ; then - print_warning "Префикс не выбран, используйте пееременную: WINEPREFIX=имя_префикса" + print_warning "Префикс не выбран, используйте переменную: WINEPREFIX=имя_префикса" print_info "Список существующих префиксов:" ls -1 "$WH_PREFIXES_DIR" echo @@ -852,7 +852,12 @@ init_wineprefix () { if echo "$WINEPREFIX" | grep -v '/' ; then export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX" fi + return 0 fi +} + +init_wineprefix () { + check_prefix_var if [[ "$WINEARCH" == "win32" ]] then check_variables BASE_PFX "defpfx_x86_v01" @@ -910,6 +915,14 @@ init_wineprefix () { get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXRandR' get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXVidMode' fi + + echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf" + for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \ + STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \ + WINE_CPU_TOPOLOGY USE_RENDERER DXVK_VER VKD3D_VER + do + echo "export $var=\"${!var}\"" >> "$WINEPREFIX/last.conf" + done } ##### KILL AUTOSTART AFTER INSTALLING ##### @@ -992,6 +1005,7 @@ kill_wine () { } init_database () { + WHDB_FILE="0" if [[ -f "$WIN_FILE_EXEC" ]] ; then WHDB="$(basename "$WIN_FILE_EXEC" .exe)" if [[ -f "$WIN_FILE_EXEC".whdb ]] ; then @@ -1000,20 +1014,23 @@ init_database () { orig_IFS="$IFS" IFS=$'\n' WH_FIND_DB_FILE="$(grep -ilw "#$WHDB.exe" "$WH_DB_DIR"/* )" - if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -gt 1 ]] ; then - print_error "Найдено более одного файла настроек: $WHDB.exe" - WHDB_FILE="$(echo "$WH_FIND_DB_FILE" | head -n1)" - else + if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -eq 1 ]] ; then WHDB_FILE="$WH_FIND_DB_FILE" fi IFS="$orig_IFS" fi - if [[ "$WHDB_FILE" ]] ; then - print_info "Используется файл настроек: $WHDB_FILE" - . "$WHDB_FILE" - else - print_warning "Файл настроек не найден. Пропускаем." - fi + fi + + if [[ "$WHDB_FILE" != "0" ]] ; then + print_info "Используется файл настроек: $WHDB_FILE" + . "$WHDB_FILE" + elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then + print_info "Найдены настройки из предыдущего использования префикса." + echo "$WINEPREFIX/last.conf" + cat "$WINEPREFIX/last.conf" + . "$WINEPREFIX/last.conf" + else + print_warning "Файл настроек не найден. Пропускаем." fi } @@ -1039,7 +1056,10 @@ prepair_wine () { var_winedlloverride_update "winemenubuilder.exe=d" - init_database + if [[ -n "$INSTALL_SCRIPT_NAME" ]] + then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME" + else init_database + fi init_wine_ver init_wineprefix use_winetricks