forked from CastroFidel/winehelper
		
	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