updated sha256sum.list
This commit is contained in:
@@ -4,7 +4,7 @@ _winehelper_completions() {
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix --changelog changelog"
|
||||
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||
|
||||
case "${prev}" in
|
||||
|
@@ -14,6 +14,7 @@ _winehelper() {
|
||||
'remove-all[Удалить WineHelper и все связанные данные]'
|
||||
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
|
||||
'killall[Убить все процессы]'
|
||||
'create-prefix[Создать новый префикс]'
|
||||
'remove-prefix[Удалить префикс и все связанные данные]'
|
||||
'backup-prefix[Создать резерную копию префикса]'
|
||||
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||
@@ -55,6 +56,8 @@ _winehelper() {
|
||||
remove-prefix|backup-prefix)
|
||||
_get_prefixes
|
||||
;;
|
||||
create-prefix)
|
||||
;;
|
||||
restore-prefix)
|
||||
_files
|
||||
;;
|
||||
|
7
sha256sum.list
Executable file → Normal file
7
sha256sum.list
Executable file → Normal file
@@ -1,5 +1,4 @@
|
||||
##### WINE #####
|
||||
|
||||
009c95bfe2df3f9264c9c5092f3e30ea7a168dd7869046058a718a70739602d4 wine_wh_tflex_10-9_amd64.tar.xz
|
||||
3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f wine_x_tkg_10-0_i586.tar.xz
|
||||
71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12 wine_x_tkg_10-0_amd64.tar.xz
|
||||
@@ -9,6 +8,7 @@ e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183 wine-9.0.14-al
|
||||
61bec1230b37b8fcc69fd45f848b44fd88cc41fcdd5dc3080336d7da63660f40 wine-7.16.1-alt1-amd64.tar.xz
|
||||
6fea17fd131f57c2ebf7ca4c60d3c5a9e819afe16e5d0b77ecb750da99ae0e38 wine-7.16.1-alt1-i586.tar.xz
|
||||
|
||||
##### WINE_LG #####
|
||||
765e52484f06169909b179f4884d04ae4b440ff868e4b5722e64fc7d7a036ad9 WINE_LG_10-10-1.tar.xz
|
||||
7a5128fcebbeed652ba36c5135821fd2c82493e87d715e8bc63e3210ba7ee849 WINE_LG_10-11.tar.xz
|
||||
373beeb85c1c8163e752a32a453dcf575dd7ecf971726cecb3195e330d094925 WINE_LG_10-12.tar.xz
|
||||
@@ -25,6 +25,7 @@ da79f89b1fc3175f113bf5ec35fc2755550159034736cff086f2165480dd6e0f WINE_LG_9-12-2
|
||||
51ff56e435a90eeff13ffbbac543a820d1df14d65f2e3b760ad100bc946e4bfc WINE_LG_9-7.tar.xz
|
||||
09901b17a7aaa13e5c1a1f99ab82c9f0d223aa2f5c9ac94938e5a9a0088bb244 WINE_LG_9-9.tar.xz
|
||||
|
||||
##### PROTON_LG #####
|
||||
d0f5b42096bc5ed379a26e415d99963f849129d5cec1ba9134b1ee50100b049b PROTON_LG_10-10.tar.xz
|
||||
d87eb914ce7e5cab47e6b480aa400f8c7840f39a22d585bf35092a033ac09201 PROTON_LG_10-13.tar.xz
|
||||
05ca56607af7cee30b4797ad6c6a111d38a52c9d5c2184d30eec2650f1585b58 PROTON_LG_10-15.tar.xz
|
||||
@@ -44,13 +45,13 @@ e09c5da9ddffc5d390de7689df1778f279cc84a946665cc76ce77861010b2604 PROTON_LG_9-4.
|
||||
56eae794a48aa7322ce5a636c490974d7f2516528d3153991fb033b0fa5fe3cf PROTON_LG_9-5.tar.xz
|
||||
82263e1d0ab16130f15d419f2661fc5a7baf29193b9eeeb7eec3f01a3e54a1b3 PROTON_LG_9-7.tar.xz
|
||||
|
||||
##### PROTON_STEAM #####
|
||||
09e6e386a87710996d634e08650bbc733365df65d3491a4372f06cf4e815a8b2 PROTON_STEAM_6.3-8.tar.xz
|
||||
2f8bdfeb75e5427886aac7d2a599a1ee8900e50d5873a0e620d5703707bf4271 PROTON_STEAM_7.0-5.tar.xz
|
||||
b33aca95664067c9eff06a2b4380992d43a5d31880ff970fb340e851671be625 PROTON_STEAM_8.0-4.tar.xz
|
||||
9a20af28f4213e4f1c532b79a20e6a95ef872130784fc306510637342c6f58a1 PROTON_STEAM_8.0-5.tar.xz
|
||||
|
||||
##### DXVK #####
|
||||
|
||||
d1a86ca53ab7e156e1252d3cf7eed3c66fe0651699cfc9c4ba152024261d8258 dxvk-1.10.1-967.tar.xz
|
||||
98411effbc1b3611b11c4ca3af2ad29400b08e1c8c380791d6351600a06fb3c7 dxvk-1.10.3-28.tar.xz
|
||||
061568b51ce99d285ef2d0f1f31aab65b3e6fd34747073859c5a719bec2a7afd dxvk-1.6.1.tar.xz
|
||||
@@ -100,7 +101,6 @@ c02b565d2fca1dc4066fb58acfcdd3919386fdbb01b30cfe181d4dd02ac5f1bb dxvk-2.7-5.tar
|
||||
5f97deb1eeb97ed41d0539264c0ca98e8841f79ec59684f32e7f1ca5c29a109b dxvk-sarek-1.11.0.tar.xz
|
||||
|
||||
##### VKD3D #####
|
||||
|
||||
df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f vkd3d-proton-1.1-2602.tar.xz
|
||||
bc86b06af83054e25bad21fe4bec4c10538837221fe847470571df7d556d355b vkd3d-proton-1.1-2967.tar.xz
|
||||
41bd2465015f069ef2d378e42a0f906fd40f1ce70e1602b36e445209b16e0d50 vkd3d-proton-1.1-3088.tar.xz
|
||||
@@ -154,7 +154,6 @@ edf16d2b37bc77d121d5d81b06b60d3f694e0060c6606e729ceab30de3d27466 vkd3d-proton-s
|
||||
405bfe3b7c7f80034837c05656535053305727ee4bf1d993521b67b71d08ebc6 extra_fonts_v01.tar.xz
|
||||
|
||||
##### PREFIX #####
|
||||
|
||||
0e86cd9958d1bd1bfac99e23165a091a4ea2fa3e693c551f69aabeed5f681fea defpfx_x86_v01.tar.xz
|
||||
# create with wine_x_tkg_10-0_amd64 (universal user: xuser and isolate_home by default)
|
||||
# winetricks msxml3 msxml4 msxml6 andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts wsh57 vcrun6 mdac27 jet40 gdiplus lucida tahoma ucrtbase2019 vcrun2019
|
||||
|
249
winehelper
249
winehelper
@@ -811,10 +811,20 @@ init_wine_ver () {
|
||||
export WINEDIR="$WH_DIST_DIR/$WH_WINE_USE"
|
||||
|
||||
if [[ ! -d "$WINEDIR" ]] ; then
|
||||
local wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz"
|
||||
try_download "$CLOUD_URL/$WH_WINE_USE.tar.xz" "$wine_package" check256sum
|
||||
local download_url wine_package
|
||||
download_url="$CLOUD_URL/$WH_WINE_USE.tar.xz"
|
||||
wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz"
|
||||
|
||||
try_download "$download_url" "$wine_package" "check256sum"
|
||||
unpack "$wine_package" "$WH_DIST_DIR/"
|
||||
try_remove_file "$wine_package"
|
||||
|
||||
# Управление структурой подкаталога Proton "files", перемещая содержимое вверх
|
||||
if [[ -d "$WINEDIR/files" ]]; then
|
||||
print_info "Обнаружена структура каталогов Proton, исправляем пути..."
|
||||
mv "$WINEDIR"/files/* "$WINEDIR/"
|
||||
rmdir "$WINEDIR/files"
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ ! -f "$WINEDIR/version" ]] && echo "$WH_WINE_USE" > "$WINEDIR/version"
|
||||
@@ -1465,6 +1475,238 @@ remove_prefix() {
|
||||
fi
|
||||
}
|
||||
|
||||
select_wine_version() {
|
||||
local sha256_file="$DATA_PATH/sha256sum.list"
|
||||
[[ ! -f "$sha256_file" ]] && fatal "Файл с версиями WINE/Proton не найден: $sha256_file"
|
||||
|
||||
if [[ "$WINEARCH" == "win64" ]]; then
|
||||
print_info "Фильтруем версии для 64-битного префикса..."
|
||||
else # win32
|
||||
print_info "Фильтруем версии для 32-битного префикса..."
|
||||
fi
|
||||
|
||||
local options=()
|
||||
local total_versions_found=0
|
||||
|
||||
# --- System ---
|
||||
local system_wine_display_name="system"
|
||||
if command -v wine &>/dev/null; then
|
||||
local system_wine_version
|
||||
system_wine_version=$(wine --version 2>/dev/null)
|
||||
[[ -n "$system_wine_version" ]] && system_wine_display_name="$system_wine_version"
|
||||
fi
|
||||
options+=("--- System ---")
|
||||
options+=("$system_wine_display_name")
|
||||
|
||||
# --- Other versions from sha256sum.list ---
|
||||
local current_group=""
|
||||
local group_versions=()
|
||||
|
||||
flush_group() {
|
||||
if [[ ${#group_versions[@]} -gt 0 ]]; then
|
||||
IFS=$'\n' sorted_versions=($(sort -Vr <<<"${group_versions[*]}"))
|
||||
unset IFS
|
||||
options+=("${sorted_versions[@]}")
|
||||
((total_versions_found+=${#group_versions[@]}))
|
||||
group_versions=()
|
||||
fi
|
||||
}
|
||||
|
||||
while IFS= read -r line; do
|
||||
if [[ "$line" =~ ^#+[[:space:]]([^#[:space:]]+)[[:space:]]#* ]]; then
|
||||
flush_group
|
||||
current_group="${BASH_REMATCH[1]}"
|
||||
# Отображаем только группы, которые являются сборками WINE или PROTON
|
||||
case "$current_group" in
|
||||
WINE|WINE_LG|PROTON_LG|PROTON_STEAM)
|
||||
local pretty_key=$(echo "$current_group" | tr '_' ' ' | sed -e "s/\b\(.\)/\u\1/g")
|
||||
options+=("--- $pretty_key ---")
|
||||
;;
|
||||
*)
|
||||
current_group=""
|
||||
;;
|
||||
esac
|
||||
elif [[ -n "$current_group" ]] && [[ "$line" =~ [a-f0-9]{64} ]]; then
|
||||
local filename=$(echo "$line" | awk '{print $2}')
|
||||
local version_name=${filename%.tar.xz}
|
||||
|
||||
if [[ "$WINEARCH" == "win64" ]]; then
|
||||
if [[ "$version_name" =~ (amd64|x86_64|wow64) ]] || ! [[ "$version_name" =~ i[3-6]86 ]]; then
|
||||
group_versions+=("$version_name")
|
||||
fi
|
||||
else # win32
|
||||
if [[ "$version_name" =~ i[3-6]86 ]]; then
|
||||
group_versions+=("$version_name")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done < "$sha256_file"
|
||||
flush_group
|
||||
|
||||
if [[ $total_versions_found -eq 0 ]]; then
|
||||
print_warning "Не найдено подходящих версий WINE/Proton для архитектуры $WINEARCH."
|
||||
print_warning "Будет использована версия по умолчанию: $WH_WINE_USE"
|
||||
return
|
||||
fi
|
||||
|
||||
local selectable_options=("Отмена")
|
||||
local display_groups=()
|
||||
local current_group_items=()
|
||||
local choice_idx=0
|
||||
|
||||
flush_current_group() {
|
||||
if ((${#current_group_items[@]} > 0)); then
|
||||
# Объединяйте элементы с помощью уникального разделителя для последующего разделения
|
||||
display_groups+=("$(IFS='@@@'; echo "${current_group_items[*]}")")
|
||||
current_group_items=()
|
||||
fi
|
||||
}
|
||||
|
||||
current_group_items+=(" 0) Отмена создания префикса")
|
||||
|
||||
for opt in "${options[@]}"; do
|
||||
if [[ "$opt" == "---"* ]]; then
|
||||
flush_current_group
|
||||
display_groups+=("$opt")
|
||||
else
|
||||
((choice_idx++))
|
||||
current_group_items+=(" ${choice_idx}) $opt")
|
||||
selectable_options+=("$opt")
|
||||
fi
|
||||
done
|
||||
flush_current_group # Очистка последней группы
|
||||
|
||||
print_info "Выберите версию WINE/Proton для $WINEARCH префикса:"
|
||||
|
||||
local first_block=true
|
||||
for group_data in "${display_groups[@]}"; do
|
||||
if [[ "$group_data" == "---"* ]]; then
|
||||
if [[ "$first_block" = false ]]; then
|
||||
echo
|
||||
fi
|
||||
echo "$group_data"
|
||||
else
|
||||
local items_to_print=()
|
||||
IFS='@@@' read -r -a items_to_print <<< "$group_data"
|
||||
|
||||
local num_items=${#items_to_print[@]}
|
||||
local term_width=${COLUMNS:-80}
|
||||
local max_len=0
|
||||
for item in "${items_to_print[@]}"; do
|
||||
(( ${#item} > max_len )) && max_len=${#item}
|
||||
done
|
||||
|
||||
((max_len+=2))
|
||||
local num_cols=$(( term_width / max_len ))
|
||||
(( num_cols = num_cols > 0 ? num_cols : 1 ))
|
||||
local num_rows=$(( (num_items + num_cols - 1) / num_cols ))
|
||||
|
||||
for ((i=0; i<num_rows; i++)); do
|
||||
for ((j=0; j<num_cols; j++)); do
|
||||
local index=$(( i + j * num_rows ))
|
||||
(( index < num_items )) && printf "%-*s" "$max_len" "${items_to_print[index]}"
|
||||
done
|
||||
echo
|
||||
done
|
||||
fi
|
||||
first_block=false
|
||||
done
|
||||
|
||||
while true; do
|
||||
echo
|
||||
local max_choice=$(( ${#selectable_options[@]} - 1 ))
|
||||
read -p "Введите номер для выбора wine/proton (0-$max_choice): " user_choice
|
||||
if [[ "$user_choice" =~ ^[0-9]+$ ]] && (( user_choice >= 0 && user_choice <= max_choice )); then
|
||||
if [[ "$user_choice" == "0" ]]; then
|
||||
print_info "Создание префикса отменено."
|
||||
exit 0
|
||||
fi
|
||||
local selected_opt
|
||||
selected_opt="${selectable_options[$user_choice]}"
|
||||
if [[ "$selected_opt" == "$system_wine_display_name" ]]; then
|
||||
export WH_WINE_USE="system"
|
||||
else
|
||||
export WH_WINE_USE="$selected_opt"
|
||||
fi
|
||||
break
|
||||
else
|
||||
print_error "Неверный выбор. Введите число от 0 до $max_choice."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
create_prefix() {
|
||||
print_info "Существующие префиксы:"
|
||||
local prefixes=()
|
||||
for prefix in "$WH_PREFIXES_DIR"/*; do
|
||||
if [[ -d "$prefix" ]] ; then
|
||||
prefixes+=("$(basename "$prefix")")
|
||||
echo " - $(basename "$prefix")"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#prefixes[@]} -eq 0 ]]; then
|
||||
print_info "Нет существующих префиксов."
|
||||
fi
|
||||
echo
|
||||
|
||||
read -p "Введите имя для нового префикса или 0 для отмены (по умолчанию: default): " prefix_name
|
||||
if [[ "$prefix_name" == "0" ]] ; then
|
||||
print_info "Создание префикса отменено."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
prefix_name=${prefix_name:-default}
|
||||
|
||||
if [[ ! "$prefix_name" =~ ^[a-zA-Z0-9_.-]+$ ]] ; then
|
||||
fatal "Имя префикса может содержать только латинские буквы, цифры, точки, дефисы и подчеркивания"
|
||||
fi
|
||||
|
||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||
fatal "Префикс с именем '$prefix_name' уже существует. Создание отменено."
|
||||
fi
|
||||
|
||||
print_info "Создается префикс с именем: \"$prefix_name\""
|
||||
|
||||
print_info "Выберите разрядность префикса:"
|
||||
echo " 0) Отмена создания префикса"
|
||||
echo " 1) 32-bit"
|
||||
echo " 2) 64-bit"
|
||||
echo
|
||||
local arch_choice
|
||||
read -p "Ваш выбор [0-2] (по умолчанию 1): " arch_choice
|
||||
case "${arch_choice:-1}" in
|
||||
0) print_info "Создание префикса отменено." ; exit 0 ;;
|
||||
1) export WINEARCH="win32" ;;
|
||||
2) export WINEARCH="win64" ;;
|
||||
*) fatal "Неверный выбор. Операция отменена." ;;
|
||||
esac
|
||||
|
||||
select_wine_version
|
||||
|
||||
print_info "Выберите тип создаваемого префикса:"
|
||||
echo " 0) Отмена создания префикса"
|
||||
echo " 1) Чистый префикс (без библиотек)"
|
||||
echo " 2) С рекомендуемыми библиотеками"
|
||||
echo
|
||||
local pfx_type_choice
|
||||
read -p "Ваш выбор [0-2] (по умолчанию 1): " pfx_type_choice
|
||||
case "${pfx_type_choice:-1}" in
|
||||
0) print_info "Создание префикса отменено." ; exit 0 ;;
|
||||
1) export BASE_PFX="none" ;;
|
||||
2) ;; # Оставляем BASE_PFX пустым, чтобы init_wineprefix использовал значение по умолчанию
|
||||
*) fatal "Неверный выбор. Операция отменена." ;;
|
||||
esac
|
||||
|
||||
export WINEPREFIX="$WH_PREFIXES_DIR/$prefix_name"
|
||||
|
||||
if ! init_wine_ver || ! init_wineprefix; then
|
||||
fatal "Ошибка инициализации префикса."
|
||||
fi
|
||||
|
||||
print_ok "Префикс '$prefix_name' (${WINEARCH}) успешно создан."
|
||||
}
|
||||
|
||||
remove_winehelper () {
|
||||
local answer
|
||||
if [[ $1 =~ --force|-y ]] ; then
|
||||
@@ -1748,6 +1990,7 @@ wh_info () {
|
||||
installed список установленных программ
|
||||
run [программа] запуск программы (отладка)
|
||||
remove-all удалить WineHelper и все связанные данные
|
||||
create-prefix создать префикс
|
||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||
@@ -1796,8 +2039,10 @@ case "$arg1" in
|
||||
backup-prefix) backup_prefix "$@" ;;
|
||||
restore-prefix) restore_prefix "$@" ;;
|
||||
remove-all) remove_winehelper "$@" ;;
|
||||
create-prefix) create_prefix "$@" ;;
|
||||
remove-prefix) remove_prefix "$@" ;;
|
||||
create-base-pfx) create_base_pfx "$@" ;;
|
||||
init-prefix) prepair_wine ; wait_wineserver ;;
|
||||
*)
|
||||
if [[ -f "$arg1" ]] ; then
|
||||
WIN_FILE_EXEC="$(readlink -f "$arg1")"
|
||||
|
1114
winehelper_gui.py
1114
winehelper_gui.py
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user