forked from CastroFidel/winehelper
Compare commits
1 Commits
extract_ic
...
extra_empt
Author | SHA1 | Date | |
---|---|---|---|
2401c9806a |
@ -1,13 +1,5 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
0.5.0:
|
|
||||||
* добавлен явный вывод отказа от ответственности и соглашения с ним
|
|
||||||
* обновлены все скрипты для установки t-flex-*
|
|
||||||
* добавлен wine_wh_tflex_10-9 с патчами для t-flex-*
|
|
||||||
* добавлена поддержка новых версий wine 10.3 и выше
|
|
||||||
* удален пакет libOSMesa из проверки на зависимости
|
|
||||||
* другие небольшие улучшения и оптимизации скриптов
|
|
||||||
|
|
||||||
0.4.9:
|
0.4.9:
|
||||||
* добавлено автодопонение команд для zsh (zsh_completion)
|
* добавлено автодопонение команд для zsh (zsh_completion)
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ windows приложения. Подробнее по ссылке: https://www.
|
|||||||
# fonts-ttf-ms
|
# fonts-ttf-ms
|
||||||
|
|
||||||
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
||||||
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
||||||
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
||||||
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
||||||
|
|
||||||
|
181
winehelper
181
winehelper
@ -13,13 +13,11 @@ if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
|
|||||||
USER_WORK_PATH="$HOME/.local/share/$SCRIPT_NAME"
|
USER_WORK_PATH="$HOME/.local/share/$SCRIPT_NAME"
|
||||||
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
|
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
|
||||||
DATA_PATH="/usr/share/$SCRIPT_NAME"
|
DATA_PATH="/usr/share/$SCRIPT_NAME"
|
||||||
CHANGELOG_FILE="$(realpath "/usr/share/doc/winehelper"-*/CHANGELOG)"
|
|
||||||
else
|
else
|
||||||
# переменные для тестового запуска WineHelper из репозитория
|
# переменные для тестового запуска WineHelper из репозитория
|
||||||
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
|
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
|
||||||
RUN_SCRIPT="$(realpath "$0")"
|
RUN_SCRIPT="$(realpath "$0")"
|
||||||
DATA_PATH="$(dirname "$RUN_SCRIPT")"
|
DATA_PATH="$(dirname "$RUN_SCRIPT")"
|
||||||
CHANGELOG_FILE="$DATA_PATH/CHANGELOG"
|
|
||||||
|
|
||||||
# минимальная проверка синтаксиса скриптов
|
# минимальная проверка синтаксиса скриптов
|
||||||
for self_check_script in "$RUN_SCRIPT" \
|
for self_check_script in "$RUN_SCRIPT" \
|
||||||
@ -41,15 +39,6 @@ fatal () {
|
|||||||
[[ -n "$WINESERVER" ]] && "$WINESERVER" -w
|
[[ -n "$WINESERVER" ]] && "$WINESERVER" -w
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
print_confirmation () {
|
|
||||||
local answer
|
|
||||||
read -p "$@ (y/N): " answer
|
|
||||||
if [[ ! "$answer" =~ ^[Yy]$ ]] ; then
|
|
||||||
print_info "Отменено пользователем."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
##### CHECK VARIABLES #####
|
##### CHECK VARIABLES #####
|
||||||
check_variables () { [[ -z ${!1} ]] && export $1="$2" ;}
|
check_variables () { [[ -z ${!1} ]] && export $1="$2" ;}
|
||||||
@ -146,11 +135,6 @@ check_variables VKD3D_VER "1.1-2602"
|
|||||||
|
|
||||||
export CLOUD_URL="https://cloud.linux-gaming.ru/portproton"
|
export CLOUD_URL="https://cloud.linux-gaming.ru/portproton"
|
||||||
|
|
||||||
if env | grep license_agreement_file
|
|
||||||
then fatal "Обнаружена подмена переменной license_agreement_file!"
|
|
||||||
else readonly license_agreement_file="$(mktemp -d)/$((RANDOM % RANDOM))"
|
|
||||||
fi
|
|
||||||
|
|
||||||
##### CHECK NOEXEC FOR /HOME #####
|
##### CHECK NOEXEC FOR /HOME #####
|
||||||
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
|
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
|
||||||
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
|
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
|
||||||
@ -170,7 +154,7 @@ su_run () {
|
|||||||
##### CHECK DEPENDENCIES #####
|
##### CHECK DEPENDENCIES #####
|
||||||
# fonts-ttf-ms
|
# fonts-ttf-ms
|
||||||
|
|
||||||
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
||||||
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
||||||
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
||||||
then
|
then
|
||||||
@ -335,42 +319,7 @@ check_file_sum () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
print_license_agreement () {
|
|
||||||
if [[ -f "$license_agreement_file" ]] \
|
|
||||||
&& [[ "$(stat -c %a "$license_agreement_file" 2>/dev/null)" == "600" ]]
|
|
||||||
then return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
print_warning "Лицензионные соглашения использования сторонних компонентов:
|
|
||||||
|
|
||||||
Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, могут
|
|
||||||
быть защищены авторским правом или лицензионными соглашениями. Вы обязаны самостоятельно
|
|
||||||
убедиться в законности использования этих компонентов в вашей юрисдикции.
|
|
||||||
|
|
||||||
Мы не несём ответственности за нарушение лицензионных соглашений, связанное с использованием
|
|
||||||
подготовленного префикса, а так же за программное обеспечение поставляемого из сторонних источников.
|
|
||||||
|
|
||||||
Подтверждая продолжение установки, вы соглашаетесь что ознакомились с данным отказом от
|
|
||||||
ответственности и принимаете все риски, связанные с использованием программного обеспечения.
|
|
||||||
"
|
|
||||||
|
|
||||||
if print_confirmation "Подтвердите продолжение установки" ; then
|
|
||||||
touch "$license_agreement_file"
|
|
||||||
chmod 600 "$license_agreement_file"
|
|
||||||
cleanup_laf () {
|
|
||||||
local cleanup_laf_dir="$(dirname "$license_agreement_file")"
|
|
||||||
rm -r "$cleanup_laf_dir" || echo "Не удалось удалить каталог $cleanup_laf_dir"
|
|
||||||
}
|
|
||||||
trap "cleanup_laf" EXIT
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
try_download () {
|
try_download () {
|
||||||
print_license_agreement
|
|
||||||
local download_file_url output_file output_file_name
|
local download_file_url output_file output_file_name
|
||||||
download_file_url="${1// /%20}"
|
download_file_url="${1// /%20}"
|
||||||
output_file="$2"
|
output_file="$2"
|
||||||
@ -483,41 +432,6 @@ var_ld_library_path_update () {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_icon() {
|
|
||||||
check_prefix_var
|
|
||||||
local exe_file="$1"
|
|
||||||
local ico_name="$(basename "$exe_file" .exe).ico"
|
|
||||||
local png_name="$(basename "$exe_file" .exe).png"
|
|
||||||
local tmp_ico_dir="$WH_TMP_DIR/icons"
|
|
||||||
local user_icons="$WINEPREFIX/icons"
|
|
||||||
|
|
||||||
create_new_dir "$tmp_ico_dir"
|
|
||||||
|
|
||||||
if ! wrestool -x -t 14 "$exe_file" -o "$tmp_ico_dir/$ico_name" ; then
|
|
||||||
print_warning "Не удалось извлечь иконку из $exe_file"
|
|
||||||
try_remove_file "$tmp_ico_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! icotool -x -i 1 "$tmp_ico_dir/$ico_name" -o "$tmp_ico_dir/$png_name" ; then
|
|
||||||
print_warning "Не удалось извлечь иконку из $ico_name"
|
|
||||||
try_remove_file "$tmp_ico_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_new_dir "$user_icons"
|
|
||||||
|
|
||||||
if ! try_copy_file "$tmp_ico_dir/$png_name" "$user_icons" ; then
|
|
||||||
print_warning "Не удалось копировать иконку в префикс"
|
|
||||||
try_remove_file "$user_icons"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
try_remove_dir "$tmp_ico_dir"
|
|
||||||
print_ok "Иконка сохранена: $user_icons/$png_name"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
create_desktop () {
|
create_desktop () {
|
||||||
local name_desktop exe_file desktop_filename icon_file desktop_path
|
local name_desktop exe_file desktop_filename icon_file desktop_path
|
||||||
name_desktop="$1"
|
name_desktop="$1"
|
||||||
@ -654,7 +568,6 @@ remove_desktop () {
|
|||||||
|
|
||||||
# Обновляем кэш desktop файлов
|
# Обновляем кэш desktop файлов
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
update-desktop-database "$HOME/.local/share/applications"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_installed_programs () {
|
check_installed_programs () {
|
||||||
@ -1280,6 +1193,25 @@ init_database () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prepair_wine () {
|
prepair_wine () {
|
||||||
|
if [[ -n "$INSTALL_SCRIPT_NAME" ]] \
|
||||||
|
&& [[ "$FORCE_INSTALL" != "1" ]]
|
||||||
|
then
|
||||||
|
print_warning "Лицензионные соглашения использования сторонних компонентов:
|
||||||
|
|
||||||
|
Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, могут
|
||||||
|
быть защищены авторским правом или лицензионными соглашениями. Вы обязаны самостоятельно
|
||||||
|
убедиться в законности использования этих компонентов в вашей юрисдикции.
|
||||||
|
|
||||||
|
Мы не несём ответственности за нарушение лицензионных соглашений, связанное с использованием
|
||||||
|
подготовленного префикса.
|
||||||
|
|
||||||
|
Продолжая использовать данное ПО вы подтверждаете, что ознакомились с данным отказом от
|
||||||
|
ответственности и принимаете все риски, связанные с его использованием.
|
||||||
|
"
|
||||||
|
print_info "Для продолжения нажмите любую клавишу на клавиатуре."
|
||||||
|
read -s -n 1
|
||||||
|
fi
|
||||||
|
|
||||||
var_winedlloverride_update "winemenubuilder.exe=d"
|
var_winedlloverride_update "winemenubuilder.exe=d"
|
||||||
|
|
||||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
||||||
@ -1300,11 +1232,6 @@ prepair_wine () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wine_run () {
|
wine_run () {
|
||||||
if [[ $WINEARCH == "win32" ]] \
|
|
||||||
&& file "$WIN_FILE_EXEC" | grep -q "x86-64"
|
|
||||||
then fatal "Нельзя запустить 64-битное приложение в 32-битном префиксе!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
WIN_FILE_PATH="$(dirname "$WIN_FILE_EXEC")"
|
WIN_FILE_PATH="$(dirname "$WIN_FILE_EXEC")"
|
||||||
[[ -d "$WIN_FILE_PATH" ]] && cd "$WIN_FILE_PATH"
|
[[ -d "$WIN_FILE_PATH" ]] && cd "$WIN_FILE_PATH"
|
||||||
|
|
||||||
@ -1417,8 +1344,11 @@ remove_prefix() {
|
|||||||
echo " - Удалению всех программ, установленных в этом префиксе"
|
echo " - Удалению всех программ, установленных в этом префиксе"
|
||||||
echo " - Удалению связанных ярлыков из меню и рабочего стола"
|
echo " - Удалению связанных ярлыков из меню и рабочего стола"
|
||||||
echo "======================================================"
|
echo "======================================================"
|
||||||
if ! print_confirmation "Продолжить удаление?"
|
read -p "Продолжить удаление? (y/N): " answer
|
||||||
then exit 1
|
|
||||||
|
if [[ ! "$answer" =~ ^[YyДд]$ ]]; then
|
||||||
|
print_info "Удаление префикса отменено."
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1451,40 +1381,48 @@ remove_winehelper () {
|
|||||||
echo " - Все приложения/программы, установленные через WineHelper"
|
echo " - Все приложения/программы, установленные через WineHelper"
|
||||||
echo " - Все ярлыки из меню и с рабочего стола созданные с помощью WineHelper"
|
echo " - Все ярлыки из меню и с рабочего стола созданные с помощью WineHelper"
|
||||||
echo "======================================================"
|
echo "======================================================"
|
||||||
if print_confirmation "Продолжить?" ; then
|
echo "Продолжить? (y/N)"
|
||||||
|
read -r answer
|
||||||
|
|
||||||
|
if [[ "$answer" =~ ^[YyДд]$ ]] ; then
|
||||||
|
# Второе подтверждение
|
||||||
echo "----------------------------------------------"
|
echo "----------------------------------------------"
|
||||||
print_warning " ВЫ ТОЧНО УВЕРЕНЫ?"
|
print_warning " ВЫ ТОЧНО УВЕРЕНЫ?"
|
||||||
echo "----------------------------------------------"
|
echo "----------------------------------------------"
|
||||||
if ! print_confirmation "Продолжить?"
|
echo "Продолжить? (y/N)"
|
||||||
then exit 1
|
read -r answer
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
exit 1
|
print_info "Удаление отменено."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Удаление рабочих каталогов
|
if [[ "$answer" =~ ^[YyДд]$ ]] ; then
|
||||||
try_remove_dir "$USER_WORK_PATH"
|
# Удаление рабочих каталогов
|
||||||
|
try_remove_dir "$USER_WORK_PATH"
|
||||||
|
|
||||||
# Удаление файлов меню
|
# Удаление файлов меню
|
||||||
try_remove_dir "$WH_MENU_DIR"
|
try_remove_dir "$WH_MENU_DIR"
|
||||||
try_remove_file "$WH_MENU_CATEGORY"
|
try_remove_file "$WH_MENU_CATEGORY"
|
||||||
try_remove_file "$WH_MENU_CONFIG"
|
try_remove_file "$WH_MENU_CONFIG"
|
||||||
|
|
||||||
# Удаление desktop-файлов
|
# Удаление desktop-файлов
|
||||||
for desktop_file in "$(xdg-user-dir DESKTOP)"/*.desktop; do
|
for desktop_file in "$(xdg-user-dir DESKTOP)"/*.desktop; do
|
||||||
if grep -q "Exec=env \"$RUN_SCRIPT\"" "$desktop_file"; then
|
if grep -q "Exec=env \"$RUN_SCRIPT\"" "$desktop_file"; then
|
||||||
try_remove_file "$desktop_file"
|
try_remove_file "$desktop_file"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Обновление кэша desktop-файлов
|
# Обновление кэша desktop-файлов
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
update-desktop-database "$HOME/.local/share/applications"
|
||||||
|
|
||||||
# Удаление символических ссылок
|
# Удаление символических ссылок
|
||||||
try_remove_file "$HOME/.winehelper"
|
try_remove_file "$HOME/.winehelper"
|
||||||
|
|
||||||
print_info "WineHelper и все связанные данные успешно удалены."
|
print_info "WineHelper и все связанные данные успешно удалены."
|
||||||
|
else
|
||||||
|
print_info "Удаление отменено."
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
create_base_pfx () {
|
create_base_pfx () {
|
||||||
@ -1610,7 +1548,6 @@ restore_prefix() {
|
|||||||
local backup_archive_path="$1"
|
local backup_archive_path="$1"
|
||||||
local temp_extract_dir prefix_name
|
local temp_extract_dir prefix_name
|
||||||
|
|
||||||
|
|
||||||
if [[ -z "$backup_archive_path" ]] ; then
|
if [[ -z "$backup_archive_path" ]] ; then
|
||||||
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
||||||
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
||||||
@ -1705,13 +1642,12 @@ wh_info () {
|
|||||||
run [программа] запуск программы (отладка)
|
run [программа] запуск программы (отладка)
|
||||||
remove-all удалить WineHelper и все связанные данные
|
remove-all удалить WineHelper и все связанные данные
|
||||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
backup-prefix [имя_префикса] создать резерную копию префикса
|
||||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||||
|
|
||||||
Параметры:
|
Параметры:
|
||||||
--help показать эту справку и выйти
|
--help показать эту справку и выйти
|
||||||
--version показать информацию о пакете и его версии
|
--version показать информацию о пакете и его версии
|
||||||
--changelog показать историю изменений
|
|
||||||
--debug [команда] включить режим логирования работы WINE
|
--debug [команда] включить режим логирования работы WINE
|
||||||
|
|
||||||
"
|
"
|
||||||
@ -1736,9 +1672,8 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
case "$arg1" in
|
case "$arg1" in
|
||||||
--version|version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
--version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
||||||
--help|help) wh_info ; exit 0 ;;
|
--help) wh_info ; exit 0 ;;
|
||||||
--changelog|changelog) less "$CHANGELOG_FILE" ; exit 0 ;;
|
|
||||||
killall) kill_wine ;;
|
killall) kill_wine ;;
|
||||||
winecfg) prepair_wine ; wine_run "winecfg" ;;
|
winecfg) prepair_wine ; wine_run "winecfg" ;;
|
||||||
winereg|regedit) prepair_wine ; wine_run "regedit" ;;
|
winereg|regedit) prepair_wine ; wine_run "regedit" ;;
|
||||||
|
Reference in New Issue
Block a user