Compare commits
	
		
			1 Commits
		
	
	
		
			0.4.0
			...
			fbe8944a0f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | fbe8944a0f | 
							
								
								
									
										19
									
								
								CHANGELOG
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								CHANGELOG
									
									
									
									
									
								
							| @@ -1,24 +1,5 @@ | |||||||
| История изменений: | История изменений: | ||||||
|  |  | ||||||
| 0.4.0: |  | ||||||
| * добавлена автоматическая установка и настройка wine-cpcsp_proxy при |  | ||||||
| использовании переменной WH_USE_CPCSP_PROXY=1 |  | ||||||
| * подготовка функций для создания бэкапов префикса |  | ||||||
|  |  | ||||||
| 0.3.9: |  | ||||||
| * обновлен скрипт установки scadoffice |  | ||||||
| * добавлена автоустановка: |  | ||||||
|     winehelper easymnemo - "Easymnemo" |  | ||||||
| * winetricks поставляется с пакетом WineHelper, а не скачивается из GitHub |  | ||||||
| * добавлена возможность удаления префикса |  | ||||||
|  |  | ||||||
| 0.3.8: |  | ||||||
| * добавлена возможность ассоциации и запуска файлов из WINE в нативном Linux |  | ||||||
| приложении с помощью перемененной. Пример: WH_XDG_OPEN="rtf txt doc" |  | ||||||
| * добавлен выбор префикса, если переменная WINEPREFIX не объявлена |  | ||||||
| * добавлено сохранение последней конфигурации использования префикса |  | ||||||
| * добавлено сохранение скписка создаваемых ярлыков для приложений |  | ||||||
|  |  | ||||||
| 0.3.7: | 0.3.7: | ||||||
| * обновлены функции создания desktop файлов (ярлыков) и категория WineHelper в меню | * обновлены функции создания desktop файлов (ярлыков) и категория WineHelper в меню | ||||||
| * обновлен скрипт установки scadoffice | * обновлен скрипт установки scadoffice | ||||||
|   | |||||||
| @@ -20,6 +20,3 @@ https://github.com/HansKristian-Work/vkd3d-proton | |||||||
|  |  | ||||||
| WINETRICKS: | WINETRICKS: | ||||||
| https://github.com/Winetricks/winetricks | https://github.com/Winetricks/winetricks | ||||||
|  |  | ||||||
| WINE-CPCSP_PROXY: |  | ||||||
| https://github.com/Etersoft/wine-cpcsp_proxy |  | ||||||
|   | |||||||
| @@ -1,27 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
| # info_ru: Удобная программа для создания двухмерных схем и чертежей. Основной акцент сделан на проектировании систем тепло-, водо- и газоснабжения, водоочистки, автоматизированных систем управления технологическими процессами (АСУТП), а также планов эвакуации при пожаре и авариях. |  | ||||||
| ######################################################################## |  | ||||||
| export WH_WINE_USE="wine_x_tkg_10-0_i586" |  | ||||||
| export WINEPREFIX="easymnemo" |  | ||||||
| export PROG_NAME="Easymnemo" |  | ||||||
| export PROG_ICON="easymnemo" |  | ||||||
| export BASE_PFX="none" |  | ||||||
| export WH_WINDOWS_VER="10" |  | ||||||
| export WINEARCH="win32" |  | ||||||
| export INSTALL_DLL="dotnet35 mdac28 jet40" |  | ||||||
|  |  | ||||||
| AUTOINSTALL_EXE="${WH_TMP_DIR}/Easymnemo.zip" |  | ||||||
| AUTOINSTALL_UNPACK="${WH_TMP_DIR}/Easymnemo" |  | ||||||
| AUTOINSTALL_SETUP="${WH_TMP_DIR}/Easymnemo/EasyMnemo.msi" |  | ||||||
|  |  | ||||||
| prepair_wine |  | ||||||
| if try_download "https://s.siteapi.org/c6e311629e736a8.ru/docs/j3pdl4vxv5wkg0sg0ksks40k8ss0sc" "${AUTOINSTALL_EXE}" ; then |  | ||||||
|     7z x -y "${AUTOINSTALL_EXE}" -o"${AUTOINSTALL_UNPACK}" |  | ||||||
|     try_remove_file "$AUTOINSTALL_EXE" |  | ||||||
|  |  | ||||||
|     wine_run_install "${AUTOINSTALL_SETUP}" /q |  | ||||||
|     try_remove_dir "$AUTOINSTALL_UNPACK" |  | ||||||
|  |  | ||||||
|     WIN_FILE_EXEC="$DRIVE_C/Program Files/Easymnemo/Easymnemo.exe" |  | ||||||
|     create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" |  | ||||||
| fi |  | ||||||
| @@ -3,16 +3,13 @@ | |||||||
| ######################################################################## | ######################################################################## | ||||||
| export WH_WINE_USE="wine_x_tkg_10-0_amd64" | export WH_WINE_USE="wine_x_tkg_10-0_amd64" | ||||||
| export WINEPREFIX="scadoffice" | export WINEPREFIX="scadoffice" | ||||||
| export BASE_PFX="scadaoffice_pfx_x64_v03" | export BASE_PFX="scadaoffice_pfx_x64_v01" | ||||||
| export WH_WINDOWS_VER="10" | export WH_WINDOWS_VER="10" | ||||||
| export WINEARCH="win64" | export WINEARCH="win64" | ||||||
| export INSTALL_DLL="dotnet20 dotnet472 dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6" | export INSTALL_DLL="dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20" | ||||||
| export WH_XDG_OPEN="rtf" |  | ||||||
| AUTOINSTALL_EXE="${WH_TMP_DIR}/SCADOffice_installer.exe" | AUTOINSTALL_EXE="${WH_TMP_DIR}/SCADOffice_installer.exe" | ||||||
| SCADOFFICE_ADDONS_URL="https://cloud.linux-gaming.ru/portproton/scadoffice_addons_v02.tar.xz" |  | ||||||
|  |  | ||||||
| prepair_wine | prepair_wine | ||||||
|  |  | ||||||
| DRIVE_C_SCADOFFICE="$DRIVE_C/SCAD Soft/SCADOffice/64" | DRIVE_C_SCADOFFICE="$DRIVE_C/SCAD Soft/SCADOffice/64" | ||||||
|  |  | ||||||
| if [[ -n $2 ]] ; then | if [[ -n $2 ]] ; then | ||||||
| @@ -32,16 +29,21 @@ fi | |||||||
| if [[ $BASE_PFX == "none" ]] ; then | if [[ $BASE_PFX == "none" ]] ; then | ||||||
|     print_info "Установка дополнительных компонентов..." |     print_info "Установка дополнительных компонентов..." | ||||||
|  |  | ||||||
|     ADDONS_PACK="${WH_TMP_DIR}/$(basename "$SCADOFFICE_ADDONS_URL")" |     ADDONS_PACK="${WH_TMP_DIR}/scadoffice_addons_v01.tar.xz" | ||||||
|     ADDONS_PATH="${WH_TMP_DIR}/scadoffice_addons" |     ADDONS_PATH="${WH_TMP_DIR}/scadoffice_addons" | ||||||
|  |     OFFICE_EXE="${ADDONS_PATH}/OpenOffice.exe" | ||||||
|  |     OFFICE_PACK="${ADDONS_PATH}/OpenOffice" | ||||||
|  |     AUTOINSTALL_SETUP="${ADDONS_PATH}/OpenOffice/setup.exe" | ||||||
|     ADDONS_PATH_REG="${ADDONS_PATH}/REG" |     ADDONS_PATH_REG="${ADDONS_PATH}/REG" | ||||||
|     ADDONS_PATH_MDAC="${ADDONS_PATH}/mdac64" |     ADDONS_PATH_MDAC="${ADDONS_PATH}/mdac64" | ||||||
|     ADDONS_PATH_OPENSSH="${ADDONS_PATH}/OpenSSH" |     ADDONS_PATH_OPENSSH="${ADDONS_PATH}/OpenSSH" | ||||||
|  |  | ||||||
|     if try_download "$SCADOFFICE_ADDONS_URL" "${ADDONS_PACK}" ; then |     if try_download "https://cloud.linux-gaming.ru/portproton/scadoffice_addons_v01.tar.xz" "${ADDONS_PACK}" ; then | ||||||
|         create_new_dir "${ADDONS_PATH}" |         create_new_dir "${ADDONS_PATH}" | ||||||
|         unpack "${ADDONS_PACK}" "${ADDONS_PATH}" |         unpack "${ADDONS_PACK}" "${ADDONS_PATH}" | ||||||
|  |         7z x -y "${OFFICE_EXE}" -o"${OFFICE_PACK}" | ||||||
|  |         wine_run_install "${AUTOINSTALL_SETUP}" /qn | ||||||
|  |  | ||||||
|         wine_run regedit "${ADDONS_PATH_REG}"/*.reg |         wine_run regedit "${ADDONS_PATH_REG}"/*.reg | ||||||
|  |  | ||||||
|         # Установка ODBC |         # Установка ODBC | ||||||
| @@ -71,8 +73,12 @@ if try_download "https://scadhelp.ru/files/10/download" "${AUTOINSTALL_EXE}" ; t | |||||||
|  |  | ||||||
|     declare -a WIN_FILE_EXEC=("${DRIVE_C_SCADOFFICE}/Arbat.exe" "${DRIVE_C_SCADOFFICE}/West.exe" "${DRIVE_C_SCADOFFICE}/GlobalSettings.exe" "${DRIVE_C_SCADOFFICE}/Decor.exe" "${DRIVE_C_SCADOFFICE}/ReBar.exe" "${DRIVE_C_SCADOFFICE}/UnderGround.exe" "${DRIVE_C_SCADOFFICE}/ComeIn.exe" "${DRIVE_C_SCADOFFICE}/CoCon.exe" "${DRIVE_C_SCADOFFICE}/Comet2.exe" "${DRIVE_C_SCADOFFICE}/Section.exe" "${DRIVE_C_SCADOFFICE}/Consul.exe" "${DRIVE_C_SCADOFFICE}/ConfigProtection.exe" "${DRIVE_C_SCADOFFICE}/Kristall.exe" "${DRIVE_C_SCADOFFICE}/Cross.exe" "${DRIVE_C_SCADOFFICE}/Kust2.exe" "${DRIVE_C_SCADOFFICE}/Magnum.exe" "${DRIVE_C_SCADOFFICE}/Monolit.exe" "${DRIVE_C_SCADOFFICE}/Slope.exe" "${DRIVE_C_SCADOFFICE}/Pasternak.exe" "${DRIVE_C_SCADOFFICE}/UCalc.exe" "${DRIVE_C_SCADOFFICE}/ViewProf.exe" "${DRIVE_C_SCADOFFICE}/SCalc.exe" "${DRIVE_C_SCADOFFICE}/AccelEdit.exe" "${DRIVE_C_SCADOFFICE}/BetaEdit.exe" "${DRIVE_C_SCADOFFICE}/MaterialsEdit.exe" "${DRIVE_C_SCADOFFICE}/Tonus.exe" "${DRIVE_C_SCADOFFICE}/Sezam.exe" "${DRIVE_C_SCADOFFICE}/SCADX.exe") |     declare -a WIN_FILE_EXEC=("${DRIVE_C_SCADOFFICE}/Arbat.exe" "${DRIVE_C_SCADOFFICE}/West.exe" "${DRIVE_C_SCADOFFICE}/GlobalSettings.exe" "${DRIVE_C_SCADOFFICE}/Decor.exe" "${DRIVE_C_SCADOFFICE}/ReBar.exe" "${DRIVE_C_SCADOFFICE}/UnderGround.exe" "${DRIVE_C_SCADOFFICE}/ComeIn.exe" "${DRIVE_C_SCADOFFICE}/CoCon.exe" "${DRIVE_C_SCADOFFICE}/Comet2.exe" "${DRIVE_C_SCADOFFICE}/Section.exe" "${DRIVE_C_SCADOFFICE}/Consul.exe" "${DRIVE_C_SCADOFFICE}/ConfigProtection.exe" "${DRIVE_C_SCADOFFICE}/Kristall.exe" "${DRIVE_C_SCADOFFICE}/Cross.exe" "${DRIVE_C_SCADOFFICE}/Kust2.exe" "${DRIVE_C_SCADOFFICE}/Magnum.exe" "${DRIVE_C_SCADOFFICE}/Monolit.exe" "${DRIVE_C_SCADOFFICE}/Slope.exe" "${DRIVE_C_SCADOFFICE}/Pasternak.exe" "${DRIVE_C_SCADOFFICE}/UCalc.exe" "${DRIVE_C_SCADOFFICE}/ViewProf.exe" "${DRIVE_C_SCADOFFICE}/SCalc.exe" "${DRIVE_C_SCADOFFICE}/AccelEdit.exe" "${DRIVE_C_SCADOFFICE}/BetaEdit.exe" "${DRIVE_C_SCADOFFICE}/MaterialsEdit.exe" "${DRIVE_C_SCADOFFICE}/Tonus.exe" "${DRIVE_C_SCADOFFICE}/Sezam.exe" "${DRIVE_C_SCADOFFICE}/SCADX.exe") | ||||||
|  |  | ||||||
|     # Цикл создания десктоп файлов для scad office |     # Цикл создания десктоп файлов для scad office в каталог SCADOFFICE на рабочемм столе | ||||||
|     for i in "${!PROG_NAME[@]}"; do |     for i in "${!PROG_NAME[@]}"; do | ||||||
|         create_desktop "${PROG_NAME[i]}" "${WIN_FILE_EXEC[i]}" "${PROG_ICON[i]}" "nocopy" |         create_desktop "${PROG_NAME[i]}" "${WIN_FILE_EXEC[i]}" "${PROG_ICON[i]}" "nocopy" | ||||||
|     done |     done | ||||||
|  |  | ||||||
|  |     # Cоздание десктоп файла для openoffice | ||||||
|  |     WIN_FILE_EXEC1="$DRIVE_C/Program Files (x86)/OpenOffice 4/program/soffice.exe" | ||||||
|  |     create_desktop "OpenOffice" "$WIN_FILE_EXEC1" "openoffice" "nocopy" | ||||||
| fi | fi | ||||||
|   | |||||||
							
								
								
									
										67
									
								
								autoinstall/t-flex-cad17-applications
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								autoinstall/t-flex-cad17-applications
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # info_ru: Приложения для T-FLEX CAD 17 (T-FLEX Анализ 17, T-FLEX Динамика 17, T-FLEX Зубчатые передачи 17, T-FLEX ЧПУ 17, T-FLEX Раскрой 17, T-FLEX Электротехника 17, T-FLEX VR 17, T-FLEX Печатные платы 17) | ||||||
|  | ######################################################################## | ||||||
|  | export WH_WINDOWS_VER="10" | ||||||
|  | export WH_WINE_USE="wine_x_tkg_10-0_amd64" | ||||||
|  | export BASE_PFX="tflex17_pfx_x64_v01" | ||||||
|  | export WINEARCH="win64" | ||||||
|  | export WINEPREFIX="tflex17" | ||||||
|  |  | ||||||
|  | BASE_URL="https://www.tflex.ru/downloads" | ||||||
|  | FILES=( | ||||||
|  |     "T-FLEX Analysis 17.zip" | ||||||
|  |     "T-FLEX Dynamics 17.zip" | ||||||
|  |     "T-FLEX Gears 17.zip" | ||||||
|  |     "T-FLEX CAM 17.zip" | ||||||
|  |     "T-FLEX Nesting 17.zip" | ||||||
|  |     "T-FLEX Electrical 17.zip" | ||||||
|  |     "T-FLEX VR 17.zip" | ||||||
|  |     "T-FLEX Circuits 17.zip" | ||||||
|  | ) | ||||||
|  | UNPACK_APP="${WH_TMP_DIR}/unpack_applications" | ||||||
|  |  | ||||||
|  | prepair_wine | ||||||
|  |  | ||||||
|  | # Функция для распаковки файла | ||||||
|  | unpack_file() { | ||||||
|  |     local archive="$1" | ||||||
|  |     7z x -y "$archive" -o"${UNPACK_APP}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Функция для установки .msi файлов | ||||||
|  | install_msi_files() { | ||||||
|  |     for msi_file in "${UNPACK_APP}"/*/*.msi; do | ||||||
|  |         if [[ -f "$msi_file" ]]; then | ||||||
|  |             echo "Установка $msi_file ..." | ||||||
|  |             wine_run_install "$msi_file" /q | ||||||
|  |         else | ||||||
|  |             echo "Нет .msi файлов для установки в ${UNPACK_APP}/*." | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Функция для кодирования URL | ||||||
|  | encode_url() { | ||||||
|  |     local file_name="$1" | ||||||
|  |     echo "${file_name// /%20}"  # Заменяем пробелы на %20 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Скачивание всех файлов | ||||||
|  | download_all() { | ||||||
|  |     for file_name in "${FILES[@]}"; do | ||||||
|  |         local file_url="$(encode_url "$file_name")" | ||||||
|  |         local output="${WH_TMP_DIR}/${file_name// /_}" | ||||||
|  |  | ||||||
|  |         echo "Скачивание $file_name..." | ||||||
|  |         if try_download "$BASE_URL/$file_url" "$output"; then | ||||||
|  |             unpack_file "$output" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Автоматически скачиваем и устанавливаем все файлы | ||||||
|  | download_all | ||||||
|  | install_msi_files | ||||||
|  |  | ||||||
|  | rm -f ${WH_TMP_DIR}/*.zip | ||||||
|  | try_remove_dir "${UNPACK_APP}" | ||||||
							
								
								
									
										65
									
								
								autoinstall/t-flex-cad17-resources
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								autoinstall/t-flex-cad17-resources
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # info_ru: Обучающие материалы, примеры, бесплатные библиотеки для T-FLEX CAD 17 (Учебное пособие 17, Стандартные элементы 17, Элементы уплотнительной техники 17, Станочные приспособления 17, Детали штампов листовой штамповки 17, Детали пресс-форм 17, Примеры 17) | ||||||
|  | ######################################################################## | ||||||
|  | export WH_WINDOWS_VER="10" | ||||||
|  | export WH_WINE_USE="wine_x_tkg_10-0_amd64" | ||||||
|  | export BASE_PFX="tflex17_pfx_x64_v01" | ||||||
|  | export WINEARCH="win64" | ||||||
|  | export WINEPREFIX="tflex17" | ||||||
|  |  | ||||||
|  | BASE_URL="https://www.tflex.ru/downloads" | ||||||
|  | FILES=( | ||||||
|  |     "T-FLEX Tutorial 17.zip" | ||||||
|  |     "Standard parts 17.zip" | ||||||
|  |     "Elements of sealing technology 17.zip" | ||||||
|  |     "Machine tools 17.zip" | ||||||
|  |     "Standard parts for sheet metal dies 17.zip" | ||||||
|  |     "Standard Mold Parts 17.zip" | ||||||
|  |     "Examples 17.zip" | ||||||
|  | ) | ||||||
|  | UNPACK_RESOURCES="${WH_TMP_DIR}/unpack_resources" | ||||||
|  |  | ||||||
|  | prepair_wine | ||||||
|  | # Функция для распаковки файла | ||||||
|  | unpack_file() { | ||||||
|  |     local archive="$1" | ||||||
|  |     7z x -y "$archive" -o"${UNPACK_RESOURCES}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Функция для установки .msi файлов | ||||||
|  | install_msi_files() { | ||||||
|  |     for msi_file in "${UNPACK_RESOURCES}"/*/*.msi; do | ||||||
|  |         if [[ -f "$msi_file" ]]; then | ||||||
|  |             echo "Установка $msi_file ..." | ||||||
|  |             wine_run_install "$msi_file" /q | ||||||
|  |         else | ||||||
|  |             echo "Нет .msi файлов для установки в ${UNPACK_RESOURCES}/unpack_dop/*." | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Функция для кодирования URL | ||||||
|  | encode_url() { | ||||||
|  |     local file_name="$1" | ||||||
|  |     echo "${file_name// /%20}"  # Заменяем пробелы на %20 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Скачивание всех файлов | ||||||
|  | download_all() { | ||||||
|  |     for file_name in "${FILES[@]}"; do | ||||||
|  |         local file_url="$(encode_url "$file_name")" | ||||||
|  |         local output="${WH_TMP_DIR}/${file_name// /_}" | ||||||
|  |  | ||||||
|  |         echo "Скачивание $file_name..." | ||||||
|  |         if try_download "$BASE_URL/$file_url" "$output"; then | ||||||
|  |             unpack_file "$output" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Автоматически скачиваем и устанавливаем все файлы | ||||||
|  | download_all | ||||||
|  | install_msi_files | ||||||
|  |  | ||||||
|  | rm -f ${WH_TMP_DIR}/*.zip | ||||||
|  | try_remove_dir "${UNPACK_RESOURCES}" | ||||||
| @@ -22,7 +22,7 @@ windows приложения. Подробнее по ссылке: https://www. | |||||||
| apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\ | apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\ | ||||||
| libOSMesa,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} winetricks ca-certificates cups-pdf  || fatal "Не удалось установить зависимости." | ||||||
|  |  | ||||||
| apt-get install {i586-,}wine | apt-get install {i586-,}wine | ||||||
|  |  | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 6.1 KiB | 
| @@ -3,7 +3,6 @@ | |||||||
| 3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f  wine_x_tkg_10-0_i586.tar.xz | 3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f  wine_x_tkg_10-0_i586.tar.xz | ||||||
| 71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12  wine_x_tkg_10-0_amd64.tar.xz | 71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12  wine_x_tkg_10-0_amd64.tar.xz | ||||||
| fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193  wine-9.0.14-alt1-i586-spravkibk.tar.xz | fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193  wine-9.0.14-alt1-i586-spravkibk.tar.xz | ||||||
| e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183  wine-9.0.14-alt1-amd64.tar.xz |  | ||||||
| 6f86d2220b65b709bf88c6f829a4998de3b929cc2091cd1333a51c32e1491b79  wine-9.0.9-alt1-i586.tar.xz | 6f86d2220b65b709bf88c6f829a4998de3b929cc2091cd1333a51c32e1491b79  wine-9.0.9-alt1-i586.tar.xz | ||||||
|  |  | ||||||
| ##### DXVK ##### | ##### DXVK ##### | ||||||
| @@ -14,9 +13,6 @@ e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183  wine-9.0.14-al | |||||||
|  |  | ||||||
| df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f  vkd3d-proton-1.1-2602.tar.xz | df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f  vkd3d-proton-1.1-2602.tar.xz | ||||||
|  |  | ||||||
| ##### CPCSP_PROXY ##### |  | ||||||
| 3153088ff28d6af415c3504a421e5382554dbb305f38d5a87dd84df90d680421  wine-cpcsp_proxy-0.6.1-alt1.tar.xz |  | ||||||
|  |  | ||||||
| ##### PREFIX ##### | ##### PREFIX ##### | ||||||
|  |  | ||||||
| 0e86cd9958d1bd1bfac99e23165a091a4ea2fa3e693c551f69aabeed5f681fea  defpfx_x86_v01.tar.xz | 0e86cd9958d1bd1bfac99e23165a091a4ea2fa3e693c551f69aabeed5f681fea  defpfx_x86_v01.tar.xz | ||||||
| @@ -68,8 +64,7 @@ dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e  audiorecstatio | |||||||
| # create with wine_x_tkg_10-0_i586 (universal user: xuser) | # create with wine_x_tkg_10-0_i586 (universal user: xuser) | ||||||
| # winetricks arial dotnet7 dotnetdesktop7 renderer=gdi | # winetricks arial dotnet7 dotnetdesktop7 renderer=gdi | ||||||
|  |  | ||||||
| 25e277c7afa4a9afc5f013cb05f872c12a7f381c4f0503a423dcacccca9a14c6  scadaoffice_pfx_x64_v03.tar.xz | daaaef625f8f44688faf12f9ef4360ad1d35b377b23be634b45c1b8d43239686  scadaoffice_pfx_x64_v01.tar.xz | ||||||
| # create with wine_x_tkg_10-0_i586 (universal user: xuser) | # create with wine_x_tkg_10-0_i586 (universal user: xuser) | ||||||
| # winetricks dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20 | # winetricks dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20 | ||||||
| # + addons with ODBC, SSH, *.reg | # + addons with openoffice, ODBC, SSH, *.reg | ||||||
| 0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb  scadoffice_addons_v02.tar.xz |  | ||||||
|   | |||||||
							
								
								
									
										319
									
								
								winehelper
									
									
									
									
									
								
							
							
						
						
									
										319
									
								
								winehelper
									
									
									
									
									
								
							| @@ -12,11 +12,7 @@ print_warning () { printf "\E[33m%s Предупреждение: $@ %s\e[0m\n" | |||||||
| print_info () { printf "\E[36m%s Информация: \"$@\" %s\e[0m\n" ;} | print_info () { printf "\E[36m%s Информация: \"$@\" %s\e[0m\n" ;} | ||||||
| print_ok () { printf "\E[35m%s Успех: $@ %s\e[0m\n" ;} | print_ok () { printf "\E[35m%s Успех: $@ %s\e[0m\n" ;} | ||||||
| print_var () { for vp in $@ ; do echo "${vp}=${!vp}" ; done ;} | print_var () { for vp in $@ ; do echo "${vp}=${!vp}" ; done ;} | ||||||
| fatal () { | fatal () { print_error "$@" ; exit 1 ;} | ||||||
|     print_error "$@" |  | ||||||
|     [[ -n "$WINESERVER" ]] && "$WINESERVER" -w |  | ||||||
|     exit 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ##### CHECK VARIABLES ##### | ##### CHECK VARIABLES ##### | ||||||
| check_variables () { [[ -z ${!1} ]] && export $1="$2" ;} | check_variables () { [[ -z ${!1} ]] && export $1="$2" ;} | ||||||
| @@ -33,9 +29,6 @@ else | |||||||
|     check_variables DEBUG "0" |     check_variables DEBUG "0" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| ##### WINETRICKS VERSION ##### |  | ||||||
| WINETRICKS_VERSION="20250102" |  | ||||||
|  |  | ||||||
| ##### DEFAULT VARIABLES ##### | ##### DEFAULT VARIABLES ##### | ||||||
| SCRIPT_NAME="$(basename "$0")" | SCRIPT_NAME="$(basename "$0")" | ||||||
| if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then | if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then | ||||||
| @@ -57,7 +50,6 @@ WH_IMAGE_PATH="$DATA_PATH/image" | |||||||
| WH_DB_DIR="$DATA_PATH/database" | WH_DB_DIR="$DATA_PATH/database" | ||||||
| WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall" | WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall" | ||||||
| WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall" | WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall" | ||||||
| WH_WINETRICKS="$DATA_PATH/winetricks_$WINETRICKS_VERSION" |  | ||||||
|  |  | ||||||
| WH_MENU_DIR="$HOME/.local/share/applications/WineHelper" | WH_MENU_DIR="$HOME/.local/share/applications/WineHelper" | ||||||
| WH_MENU_CATEGORY="$HOME/.local/share/desktop-directories/WineHelper.directory" | WH_MENU_CATEGORY="$HOME/.local/share/desktop-directories/WineHelper.directory" | ||||||
| @@ -71,9 +63,6 @@ check_variables WINEFSYNC "0" | |||||||
| check_variables WINEARCH "win64" # or "win32" | check_variables WINEARCH "win64" # or "win32" | ||||||
| check_variables WH_WINE_USE "wine_x_tkg_10-0_amd64" # or system | check_variables WH_WINE_USE "wine_x_tkg_10-0_amd64" # or system | ||||||
|  |  | ||||||
| check_variables WH_USE_CPCSP_PROXY "0" |  | ||||||
| check_variables CPCSP_PROXY_VER "0.6.1-alt1" |  | ||||||
|  |  | ||||||
| check_variables STAGING_SHARED_MEMORY "1" | check_variables STAGING_SHARED_MEMORY "1" | ||||||
| check_variables WINE_LARGE_ADDRESS_AWARE "1" | check_variables WINE_LARGE_ADDRESS_AWARE "1" | ||||||
| check_variables WINE_FULLSCREEN_FSR "1" | check_variables WINE_FULLSCREEN_FSR "1" | ||||||
| @@ -110,15 +99,19 @@ fi | |||||||
|  |  | ||||||
| ##### ROOT ##### | ##### ROOT ##### | ||||||
| su_run () { | su_run () { | ||||||
|     print_info "Для продолжения установки введите root пароль..." |     print_info "Для продолжения установки зависимостей введите root пароль..." | ||||||
|     su - -c "$@" |     su - -c "$@" | ||||||
| } | } | ||||||
|  |  | ||||||
| ##### CHECK DEPENDENCIES ##### | ##### CHECK DEPENDENCIES ##### | ||||||
| if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\ | # yad zenity cups-pdf | ||||||
|  |  | ||||||
|  | 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} \ | ||||||
| then | winetricks ca-certificates cups-pdf 1>/dev/null | ||||||
|  | then : # Зависимости установлены. Пропускаем... | ||||||
|  | else | ||||||
|     if su_run "$DATA_PATH/dependencies.sh" |     if su_run "$DATA_PATH/dependencies.sh" | ||||||
|     then print_info "Зависимости успешно установлены. Продолжаем работу $SCRIPT_NAME" |     then print_info "Зависимости успешно установлены. Продолжаем работу $SCRIPT_NAME" | ||||||
|     else fatal "Не удалось установить зависимости. Работа $SCRIPT_NAME прервана." |     else fatal "Не удалось установить зависимости. Работа $SCRIPT_NAME прервана." | ||||||
| @@ -126,6 +119,15 @@ then | |||||||
| fi | fi | ||||||
|  |  | ||||||
| ##### HELPER FUNCTIONS ##### | ##### HELPER FUNCTIONS ##### | ||||||
|  | check_command () { | ||||||
|  |     if command -v "$1" &>/dev/null ; then | ||||||
|  |         return 0 | ||||||
|  |     else | ||||||
|  |         print_warning "command: $1 - not found!" | ||||||
|  |         return 1 | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
| add_to_var () { | add_to_var () { | ||||||
|     if ! echo ${!1} | grep "$2" &>/dev/null |     if ! echo ${!1} | grep "$2" &>/dev/null | ||||||
|     then export $1="${!1} $2" |     then export $1="${!1} $2" | ||||||
| @@ -153,9 +155,9 @@ try_remove_dir () { | |||||||
| } | } | ||||||
|  |  | ||||||
| try_copy_file () { | try_copy_file () { | ||||||
|     if [[ ! -f "$1" ]] ; then print_info "файла $1 не существует для копирования" && return 1 |     if [[ ! -f "$1" ]] ; then print_info "file $1 not found for copy" && return 1 | ||||||
|     elif [[ -z "$2" ]] ; then fatal "нет пути для копирования файла $1" |     elif [[ -z "$2" ]] ; then print_error "no way to copy file $1" && return 1 | ||||||
|     elif [[ -L "$2" ]] ; then |     elif [[ -L "$2" ]] ; then print_warning "$2 is a file with a symbolic link" | ||||||
|         try_remove_file "$2" |         try_remove_file "$2" | ||||||
|         cp -f "$1" "$2" && return 0 || return 1 |         cp -f "$1" "$2" && return 0 || return 1 | ||||||
|     else |     else | ||||||
| @@ -165,24 +167,24 @@ try_copy_file () { | |||||||
| } | } | ||||||
|  |  | ||||||
| try_copy_dir () { | try_copy_dir () { | ||||||
|     if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для копирования" |     if [[ ! -d "$1" ]] ; then print_info "directory $1 not found for copy" | ||||||
|     elif [[ -z "$2" ]] ; then fatal "нет пути для копирования каталога $1" |     elif [[ -z "$2" ]] ; then print_error "no way to copy directory $1" | ||||||
|     else |     else | ||||||
|         cp -fr "$1" "$2" |         cp -fr "$1" "$2" | ||||||
|         [[ "$?" != 0 ]] && print_error "не удалось скопировать каталог $1 в $2" || return 0 |         [[ "$?" != 0 ]] && print_error "failed to copy directory $1 to $2" || return 0 | ||||||
|     fi |     fi | ||||||
|     return 1 |     return 1 | ||||||
| } | } | ||||||
|  |  | ||||||
| try_force_link_file () { | try_force_link_file () { | ||||||
|     if [[ ! -f "$1" ]] ; then |     if [[ ! -f "$1" ]] ; then | ||||||
|         print_warning "нет файла для создания символьной ссылки: $1" |         print_warning "file not found for link: $1" | ||||||
|         if [[ -f "$2" ]] ; then |         if [[ -f "$2" ]] ; then | ||||||
|             try_remove_file "$2" |             try_remove_file "$2" | ||||||
|             print_warning "удаляем символьную ссылку: $2" |             print_warning "removed old link: $2" | ||||||
|         fi |         fi | ||||||
|         return 1 |         return 1 | ||||||
|     elif [[ -z "$2" ]] ; then fatal "нет пути для создания символьной ссылки на файл $1" |     elif [[ -z "$2" ]] ; then print_error "no way to link file $1" && return 1 | ||||||
|     else |     else | ||||||
|         try_remove_file "$2" |         try_remove_file "$2" | ||||||
|         ln -s -f -r "$1" "$2" |         ln -s -f -r "$1" "$2" | ||||||
| @@ -191,12 +193,25 @@ try_force_link_file () { | |||||||
|     return 1 |     return 1 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | check_symlink () { | ||||||
|  |     local CHK_SYMLINK_FILE="$(file "$1")" | ||||||
|  |     if [[ -n "$(echo "$CHK_SYMLINK_FILE" | grep -v "broken" | grep "symbolic link to" | awk '{print $1}')" ]] ; then | ||||||
|  |         return 0 | ||||||
|  |     elif [[ -n "$(echo "$CHK_SYMLINK_FILE" | grep "broken symbolic link to" | awk '{print $1}')" ]] ; then | ||||||
|  |         print_error "remove broken symlink: $CHK_SYMLINK_FILE" | ||||||
|  |         rm -fr "$CHK_SYMLINK_FILE" | ||||||
|  |         return 1 | ||||||
|  |     else | ||||||
|  |         return 1 | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
| try_force_link_dir () { | try_force_link_dir () { | ||||||
|     if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для создания символьной сссылки" |     if [[ ! -d "$1" ]] ; then print_info "directory $1 not found for link" | ||||||
|     elif [[ -z "$2" ]] ; then fatal "не указан путь для создания символьной ссылки на каталог $1" |     elif [[ -z "$2" ]] ; then print_error "no way to link directory $1" | ||||||
|     else |     else | ||||||
|         ln -s -f -r "$1" "$2" |         ln -s -f -r "$1" "$2" | ||||||
|         [[ "$?" != 0 ]] && print_error "не удалось сделать символьную ссылку на каталог $1 по пути $2" || return 0 |         [[ "$?" != 0 ]] && print_error "failed to link directory $1 to $2" || return 0 | ||||||
|     fi |     fi | ||||||
|     return 1 |     return 1 | ||||||
| } | } | ||||||
| @@ -296,6 +311,7 @@ try_copy_wine_dll_to_pfx_32() { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### OVERRIDE VARIABLES FUNCTIONS ##### | ||||||
| var_winedlloverride_update () { | var_winedlloverride_update () { | ||||||
|     if [[ -n "${WINEDLLOVERRIDES}" ]] |     if [[ -n "${WINEDLLOVERRIDES}" ]] | ||||||
|     then export WINEDLLOVERRIDES="${1};${WINEDLLOVERRIDES}" |     then export WINEDLLOVERRIDES="${1};${WINEDLLOVERRIDES}" | ||||||
| @@ -303,9 +319,9 @@ var_winedlloverride_update () { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| var_dxvk_config_update () { | var_vkd3d_config_update () { | ||||||
|     if [[ -n "${DXVK_CONFIG}" ]] |     if [[ -n "${DXVK_CONFIG}" ]] | ||||||
|     then export DXVK_CONFIG="${1};${DXVK_CONFIG}" |     then export DXVK_CONFIG="${1}; ${DXVK_CONFIG}" | ||||||
|     else export DXVK_CONFIG="${1}" |     else export DXVK_CONFIG="${1}" | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| @@ -341,6 +357,7 @@ var_ld_library_path_update () { | |||||||
|     return 0 |     return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### CREATE DESKTOP FILE ##### | ||||||
| create_desktop () { | create_desktop () { | ||||||
|     local name_desktop="$1" |     local name_desktop="$1" | ||||||
|     local exe_file="$2" |     local exe_file="$2" | ||||||
| @@ -367,9 +384,11 @@ create_desktop () { | |||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # создаем .desktop файл |  | ||||||
|     create_new_dir "$WH_MENU_DIR" |     create_new_dir "$WH_MENU_DIR" | ||||||
|  |  | ||||||
|     [[ ! -f "$icon_file" ]] && icon_file=wine |     [[ ! -f "$icon_file" ]] && icon_file=wine | ||||||
|  |  | ||||||
|  |     # создаем .desktop файл | ||||||
|     { |     { | ||||||
|         echo "[Desktop Entry]" |         echo "[Desktop Entry]" | ||||||
|         echo "Name=$name_desktop" |         echo "Name=$name_desktop" | ||||||
| @@ -384,14 +403,12 @@ create_desktop () { | |||||||
|  |  | ||||||
|     cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/" |     cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/" | ||||||
|  |  | ||||||
|  |  | ||||||
|     # добавляем информацию о приложении в "$WINEPREFIX/desktop.list" |     # добавляем информацию о приложении в "$WINEPREFIX/desktop.list" | ||||||
|     if [[ -f "$WINEPREFIX/desktop.list" ]] \ |     if grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list" | ||||||
|     && grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list" |  | ||||||
|     then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list" |     then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list" | ||||||
|     fi |     fi | ||||||
|     create_new_dir "$WINEPREFIX/icons" |     echo "$name_desktop=${exe_file//$WINEPREFIX/}" >> "$WINEPREFIX/desktop.list" | ||||||
|     try_copy_file "$icon_file" "$WINEPREFIX/icons/" |  | ||||||
|     echo "$name_desktop=${exe_file//$WINEPREFIX/}=$(basename "$icon_file")" >> "$WINEPREFIX/desktop.list" |  | ||||||
|  |  | ||||||
|     # создаем файл категории для меню |     # создаем файл категории для меню | ||||||
|     create_new_dir "$HOME/.local/share/desktop-directories" |     create_new_dir "$HOME/.local/share/desktop-directories" | ||||||
| @@ -424,7 +441,9 @@ EOF | |||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # Обновляем кэш desktop файлов |     # Обновляем кэш desktop файлов | ||||||
|  |     if check_command update-desktop-database ; then | ||||||
|         update-desktop-database "$HOME/.local/share/applications" |         update-desktop-database "$HOME/.local/share/applications" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|     if [[ $4 != "nocopy" ]] ; then |     if [[ $4 != "nocopy" ]] ; then | ||||||
|         if [[ -n $4 ]] ; then |         if [[ -n $4 ]] ; then | ||||||
| @@ -454,6 +473,7 @@ EOF | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### REMOVE DESKTOP FILE ##### | ||||||
| remove_desktop () { | remove_desktop () { | ||||||
|     if [[ -n "$1" ]] ; then |     if [[ -n "$1" ]] ; then | ||||||
|         try_remove_file "$USER_WORK_PATH/$1.desktop" |         try_remove_file "$USER_WORK_PATH/$1.desktop" | ||||||
| @@ -470,10 +490,12 @@ remove_desktop () { | |||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # Обновляем кэш desktop файлов |     # Обновляем кэш desktop файлов | ||||||
|  |     if check_command update-desktop-database ; then | ||||||
|         update-desktop-database "$HOME/.local/share/applications" |         update-desktop-database "$HOME/.local/share/applications" | ||||||
|  |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### INSTALLED PROGRAMS ##### | ||||||
| check_installed_programs () { | check_installed_programs () { | ||||||
|     for desktop_file in "$USER_WORK_PATH"/*.desktop ; do |     for desktop_file in "$USER_WORK_PATH"/*.desktop ; do | ||||||
|         if [[ ! -f "$desktop_file" ]] ; then |         if [[ ! -f "$desktop_file" ]] ; then | ||||||
| @@ -512,6 +534,7 @@ run_installed_programs () { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### USED WINED3D LIBRARY ##### | ||||||
| init_wined3d () { | init_wined3d () { | ||||||
|     if [[ "$USE_RENDERER" != "proton" ]] ; then |     if [[ "$USE_RENDERER" != "proton" ]] ; then | ||||||
|         WINED3D_FILES="d3d8 d3d9 d3d10_1 d3d10 d3d10core d3d11 dxgi d3d12 d3d12core" |         WINED3D_FILES="d3d8 d3d9 d3d10_1 d3d10 d3d10core d3d11 dxgi d3d12 d3d12core" | ||||||
| @@ -529,6 +552,7 @@ init_wined3d () { | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### CHECK VULKAN LIBRARY ##### | ||||||
| init_dxvk () { | init_dxvk () { | ||||||
|     check_variables USE_DXVK_VER "$1" |     check_variables USE_DXVK_VER "$1" | ||||||
|  |  | ||||||
| @@ -596,11 +620,9 @@ init_vkd3d () { | |||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
| init_wine_ver () { | ##### DOWNLOAD WINE ##### | ||||||
|     if [[ "$WH_WINE_USE" != system* ]] ; then | download_wine () { | ||||||
|         export WINEDIR="$WH_DIST_DIR/$WH_WINE_USE" |     if [[ ! -d "$WH_DIST_DIR/$WH_WINE_USE" ]] ; then | ||||||
|  |  | ||||||
|         if [[ ! -d "$WINEDIR" ]] ; then |  | ||||||
|         WINE_URL="$CLOUD_URL/$WH_WINE_USE.tar.xz" |         WINE_URL="$CLOUD_URL/$WH_WINE_USE.tar.xz" | ||||||
|         local WINE_PACKAGE="$WH_TMP_DIR/${WH_WINE_USE}.tar.xz" |         local WINE_PACKAGE="$WH_TMP_DIR/${WH_WINE_USE}.tar.xz" | ||||||
|         if try_download "$WINE_URL" "$WINE_PACKAGE" check256sum ; then |         if try_download "$WINE_URL" "$WINE_PACKAGE" check256sum ; then | ||||||
| @@ -610,6 +632,16 @@ init_wine_ver () { | |||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ##### INITIAL WINE SETTINGS ##### | ||||||
|  | init_wine_ver () { | ||||||
|  |     if [[ "$WH_WINE_USE" != system* ]] ; then | ||||||
|  |         export WINEDIR="$WH_DIST_DIR/$WH_WINE_USE" | ||||||
|  |  | ||||||
|  |         if [[ ! -d "$WINEDIR" ]] ; then | ||||||
|  |             download_wine | ||||||
|  |         fi | ||||||
|  |  | ||||||
|         export WINE="${WINEDIR}/bin/wine" |         export WINE="${WINEDIR}/bin/wine" | ||||||
|         export WINELOADER="${WINEDIR}/bin/wine" |         export WINELOADER="${WINEDIR}/bin/wine" | ||||||
| @@ -631,14 +663,7 @@ init_wine_ver () { | |||||||
|             export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib/gstreamer-1.0" |             export GST_PLUGIN_SYSTEM_PATH_1_0="${WINEDIR}/lib/gstreamer-1.0" | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         [[ ! -f "${WINEDIR}/version" ]] && echo "${WH_WINE_USE}" > "${WINEDIR}/version" |         if [[ "${WINEARCH}" == "win64" ]] ; then | ||||||
|  |  | ||||||
|         if [[ ! -d "${WINEDIR}/lib64/wine" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then |  | ||||||
|             create_new_dir "${WINEDIR}/lib64/" |  | ||||||
|             try_force_link_dir "${WINEDIR}/lib/wine/" "${WINEDIR}/lib64/" |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         if [[ -d "${WINEDIR}/lib64" ]] ; then |  | ||||||
|             export LD_LIBRARY_PATH+=":${WINEDIR}/lib64" |             export LD_LIBRARY_PATH+=":${WINEDIR}/lib64" | ||||||
|             export WINEDLLPATH+=":${WINEDIR}/lib64/wine" |             export WINEDLLPATH+=":${WINEDIR}/lib64/wine" | ||||||
|             if [[ -d "${WINEDIR}/lib64/gstreamer-1.0" ]] ; then |             if [[ -d "${WINEDIR}/lib64/gstreamer-1.0" ]] ; then | ||||||
| @@ -646,28 +671,12 @@ init_wine_ver () { | |||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         if [[ $WH_USE_CPCSP_PROXY == "1" ]] \ |         [[ ! -f "${WINEDIR}/version" ]] && echo "${WH_WINE_USE}" > "${WINEDIR}/version" | ||||||
|         && ! grep -q "$CPCSP_PROXY_VER" "${WINEDIR}/cpcsp_proxy.ver" |  | ||||||
|         then |  | ||||||
|             CPCSP_PROXY_NAME="wine-cpcsp_proxy-$CPCSP_PROXY_VER" |  | ||||||
|             CPCSP_PROXY_URL="$CLOUD_URL/$CPCSP_PROXY_NAME.tar.xz" |  | ||||||
|  |  | ||||||
|             if [[ ! -f "$WH_TMP_DIR/$CPCSP_PROXY_NAME" ]] ; then |         if [[ ! -d "${WINEDIR}/lib64/" ]] && [[ -d "${WINEDIR}/lib/wine/x86_64-unix" ]] ; then | ||||||
|                 print_info "Загрузка $CPCSP_PROXY_NAME.tar.xz" |             create_new_dir "${WINEDIR}/lib64/wine" | ||||||
|                 if try_download "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum |             mv -f "${WINEDIR}/lib/wine/x86_64-unix" "${WINEDIR}/lib64/wine/" | ||||||
|                 then unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" |             mv -f "${WINEDIR}/lib/wine/x86_64-windows" "${WINEDIR}/lib64/wine/" | ||||||
|                 else try_remove_file "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" |  | ||||||
|                 fi |  | ||||||
|             else |  | ||||||
|                 unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" |  | ||||||
|             fi |  | ||||||
|  |  | ||||||
|             cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"i386-* "${WINEDIR}/lib/wine/" |  | ||||||
|             if [[ -d "${WINEDIR}/lib64" ]] ; then |  | ||||||
|                 cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"x86_64-* "${WINEDIR}/lib64/wine/" |  | ||||||
|             fi |  | ||||||
|             try_remove_dir "$WH_TMP_DIR/$CPCSP_PROXY_NAME" |  | ||||||
|             echo "$CPCSP_PROXY_VER" > "${WINEDIR}/cpcsp_proxy.ver" |  | ||||||
|         fi |         fi | ||||||
|     else |     else | ||||||
|         # use system WINE |         # use system WINE | ||||||
| @@ -703,6 +712,7 @@ init_wine_ver () { | |||||||
|     print_info "Используется версия wine: $WH_WINE_USE" |     print_info "Используется версия wine: $WH_WINE_USE" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### INITIAL WINEPREFIX SETTINGS ##### | ||||||
| get_and_set_reg_file () { | get_and_set_reg_file () { | ||||||
|      |      | ||||||
|     convert_dec_and_hex () { |     convert_dec_and_hex () { | ||||||
| @@ -812,6 +822,10 @@ get_and_set_reg_file () { | |||||||
| } | } | ||||||
|  |  | ||||||
| wait_wineserver () { | wait_wineserver () { | ||||||
|  | #     while [[ -n "$(ls -l /proc/*/exe 2>/dev/null | grep -ie portproton | grep -E 'wine(64)?-preloader|wineserver' | awk -F/ '{print $3}')" ]] ; do | ||||||
|  | #         sleep 1 | ||||||
|  | #     done | ||||||
|  |  | ||||||
|     "$WINESERVER" -w |     "$WINESERVER" -w | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -866,7 +880,7 @@ check_prefix_var () { | |||||||
|         print_info "Выбран префикс: $WINEPREFIX" |         print_info "Выбран префикс: $WINEPREFIX" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     if echo "$WINEPREFIX" | grep -qv '/' ; then |     if echo "$WINEPREFIX" | grep -v '/' ; then | ||||||
|         export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX" |         export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
| @@ -892,8 +906,8 @@ init_wineprefix () { | |||||||
|         fi |         fi | ||||||
|         print_info "Обновление префикса $WINEPREFIX." |         print_info "Обновление префикса $WINEPREFIX." | ||||||
|         if [[ -d "$WINEPREFIX/drive_c/windows" ]] |         if [[ -d "$WINEPREFIX/drive_c/windows" ]] | ||||||
|         then "$WINELOADER" wineboot -u |         then env WINEDLLOVERRIDES="winegstreamer=" "$WINELOADER" wineboot -u | ||||||
|         else "$WINELOADER" wineboot -i |         else env WINEDLLOVERRIDES="winegstreamer=" "$WINELOADER" wineboot -i | ||||||
|         fi |         fi | ||||||
|         touch "$WINEPREFIX/.firstboot" |         touch "$WINEPREFIX/.firstboot" | ||||||
|         wait_wineserver |         wait_wineserver | ||||||
| @@ -906,7 +920,7 @@ init_wineprefix () { | |||||||
|         && [[ "$WINEARCH" != "win32" ]] |         && [[ "$WINEARCH" != "win32" ]] | ||||||
|         then export WH_WINDOWS_VER="xp64" |         then export WH_WINDOWS_VER="xp64" | ||||||
|         fi |         fi | ||||||
|         "$WINELOADER" winecfg -v $(echo "win${WH_WINDOWS_VER}" | sed 's/.*/\L&/') |         env WINEDLLOVERRIDES="winegstreamer=" "$WINELOADER" winecfg -v $(echo "win${WH_WINDOWS_VER}" | sed 's/.*/\L&/') | ||||||
|         wait_wineserver |         wait_wineserver | ||||||
|         print_info "Windows версия изменена на win${WH_WINDOWS_VER}" |         print_info "Windows версия изменена на win${WH_WINDOWS_VER}" | ||||||
|     fi |     fi | ||||||
| @@ -970,43 +984,6 @@ init_wineprefix () { | |||||||
|         try_remove_file "$WRAPPER" |         try_remove_file "$WRAPPER" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # настраиваем префикс для работы с cpcsp_proxy |  | ||||||
|     if [[ $WH_USE_CPCSP_PROXY == "1" ]] ; then |  | ||||||
|         for cpcsp_proxy_file in "cpcsp_proxy.dll" "cpcsp_proxy_setup.exe" ; do |  | ||||||
|             try_copy_wine_dll_to_pfx_64 "$cpcsp_proxy_file" |  | ||||||
|             try_copy_wine_dll_to_pfx_32 "$cpcsp_proxy_file" |  | ||||||
|         done |  | ||||||
|  |  | ||||||
|         if ! grep -q "cpcsp_proxy.dll" "$WINEPREFIX/system.reg" ; then |  | ||||||
|             if [[ "$WINEARCH" == "win32" ]] |  | ||||||
|             then cpcsp_proxy_cmd=("$WINELOADER" "cpcsp_proxy_setup.exe") |  | ||||||
|             else cpcsp_proxy_cmd=("${WINELOADER}64" "cpcsp_proxy_setup.exe") |  | ||||||
|             fi |  | ||||||
|  |  | ||||||
|             print_info "Запускаем настройку cpcsp_proxy..." |  | ||||||
|             unset CPCSP_PROXY_OK |  | ||||||
|             set -o pipefail |  | ||||||
|             for ((i=2; i < 6; i++)) ; do |  | ||||||
|                 "${cpcsp_proxy_cmd[@]}" | tee "$WINEPREFIX/cpcsp_setup.log" |  | ||||||
|                 local CPCSP_EXIT_STATUS="${PIPESTATUS[0]}" |  | ||||||
|                 if grep -q "failed to load /opt/cprocsp/" "$WINEPREFIX/cpcsp_setup.log" ; then |  | ||||||
|                     fatal "Проверьте правильность установки CryptoPro в системе.\n Инструкция: https://www.altlinux.org/CryptoPro" |  | ||||||
|                 fi |  | ||||||
|  |  | ||||||
|                 if [[ $CPCSP_EXIT_STATUS == "0" ]] ; then |  | ||||||
|                     print_info "Настройка cpcsp_proxy успешно завершена." |  | ||||||
|                     CPCSP_PROXY_OK="1" |  | ||||||
|                     break |  | ||||||
|                 fi |  | ||||||
|                 print_warning "Попытка $i из 5..." |  | ||||||
|                 wait_wineserver |  | ||||||
|             done |  | ||||||
|             wait_wineserver |  | ||||||
|             try_remove_file "$WINEPREFIX/cpcsp_setup.log" |  | ||||||
|             [[ $CPCSP_PROXY_OK != "1" ]] && fatal "Ошибка во время настройки cpcsp_proxy." |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf" |     echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf" | ||||||
|     for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \ |     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 \ |     STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \ | ||||||
| @@ -1016,6 +993,7 @@ init_wineprefix () { | |||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ##### KILL AUTOSTART AFTER INSTALLING ##### | ||||||
| kill_autostart () { | kill_autostart () { | ||||||
|     [[ -z "${1}" ]] && fatal "Нет аргумента для функции kill_autostart." |     [[ -z "${1}" ]] && fatal "Нет аргумента для функции kill_autostart." | ||||||
|     [[ -z "${2}" ]] && SWAIT=3 || SWAIT="${2}" |     [[ -z "${2}" ]] && SWAIT=3 || SWAIT="${2}" | ||||||
| @@ -1032,6 +1010,25 @@ kill_autostart () { | |||||||
|     done |     done | ||||||
| } | } | ||||||
|  |  | ||||||
|  | update_winetricks () { | ||||||
|  |     W_TRX_URL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" | ||||||
|  |     W_TRX_EXT_VER="$(curl -s --list-only "$W_TRX_URL" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||||
|  |     print_info "Актуальная версия winetricks: $W_TRX_EXT_VER" | ||||||
|  |     if [[ -f "$WH_TMP_DIR/winetricks" ]] ; then | ||||||
|  |         W_TRX_INT_VER="$(cat "$WH_TMP_DIR/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/WINETRICKS_VERSION=//')" | ||||||
|  |         print_info "Установленная портативная версия winetricks: $W_TRX_INT_VER" | ||||||
|  |     fi | ||||||
|  |     if [[ -n "$W_TRX_EXT_VER" ]] && [[ "$W_TRX_INT_VER" != "$W_TRX_EXT_VER" ]] ; then | ||||||
|  |         if try_download "$W_TRX_URL" "$WH_TMP_DIR/winetricks_new" ; then | ||||||
|  |             mv -f "$WH_TMP_DIR/winetricks_new" "$WH_TMP_DIR/winetricks" | ||||||
|  |             W_TRX_INT_VER="$(cat "$WH_TMP_DIR/winetricks" | grep -i 'WINETRICKS_VERSION=' | sed 's/_VERSION=//')" | ||||||
|  |             print_info "Портативная версия winetricks обновлена до (${W_TRX_INT_VER})" | ||||||
|  |             chmod u+x "$WH_TMP_DIR/winetricks" | ||||||
|  |         fi | ||||||
|  |     fi | ||||||
|  |     export WINETRICKS="$WH_TMP_DIR/winetricks" | ||||||
|  | } | ||||||
|  |  | ||||||
| use_winetricks () { | use_winetricks () { | ||||||
|     if [[ -n "$INSTALL_DLL" ]] ; then |     if [[ -n "$INSTALL_DLL" ]] ; then | ||||||
|         WH_DLL_INSTALL="$(echo "$INSTALL_DLL $WH_DLL_INSTALL" | awk '{ for(i=1;i<=NF;i++){a[$i]++} }END{ for(i in a){printf("%s ",i)} }' )" |         WH_DLL_INSTALL="$(echo "$INSTALL_DLL $WH_DLL_INSTALL" | awk '{ for(i=1;i<=NF;i++){a[$i]++} }END{ for(i in a){printf("%s ",i)} }' )" | ||||||
| @@ -1041,6 +1038,10 @@ use_winetricks () { | |||||||
|         USE_WT_FROM_DB=0 |         USE_WT_FROM_DB=0 | ||||||
|         [[ ! -f "$WINEPREFIX/winetricks.log" ]] && touch "$WINEPREFIX/winetricks.log" |         [[ ! -f "$WINEPREFIX/winetricks.log" ]] && touch "$WINEPREFIX/winetricks.log" | ||||||
|         for need_install_dll_to_pfx in $WH_DLL_INSTALL "isolate_home" ; do |         for need_install_dll_to_pfx in $WH_DLL_INSTALL "isolate_home" ; do | ||||||
|  |             if [[ "$need_install_dll_to_pfx" == vcrun201[5-9] ]] ; then | ||||||
|  |                 sed -i "/${need_install_dll_to_pfx}/d" "$WINEPREFIX/winetricks.log" | ||||||
|  |                 need_install_dll_to_pfx="vcrun2022" | ||||||
|  |             fi | ||||||
|             if ! grep "$need_install_dll_to_pfx" "$WINEPREFIX/winetricks.log" &>/dev/null ; then |             if ! grep "$need_install_dll_to_pfx" "$WINEPREFIX/winetricks.log" &>/dev/null ; then | ||||||
|                 if [[ -z "$WH_DLL_NEED_INSTALL" ]] |                 if [[ -z "$WH_DLL_NEED_INSTALL" ]] | ||||||
|                 then WH_DLL_NEED_INSTALL="$need_install_dll_to_pfx" |                 then WH_DLL_NEED_INSTALL="$need_install_dll_to_pfx" | ||||||
| @@ -1050,13 +1051,15 @@ use_winetricks () { | |||||||
|             fi |             fi | ||||||
|         done |         done | ||||||
|         if [[ "$USE_WT_FROM_DB" == "1" ]] ; then |         if [[ "$USE_WT_FROM_DB" == "1" ]] ; then | ||||||
|             print_info "Пробуем установить компоненты: ${WH_DLL_NEED_INSTALL}" |             if update_winetricks ; then | ||||||
|  |                 print_info "Пробуем установить библиотеки: ${WH_DLL_NEED_INSTALL}" | ||||||
|                 print_info "Запускаем WINETRICKS..." |                 print_info "Запускаем WINETRICKS..." | ||||||
|                 export WINETRICKS_DOWNLOADER="curl" |                 export WINETRICKS_DOWNLOADER="curl" | ||||||
|             "$WH_WINETRICKS" -q ${WH_DLL_NEED_INSTALL} |                 env WINEDLLOVERRIDES="winegstreamer=" "$WH_TMP_DIR/winetricks" -q ${WH_DLL_NEED_INSTALL} | ||||||
|                 wait_wineserver |                 wait_wineserver | ||||||
|             fi |             fi | ||||||
|         fi |         fi | ||||||
|  |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| kill_wine () { | kill_wine () { | ||||||
| @@ -1076,8 +1079,10 @@ init_database () { | |||||||
|         if [[ -f "$WIN_FILE_EXEC".whdb ]] ; then |         if [[ -f "$WIN_FILE_EXEC".whdb ]] ; then | ||||||
|             WHDB_FILE="$WIN_FILE_EXEC".whdb |             WHDB_FILE="$WIN_FILE_EXEC".whdb | ||||||
|         else |         else | ||||||
|             orig_IFS="$IFS" && IFS=$'\n' |             orig_IFS="$IFS" | ||||||
|             if WH_FIND_DB_FILE="$(grep -ilw "#$WHDB.exe" "$WH_DB_DIR"/* )" ; then |             IFS=$'\n' | ||||||
|  |             WH_FIND_DB_FILE="$(grep -ilw "#$WHDB.exe" "$WH_DB_DIR"/* )" | ||||||
|  |             if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -eq 1 ]] ; then | ||||||
|                 WHDB_FILE="$WH_FIND_DB_FILE" |                 WHDB_FILE="$WH_FIND_DB_FILE" | ||||||
|             fi |             fi | ||||||
|             IFS="$orig_IFS" |             IFS="$orig_IFS" | ||||||
| @@ -1088,7 +1093,8 @@ init_database () { | |||||||
|         print_info "Используется файл настроек: $WHDB_FILE" |         print_info "Используется файл настроек: $WHDB_FILE" | ||||||
|         . "$WHDB_FILE" |         . "$WHDB_FILE" | ||||||
|     elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then |     elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then | ||||||
|         print_info "Найдены настройки из предыдущего использования префикса: $WINEPREFIX" |         print_info "Найдены настройки из предыдущего использования префикса." | ||||||
|  |         echo "$WINEPREFIX/last.conf" | ||||||
|         cat "$WINEPREFIX/last.conf" |         cat "$WINEPREFIX/last.conf" | ||||||
|         . "$WINEPREFIX/last.conf" |         . "$WINEPREFIX/last.conf" | ||||||
|     else |     else | ||||||
| @@ -1209,62 +1215,10 @@ run_autoinstall () { | |||||||
|     echo |     echo | ||||||
| } | } | ||||||
|  |  | ||||||
| remove_prefix() { | ##### REMOVE WINEHELPER ##### | ||||||
|     local prefix_name="$1" |  | ||||||
|     local prefix_path="$WH_PREFIXES_DIR/$prefix_name" |  | ||||||
|  |  | ||||||
|     if [[ -z "$prefix_name" ]]; then |  | ||||||
|         print_error "Не указано имя префикса для удаления." |  | ||||||
|         echo "Использование: $SCRIPT_NAME remove-prefix [имя_префикса]" |  | ||||||
|         echo "Доступные префиксы:" |  | ||||||
|         ls -1 "$WH_PREFIXES_DIR" |  | ||||||
|         return 1 |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ ! -d "$prefix_path" ]]; then |  | ||||||
|         print_error "Префикс "$prefix_name" не найден." |  | ||||||
|         return 1 |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ ! $2 =~ --force|-y ]] ; then |  | ||||||
|         echo "======================================================" |  | ||||||
|         print_warning "Вы собираетесь удалить префикс "$prefix_name"." |  | ||||||
|         echo "Это приведёт к:" |  | ||||||
|         echo " - Полному удалению всех данных префикса" |  | ||||||
|         echo " - Удалению всех программ, установленных в этом префиксе" |  | ||||||
|         echo " - Удалению связанных ярлыков из меню и рабочего стола" |  | ||||||
|         echo "======================================================" |  | ||||||
|         read -p "Продолжить удаление? (y/N): " answer |  | ||||||
|  |  | ||||||
|         if [[ ! "$answer" =~ ^[YyДд]$ ]]; then |  | ||||||
|             print_info "Удаление префикса отменено." |  | ||||||
|             return 0 |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|     try_remove_dir "$prefix_path" |  | ||||||
|  |  | ||||||
|     if [[ $? -eq 0 ]]; then |  | ||||||
|         print_ok "Префикс "$prefix_name" успешно удален." |  | ||||||
|  |  | ||||||
|         for desktop_file in "$WH_MENU_DIR"/*.desktop; do |  | ||||||
|             if grep -q "$prefix_path" "$desktop_file"; then |  | ||||||
|                 desktop_name=$(basename "$desktop_file") |  | ||||||
|                 remove_desktop "${desktop_name%.*}" |  | ||||||
|             fi |  | ||||||
|         done |  | ||||||
|  |  | ||||||
|         return 0 |  | ||||||
|     else |  | ||||||
|         print_error "Не удалось удалить префикс "$prefix_name"." |  | ||||||
|         return 1 |  | ||||||
|     fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| remove_winehelper () { | remove_winehelper () { | ||||||
|     local answer |     local answer | ||||||
|     if [[ $1 =~ --force|-y ]] ; then |  | ||||||
|         answer="y" |  | ||||||
|     else |  | ||||||
|     echo "======================================================" |     echo "======================================================" | ||||||
|     print_warning "Вы собираетесь удалить WineHelper и все связанные с ним данные." |     print_warning "Вы собираетесь удалить WineHelper и все связанные с ним данные." | ||||||
|     echo " Это удалит:" |     echo " Это удалит:" | ||||||
| @@ -1275,20 +1229,16 @@ remove_winehelper () { | |||||||
|     echo "Продолжить? (y/N)" |     echo "Продолжить? (y/N)" | ||||||
|     read -r answer |     read -r answer | ||||||
|  |  | ||||||
|         if [[ "$answer" =~ ^[YyДд]$ ]] ; then |     if [[ "$answer" =~ ^[YyДд]$ ]]; then | ||||||
|         # Второе подтверждение |         # Второе подтверждение | ||||||
|         echo "----------------------------------------------" |         echo "----------------------------------------------" | ||||||
|         print_warning " ВЫ ТОЧНО УВЕРЕНЫ?" |         print_warning " ВЫ ТОЧНО УВЕРЕНЫ?" | ||||||
|         echo "----------------------------------------------" |         echo "----------------------------------------------" | ||||||
|         echo "Продолжить? (y/N)" |         echo "Продолжить? (y/N)" | ||||||
|         read -r answer |         read -r answer | ||||||
|         else |  | ||||||
|             print_info "Удаление отменено." |  | ||||||
|             return 1 |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ "$answer" =~ ^[YyДд]$ ]] ; then |         if [[ "$answer" =~ ^[YyДд]$ ]]; then | ||||||
|  |  | ||||||
|             # Удаление рабочих каталогов |             # Удаление рабочих каталогов | ||||||
|             try_remove_dir "$USER_WORK_PATH" |             try_remove_dir "$USER_WORK_PATH" | ||||||
|  |  | ||||||
| @@ -1305,7 +1255,9 @@ remove_winehelper () { | |||||||
|             done |             done | ||||||
|  |  | ||||||
|             # Обновление кэша desktop-файлов |             # Обновление кэша desktop-файлов | ||||||
|  |             if check_command update-desktop-database; then | ||||||
|                 update-desktop-database "$HOME/.local/share/applications" |                 update-desktop-database "$HOME/.local/share/applications" | ||||||
|  |             fi | ||||||
|  |  | ||||||
|             # Удаление символических ссылок |             # Удаление символических ссылок | ||||||
|             try_remove_file "$HOME/.winehelper" |             try_remove_file "$HOME/.winehelper" | ||||||
| @@ -1314,6 +1266,9 @@ remove_winehelper () { | |||||||
|         else |         else | ||||||
|             print_info "Удаление отменено." |             print_info "Удаление отменено." | ||||||
|         fi |         fi | ||||||
|  |     else | ||||||
|  |         print_info "Удаление отменено." | ||||||
|  |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| wh_info () { | wh_info () { | ||||||
| @@ -1326,8 +1281,7 @@ wh_info () { | |||||||
|  |  | ||||||
|     installed                     список установленных программ |     installed                     список установленных программ | ||||||
|     run [программа.exe]           запуск программы (отладка) |     run [программа.exe]           запуск программы (отладка) | ||||||
|     remove-all                    удалить WineHelper и все связанные данные |     remove                        удалить WineHelper и все связанные данные | ||||||
|     remove-prefix [имя_префикса]  удалить префикс и все связанные данные |  | ||||||
|  |  | ||||||
| Параметры: | Параметры: | ||||||
|     --help                        показать эту справку и выйти |     --help                        показать эту справку и выйти | ||||||
| @@ -1356,13 +1310,12 @@ case "${1,,}" in | |||||||
|     winereg|regedit) prepair_wine ; wine_run "regedit" ;; |     winereg|regedit) prepair_wine ; wine_run "regedit" ;; | ||||||
|     winefile|explorer) prepair_wine ; wine_run "winefile" ;; |     winefile|explorer) prepair_wine ; wine_run "winefile" ;; | ||||||
|     wineconsole|cmd) prepair_wine ; wine_run "wineconsole" ;; |     wineconsole|cmd) prepair_wine ; wine_run "wineconsole" ;; | ||||||
|     winetricks) shift ; prepair_wine ; "$WINETRICKS" -q "$@" ;; |     winetricks) shift ; update_winetricks ; prepair_wine ; "$WINETRICKS" -q "$@" ;; | ||||||
|     desktop) shift ; create_desktop "$@" ; exit 0 ;; |     desktop) shift ; create_desktop "$@" ; exit 0 ;; | ||||||
|     install|-i) shift ; run_autoinstall "$@" ;; |     install|-i) shift ; run_autoinstall "$@" ;; | ||||||
|     installed) shift ; check_installed_programs "$1" ;; |     installed) shift ; check_installed_programs "$1" ;; | ||||||
|     run|-r) shift ; run_installed_programs "$1" ;; |     run|-r) shift ; run_installed_programs "$1" ;; | ||||||
|     remove-all) shift ; remove_winehelper "$@" ;; |     remove|--remove) remove_winehelper ;; | ||||||
|     remove-prefix) shift ; remove_prefix "$@" ;; |  | ||||||
|     *) |     *) | ||||||
|         if [[ -f "$1" ]] ; then |         if [[ -f "$1" ]] ; then | ||||||
|             WIN_FILE_EXEC="$(readlink -f "$1")" |             WIN_FILE_EXEC="$(readlink -f "$1")" | ||||||
|   | |||||||
							
								
								
									
										19204
									
								
								winetricks_20250102
									
									
									
									
									
								
							
							
						
						
									
										19204
									
								
								winetricks_20250102
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user