Merge branch 'minergenon-devel'
This commit is contained in:
44
winehelper
44
winehelper
@@ -1184,6 +1184,16 @@ init_wineprefix () {
|
||||
# добавление ассоциаций файлов для запуска нативного приложения из wine
|
||||
# пример переменной: WH_XDG_OPEN="txt doc pdf"
|
||||
check_variables WH_XDG_OPEN "0"
|
||||
# Сохраняем старые ассоциации, чтобы потом удалить те, что больше не нужны
|
||||
local old_xdg_open
|
||||
if [[ -f "$WINEPREFIX/last.conf" ]]; then
|
||||
old_xdg_open=$(grep "WH_XDG_OPEN=" "$WINEPREFIX/last.conf" | sed -e 's/.*WH_XDG_OPEN="//' -e 's/"$//')
|
||||
fi
|
||||
|
||||
# Если переменная WH_XDG_OPEN была установлена извне (например, из GUI),
|
||||
# то мы должны принудительно установить ее значение в "0", если она пуста,
|
||||
# чтобы корректно удалить старые ассоциации.
|
||||
[[ -z "$WH_XDG_OPEN" ]] && WH_XDG_OPEN="0"
|
||||
local WRAPPER="${WH_TMP_DIR}/wh-xdg-open.sh"
|
||||
local XDG_OPEN_REG="Software\Classes\xdg-open\shell\open\command"
|
||||
if [[ $WH_XDG_OPEN != "0" ]] ; then
|
||||
@@ -1206,13 +1216,25 @@ init_wineprefix () {
|
||||
# добавляем новую команду xdg-open в реестр
|
||||
get_and_set_reg_file --add "$XDG_OPEN_REG" '@=' 'REG_SZ' "$WRAPPER %1" "system"
|
||||
|
||||
# Удаляем старые ассоциации, которых нет в новом списке
|
||||
if [[ -n "$old_xdg_open" ]]; then
|
||||
for old_ext in $old_xdg_open; do
|
||||
if ! echo " $WH_XDG_OPEN " | grep -q " $old_ext "; then
|
||||
get_and_set_reg_file --delete "Software\Classes\.$old_ext" '@='
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# добавляем ассоциации файлов для запуска с помощью xdg-open
|
||||
for ext in $WH_XDG_OPEN ; do
|
||||
get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system"
|
||||
done
|
||||
print_info "Используются ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
|
||||
else
|
||||
# удаление команды xdg-open из реестра
|
||||
# удаление всех ассоциаций
|
||||
for old_ext in $old_xdg_open; do
|
||||
get_and_set_reg_file --delete "Software\Classes\.$old_ext" '@='
|
||||
done
|
||||
get_and_set_reg_file --delete "$XDG_OPEN_REG" '@='
|
||||
# удаяем скрипт-обёртку
|
||||
try_remove_file "$WRAPPER"
|
||||
@@ -1353,6 +1375,13 @@ init_database () {
|
||||
. "$WHDB_FILE"
|
||||
elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then
|
||||
print_info "Найдены настройки из предыдущего использования префикса: $WINEPREFIX"
|
||||
# Сохраняем значение WH_XDG_OPEN, если оно было установлено извне (например, из GUI).
|
||||
# Это предотвращает его перезапись старым значением из last.conf.
|
||||
# Используем `declare -p` для надежного определения, была ли переменная установлена,
|
||||
# даже если она пустая (что означает "удалить все ассоциации").
|
||||
if declare -p WH_XDG_OPEN &>/dev/null; then
|
||||
wh_xdg_open_from_env="$WH_XDG_OPEN"
|
||||
fi
|
||||
cat "$WINEPREFIX/last.conf"
|
||||
. "$WINEPREFIX/last.conf"
|
||||
else
|
||||
@@ -1361,10 +1390,19 @@ init_database () {
|
||||
}
|
||||
|
||||
prepair_wine () {
|
||||
# Объявляем переменную здесь, чтобы она была доступна после вызова init_database
|
||||
local wh_xdg_open_from_env
|
||||
|
||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
||||
then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME"
|
||||
else init_database
|
||||
fi
|
||||
# Восстанавливаем значение WH_XDG_OPEN, если оно было установлено извне.
|
||||
# Проверяем, была ли переменная сохранена, а не ее значение.
|
||||
# Это позволяет корректно передать пустую строку.
|
||||
if declare -p wh_xdg_open_from_env &>/dev/null; then
|
||||
export WH_XDG_OPEN="$wh_xdg_open_from_env"
|
||||
fi
|
||||
init_wine_ver
|
||||
init_wineprefix
|
||||
use_winetricks
|
||||
@@ -1394,9 +1432,9 @@ wine_run () {
|
||||
echo "##### Лог WINE #####" | tee -a "$LOG_FILE"
|
||||
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$LOG_FILE"
|
||||
else
|
||||
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS
|
||||
exec $MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS
|
||||
fi
|
||||
wait_wineserver
|
||||
# wait_wineserver
|
||||
}
|
||||
|
||||
wine_run_install () {
|
||||
|
Reference in New Issue
Block a user