Compare commits
No commits in common. "master" and "minergenon-tflex3prog" have entirely different histories.
master
...
minergenon
44
CHANGELOG
@ -1,49 +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:
|
|
||||||
* обновлены функции создания desktop файлов (ярлыков) и категория WineHelper в меню
|
|
||||||
* обновлен скрипт установки scadoffice
|
|
||||||
* добавлена автоустановка:
|
|
||||||
winehelper install zulugis - ZuluGIS 2021 Инженерные расчёты
|
|
||||||
* добавлена функция полного удаления WineHelper
|
|
||||||
* обновлена проверка на наличие noexec для /home (ALT bug: 54095)
|
|
||||||
|
|
||||||
0.3.6:
|
|
||||||
* добавлена категория WineHelper для desktop файлов (ярлыков) в меню
|
|
||||||
|
|
||||||
0.3.5:
|
|
||||||
* обновлены скрипты установок daobit
|
|
||||||
* добавлен вывод списка программ с возможностью установки из существующего дистрибутива
|
|
||||||
|
|
||||||
0.3.4:
|
|
||||||
* добавлены скрипты установки специализированных программных решений для железнодорожной логистики daobit:
|
|
||||||
winehelper install daobit-cservice "/путь/до/установочного_файла" - "Сервис обновления ПО"
|
|
||||||
winehelper install daobit-ratlas "/путь/до/установочного_файла" - "R-Атлас"
|
|
||||||
winehelper install daobit-rinfo "/путь/до/установочного_файла" - "R-Инфо"
|
|
||||||
winehelper install daobit-rtariff "/путь/до/установочного_файла" - "R-Тариф"
|
|
||||||
* добавлена автоустановка:
|
|
||||||
winehelper install scadoffice - "Программный комплекс для расчёта строительных конструкций"
|
|
||||||
* добавлена возможность запуска приложений в сессии XRDP
|
|
||||||
|
|
||||||
0.3.3:
|
0.3.3:
|
||||||
* добавлены скрипты установки:
|
* добавлены скрипты установки:
|
||||||
winehelper install is-record-station "/путь/до/установочного_файла"
|
winehelper install is-record-station "/путь/до/установочного_файла"
|
||||||
|
@ -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
|
|
@ -1,78 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: SCAD Office — это программный комплекс для расчёта строительных конструкций, с дополнением Apache OpenOffice. Apache OpenOffice - пакет офисного программного обеспечения для обработки текстов, электронных таблиц, презентаций, графики, баз данных и многого другого.
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
|
||||||
export WINEPREFIX="scadoffice"
|
|
||||||
export BASE_PFX="scadaoffice_pfx_x64_v03"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
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 WH_XDG_OPEN="rtf"
|
|
||||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/SCADOffice_installer.exe"
|
|
||||||
SCADOFFICE_ADDONS_URL="https://cloud.linux-gaming.ru/portproton/scadoffice_addons_v02.tar.xz"
|
|
||||||
|
|
||||||
prepair_wine
|
|
||||||
|
|
||||||
DRIVE_C_SCADOFFICE="$DRIVE_C/SCAD Soft/SCADOffice/64"
|
|
||||||
|
|
||||||
if [[ -n $2 ]] ; then
|
|
||||||
if [[ ! -d "$DRIVE_C_SCADOFFICE" ]] ; then
|
|
||||||
fatal "Перезапустите скрипт без дополнительных аргументов для установки SCAD Office:
|
|
||||||
winehelper install scadoffice"
|
|
||||||
elif [[ ! -f "$2" ]] ; then
|
|
||||||
fatal "Перезапустите скрипт с правильным путем до файла лицензии SCAD Office:
|
|
||||||
winehelper install scadoffice \"/путь/до/файла.exe\""
|
|
||||||
else
|
|
||||||
print_info "Устанавливаем файл лицензии $2"
|
|
||||||
wine_run "$2"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $BASE_PFX == "none" ]] ; then
|
|
||||||
print_info "Установка дополнительных компонентов..."
|
|
||||||
|
|
||||||
ADDONS_PACK="${WH_TMP_DIR}/$(basename "$SCADOFFICE_ADDONS_URL")"
|
|
||||||
ADDONS_PATH="${WH_TMP_DIR}/scadoffice_addons"
|
|
||||||
|
|
||||||
ADDONS_PATH_REG="${ADDONS_PATH}/REG"
|
|
||||||
ADDONS_PATH_MDAC="${ADDONS_PATH}/mdac64"
|
|
||||||
ADDONS_PATH_OPENSSH="${ADDONS_PATH}/OpenSSH"
|
|
||||||
|
|
||||||
if try_download "$SCADOFFICE_ADDONS_URL" "${ADDONS_PACK}" ; then
|
|
||||||
create_new_dir "${ADDONS_PATH}"
|
|
||||||
unpack "${ADDONS_PACK}" "${ADDONS_PATH}"
|
|
||||||
wine_run regedit "${ADDONS_PATH_REG}"/*.reg
|
|
||||||
|
|
||||||
# Установка ODBC
|
|
||||||
rm -fR "$DRIVE_C/Program Files (x86)/Common Files/System"
|
|
||||||
cp -r "${ADDONS_PATH_MDAC}/System" "$DRIVE_C/Program Files (x86)/Common Files/System"
|
|
||||||
cp -r "${ADDONS_PATH_MDAC}"/*.* "$DRIVE_C/windows/system32/"
|
|
||||||
wine_run regedit "${ADDONS_PATH_MDAC}"/*.reg
|
|
||||||
|
|
||||||
# Установка SSH
|
|
||||||
cp -r "${ADDONS_PATH_OPENSSH}" "$DRIVE_C/windows/system32/"
|
|
||||||
|
|
||||||
try_remove_dir "$ADDONS_PATH"
|
|
||||||
try_remove_file "$ADDONS_PACK"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if try_download "https://scadhelp.ru/files/10/download" "${AUTOINSTALL_EXE}" ; then
|
|
||||||
create_new_dir "$DRIVE_C/SDATA"
|
|
||||||
create_new_dir "$DRIVE_C/SWORK"
|
|
||||||
wine_run_install "${AUTOINSTALL_EXE}" /auto /hide
|
|
||||||
try_remove_file "$AUTOINSTALL_EXE"
|
|
||||||
|
|
||||||
# Определение всех программ, значков и исполняемых файлов
|
|
||||||
declare -a PROG_NAME=("Арбат" "Вест" "Глобальные настройки" "Декор" "Дискретная арматура" "Запрос" "Камин" "КоКон" "Комета" "Конструктор сечений" "Консул" "Конфигуратор лицензий" "Кристалл" "Кросс" "Куст" "Магнум" "Монолит" "Откос" "Пастернак" "Преобразование ед. измерений" "Cортамент металлопроката" "Расчет по формуле" "Редактор акселерограмм" "Редактор динамичности" "Редактор материалов" "Тонус" "Эквивалентное сечение" "SCAD++")
|
|
||||||
|
|
||||||
declare -a PROG_ICON=("arbat" "west" "globalsettings" "decor" "rebar" "underground" "comein" "cocon" "comet" "section" "consul" "configprotection" "kristall" "cross" "kust" "magnum" "monolit" "slope" "pasternak" "ucalc" "viewprof" "scalc" "acceledit" "betaedit" "materialsedit" "tonus" "sezam" "scadx")
|
|
||||||
|
|
||||||
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
|
|
||||||
for i in "${!PROG_NAME[@]}"; do
|
|
||||||
create_desktop "${PROG_NAME[i]}" "${WIN_FILE_EXEC[i]}" "${PROG_ICON[i]}" "nocopy"
|
|
||||||
done
|
|
||||||
fi
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: ZuluGIS 2021 Инженерные расчёты (Полный) 64-бит. Включает ZuluGIS, пакеты расчетов ZuluThermo, ZuluHydro, ZuluDrain, ZuluGaz, ZuluSteam, библиотеки ZuluXTools и ZuluNetTools. Дополнительно в состав пакета входит Microsoft SQL Server Express LocalDB 2012.
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
|
||||||
export PROG_NAME="ZuluGIS 2021"
|
|
||||||
export WINEPREFIX="zulugis"
|
|
||||||
export PROG_ICON="zulugis"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
export BASE_PFX="none"
|
|
||||||
export WINEARCH="win64"
|
|
||||||
# export INSTALL_DLL="gdiplus"
|
|
||||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/Zulu2021_x64_ru.exe"
|
|
||||||
|
|
||||||
prepair_wine
|
|
||||||
if try_download "https://www.politerm.com/download/zulu/Zulu2021_x64_ru.exe" "${AUTOINSTALL_EXE}" ; then
|
|
||||||
wine_run_install "${AUTOINSTALL_EXE}" /quiet /norestart
|
|
||||||
try_remove_file "${AUTOINSTALL_EXE}"
|
|
||||||
|
|
||||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/ZuluGIS/Zulu.exe"
|
|
||||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
|
||||||
fi
|
|
@ -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
|
||||||
|
|
||||||
|
Before ![]() (image error) Size: 5.2 KiB |
BIN
image/arbat.png
Before ![]() (image error) Size: 16 KiB |
Before ![]() (image error) Size: 17 KiB |
BIN
image/cocon.png
Before ![]() (image error) Size: 10 KiB |
BIN
image/comein.png
Before ![]() (image error) Size: 16 KiB |
BIN
image/comet.png
Before ![]() (image error) Size: 15 KiB |
Before ![]() (image error) Size: 17 KiB |
BIN
image/consul.png
Before ![]() (image error) Size: 6.1 KiB |
BIN
image/cross.png
Before ![]() (image error) Size: 16 KiB |
Before ![]() (image error) Size: 20 KiB |
Before ![]() (image error) Size: 14 KiB |
Before ![]() (image error) Size: 19 KiB |
Before ![]() (image error) Size: 15 KiB |
BIN
image/decor.png
Before ![]() (image error) Size: 19 KiB |
Before ![]() (image error) Size: 6.1 KiB |
Before ![]() (image error) Size: 26 KiB |
Before ![]() (image error) Size: 17 KiB |
BIN
image/kust.png
Before ![]() (image error) Size: 21 KiB |
BIN
image/magnum.png
Before ![]() (image error) Size: 18 KiB |
Before ![]() (image error) Size: 14 KiB |
Before ![]() (image error) Size: 9.7 KiB |
Before ![]() (image error) Size: 11 KiB |
Before ![]() (image error) Size: 10 KiB |
BIN
image/rebar.png
Before ![]() (image error) Size: 15 KiB |
BIN
image/scadx.png
Before ![]() (image error) Size: 14 KiB |
BIN
image/scalc.png
Before ![]() (image error) Size: 21 KiB |
Before ![]() (image error) Size: 13 KiB |
BIN
image/sezam.png
Before ![]() (image error) Size: 11 KiB |
BIN
image/slope.png
Before ![]() (image error) Size: 13 KiB |
BIN
image/tonus.png
Before ![]() (image error) Size: 8.4 KiB |
BIN
image/ucalc.png
Before ![]() (image error) Size: 21 KiB |
Before ![]() (image error) Size: 12 KiB |
Before ![]() (image error) Size: 16 KiB |
BIN
image/west.png
Before ![]() (image error) Size: 16 KiB |
Before ![]() (image error) Size: 27 KiB |
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: Сервис обновления ПО
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
|
||||||
export WINEPREFIX="daobit"
|
|
||||||
export PROG_NAME="Сервис обновления ПО"
|
|
||||||
export PROG_ICON="daobitcservice"
|
|
||||||
export BASE_PFX="daobit_pfx_x86_v01"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
export WINEARCH="win32"
|
|
||||||
export INSTALL_DLL="dotnet7 dotnetdesktop7 arial renderer=gdi"
|
|
||||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_cs"
|
|
||||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_cs/SETUP.EXE"
|
|
||||||
EXE_SETUP_NAME="setup_cs.exe"
|
|
||||||
|
|
||||||
if [[ -f "$2" ]] && [[ $2 =~ $EXE_SETUP_NAME$ ]] ; then
|
|
||||||
prepair_wine
|
|
||||||
|
|
||||||
7z x -y "$2" -o"${AUTOINSTALL_UNPACK}"
|
|
||||||
wine_run_install "${AUTOINSTALL_SETUP}" /cd /targetdir="C:\\\\Program Files\\\\DAO\\\\CSERVICE" /auto /hide
|
|
||||||
|
|
||||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/DAO/CSERVICE/CService32.exe"
|
|
||||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
|
||||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
|
||||||
else
|
|
||||||
fatal "Не найден файл установки для $PROG_NAME. Перезапустите по примеру:
|
|
||||||
winehelper install $1 \"/путь/до/$EXE_SETUP_NAME\""
|
|
||||||
fi
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: Построение маршрутов железнодорожных грузоперевозок
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
|
||||||
export WINEPREFIX="daobit"
|
|
||||||
export PROG_NAME="R-Атлас"
|
|
||||||
export PROG_ICON="daobitratlas"
|
|
||||||
export BASE_PFX="daobit_pfx_x86_v01"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
export WINEARCH="win32"
|
|
||||||
export INSTALL_DLL="dotnet7 dotnetdesktop7 arial renderer=gdi"
|
|
||||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_rk"
|
|
||||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_rk/setup.exe"
|
|
||||||
EXE_SETUP_NAME="setup_rk.exe"
|
|
||||||
|
|
||||||
if [[ -f "$2" ]] && [[ $2 =~ $EXE_SETUP_NAME$ ]] ; then
|
|
||||||
prepair_wine
|
|
||||||
|
|
||||||
7z x -y "$2" -o"${AUTOINSTALL_UNPACK}"
|
|
||||||
wine_run_install "${AUTOINSTALL_SETUP}" /cd /targetdir="C:\\\\Program Files\\\\DAO\\\\RAtlas" /auto /hide
|
|
||||||
|
|
||||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/DAO/RAtlas/ratlas.exe"
|
|
||||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
|
||||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
|
||||||
else
|
|
||||||
fatal "Не найден файл установки для $PROG_NAME. Перезапустите по примеру:
|
|
||||||
winehelper install $1 \"/путь/до/$EXE_SETUP_NAME\""
|
|
||||||
fi
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: Специализированная информация для организации железнодорожных перевозок
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
|
||||||
export WINEPREFIX="daobit"
|
|
||||||
export PROG_NAME="R-Инфо"
|
|
||||||
export PROG_ICON="daobitrinfo"
|
|
||||||
export BASE_PFX="daobit_pfx_x86_v01"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
export WINEARCH="win32"
|
|
||||||
export INSTALL_DLL="dotnet7 dotnetdesktop7 arial renderer=gdi"
|
|
||||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_ri"
|
|
||||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_ri/setup.exe"
|
|
||||||
EXE_SETUP_NAME="setup_ri.exe"
|
|
||||||
|
|
||||||
if [[ -f "$2" ]] && [[ $2 =~ $EXE_SETUP_NAME$ ]] ; then
|
|
||||||
prepair_wine
|
|
||||||
|
|
||||||
7z x -y "$2" -o"${AUTOINSTALL_UNPACK}"
|
|
||||||
wine_run_install "${AUTOINSTALL_SETUP}" /cd /targetdir="C:\\\\Program Files\\\\DAO\\\\RInfo" /auto /hide
|
|
||||||
|
|
||||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/DAO/RInfo/rinfo.exe"
|
|
||||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
|
||||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
|
||||||
else
|
|
||||||
fatal "Не найден файл установки для $PROG_NAME. Перезапустите по примеру:
|
|
||||||
winehelper install $1 \"/путь/до/$EXE_SETUP_NAME\""
|
|
||||||
fi
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# info_ru: Расчёт размера провозной платы и дополнительных сборов за грузовые перевозки по железной дороге
|
|
||||||
########################################################################
|
|
||||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
|
||||||
export WINEPREFIX="daobit"
|
|
||||||
export PROG_NAME="R-Тариф"
|
|
||||||
export PROG_ICON="daobitrtariff"
|
|
||||||
export BASE_PFX="daobit_pfx_x86_v01"
|
|
||||||
export WH_WINDOWS_VER="10"
|
|
||||||
export WINEARCH="win32"
|
|
||||||
export INSTALL_DLL="dotnet7 dotnetdesktop7 arial renderer=gdi"
|
|
||||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_rt"
|
|
||||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_rt/setup.exe"
|
|
||||||
EXE_SETUP_NAME="setup_rt.exe"
|
|
||||||
|
|
||||||
if [[ -f "$2" ]] && [[ $2 =~ $EXE_SETUP_NAME$ ]] ; then
|
|
||||||
prepair_wine
|
|
||||||
|
|
||||||
7z x -y "$2" -o"${AUTOINSTALL_UNPACK}"
|
|
||||||
wine_run_install "${AUTOINSTALL_SETUP}" /cd /targetdir="C:\\\\Program Files\\\\DAO\\\\RTariff" /auto /hide
|
|
||||||
|
|
||||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/DAO/RTariff/Tariff.exe"
|
|
||||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
|
||||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
|
||||||
else
|
|
||||||
fatal "Не найден файл установки для $PROG_NAME. Перезапустите по примеру:
|
|
||||||
winehelper install $1 \"/путь/до/$EXE_SETUP_NAME\""
|
|
||||||
fi
|
|
@ -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
|
||||||
@ -63,13 +59,3 @@ d026d799f8d3893c64c749661240d76896d45fd14fdb6665bf0f875a4a05bcdb spravkibk_pfx_
|
|||||||
dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e audiorecstation_pfx_v01.tar.xz
|
dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e audiorecstation_pfx_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 gdiplus vcrun2022 xact winhttp dotnet40 dotnet48 andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts dsound
|
# winetricks gdiplus vcrun2022 xact winhttp dotnet40 dotnet48 andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts dsound
|
||||||
|
|
||||||
00516ef51079d68ad0f9621c8270e0f86318539b63ebf1085d0faba36896e4ac daobit_pfx_x86_v01.tar.xz
|
|
||||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
|
||||||
# winetricks arial dotnet7 dotnetdesktop7 renderer=gdi
|
|
||||||
|
|
||||||
25e277c7afa4a9afc5f013cb05f872c12a7f381c4f0503a423dcacccca9a14c6 scadaoffice_pfx_x64_v03.tar.xz
|
|
||||||
# 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
|
|
||||||
# + addons with ODBC, SSH, *.reg
|
|
||||||
0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb scadoffice_addons_v02.tar.xz
|
|
||||||
|
663
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,11 +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_CATEGORY="$HOME/.local/share/desktop-directories/WineHelper.directory"
|
|
||||||
WH_MENU_CONFIG="$HOME/.config/menus/applications-merged/WineHelper.menu"
|
|
||||||
|
|
||||||
# export WINEDLLOVERRIDES=mshtml,mscoree="
|
# export WINEDLLOVERRIDES=mshtml,mscoree="
|
||||||
|
|
||||||
@ -71,9 +59,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"
|
||||||
@ -101,24 +86,36 @@ check_variables VKD3D_VER "1.1-2602"
|
|||||||
# check_variables VKD3D_LIMIT_TESS_FACTORS 64
|
# check_variables VKD3D_LIMIT_TESS_FACTORS 64
|
||||||
# check_variables VKD3D_FEATURE_LEVEL "12_0"
|
# check_variables VKD3D_FEATURE_LEVEL "12_0"
|
||||||
|
|
||||||
|
if [[ "$WINEARCH" == "win32" ]] ;then
|
||||||
|
check_variables BASE_PFX "defpfx_x86_v01"
|
||||||
|
check_variables WINEPREFIX "default_x86"
|
||||||
|
else
|
||||||
|
check_variables BASE_PFX "defpfx_x64_v01"
|
||||||
|
check_variables WINEPREFIX "default_x64"
|
||||||
|
fi
|
||||||
|
|
||||||
export CLOUD_URL="https://cloud.linux-gaming.ru/portproton"
|
export CLOUD_URL="https://cloud.linux-gaming.ru/portproton"
|
||||||
|
|
||||||
##### CHECK NOEXEC FOR /HOME #####
|
##### CHECK NOEXEC FOR /HOME #####
|
||||||
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
|
if grep "/home" /etc/fstab | grep -q "noexec" ; then
|
||||||
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
|
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
|
||||||
fi
|
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 +123,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 +159,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 +171,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 +197,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 +315,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 +323,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,10 +361,10 @@ 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"
|
||||||
local desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")"
|
|
||||||
local icon_file="$WH_IMAGE_PATH/$3.png"
|
local icon_file="$WH_IMAGE_PATH/$3.png"
|
||||||
|
|
||||||
if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then
|
if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then
|
||||||
@ -367,78 +387,24 @@ create_desktop () {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# создаем .desktop файл
|
|
||||||
create_new_dir "$WH_MENU_DIR"
|
|
||||||
[[ ! -f "$icon_file" ]] && icon_file=wine
|
[[ ! -f "$icon_file" ]] && icon_file=wine
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "[Desktop Entry]"
|
echo "[Desktop Entry]"
|
||||||
echo "Name=$name_desktop"
|
echo "Name=$name_desktop"
|
||||||
echo "Exec=env \"$RUN_SCRIPT\" \"$exe_file\" %F"
|
echo "Exec=env \"$RUN_SCRIPT\" \"$exe_file\" %F"
|
||||||
echo "Type=Application"
|
echo "Type=Application"
|
||||||
echo "Categories=WineHelper;"
|
echo "Categories=Other;"
|
||||||
echo "StartupNotify=true"
|
echo "StartupNotify=true"
|
||||||
echo "Path=$DATA_PATH"
|
echo "Path=$DATA_PATH"
|
||||||
echo "Icon=$icon_file"
|
echo "Icon=$icon_file"
|
||||||
} > "$USER_WORK_PATH/$desktop_filename.desktop"
|
} > "$USER_WORK_PATH/$name_desktop.desktop"
|
||||||
chmod +x "$USER_WORK_PATH/$desktop_filename.desktop"
|
chmod +x "$USER_WORK_PATH/$name_desktop.desktop"
|
||||||
|
|
||||||
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/"
|
create_new_dir "$HOME/.local/share/applications/"
|
||||||
|
# cp -f "$USER_WORK_PATH/$name_desktop.desktop" "$HOME/.local/share/applications/"
|
||||||
# добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
|
cp -f "$USER_WORK_PATH/$name_desktop.desktop" "$(xdg-user-dir DESKTOP)"
|
||||||
if [[ -f "$WINEPREFIX/desktop.list" ]] \
|
print_info "На рабочем столе создан $name_desktop.desktop"
|
||||||
&& grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list"
|
|
||||||
then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list"
|
|
||||||
fi
|
|
||||||
create_new_dir "$WINEPREFIX/icons"
|
|
||||||
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"
|
|
||||||
if [[ ! -f "$WH_MENU_CATEGORY" ]] ; then
|
|
||||||
cat > "$WH_MENU_CATEGORY" <<EOF
|
|
||||||
[Desktop Entry]
|
|
||||||
Type=Directory
|
|
||||||
Name=WineHelper
|
|
||||||
Icon=wine
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Создаем файл меню для всех приложений
|
|
||||||
create_new_dir "$HOME/.config/menus/applications-merged"
|
|
||||||
if [[ ! -f "$WH_MENU_CONFIG" ]] ; then
|
|
||||||
cat > "$WH_MENU_CONFIG" <<EOF
|
|
||||||
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
|
|
||||||
<Menu>
|
|
||||||
<Name>Applications</Name>
|
|
||||||
<Menu>
|
|
||||||
<Name>WineHelper</Name>
|
|
||||||
<Directory>WineHelper.directory</Directory>
|
|
||||||
<Include>
|
|
||||||
<Category>WineHelper</Category>
|
|
||||||
</Include>
|
|
||||||
</Menu>
|
|
||||||
</Menu>
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Обновляем кэш desktop файлов
|
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
|
||||||
|
|
||||||
if [[ $4 != "nocopy" ]] ; then
|
|
||||||
if [[ -n $4 ]] ; then
|
|
||||||
local desktop_path="$(xdg-user-dir DESKTOP)/$4"
|
|
||||||
create_new_dir "$desktop_path"
|
|
||||||
print_info "В меню создан $desktop_filename.desktop и скопирован на рабочий стол в каталог $4"
|
|
||||||
else
|
|
||||||
local desktop_path="$(xdg-user-dir DESKTOP)"
|
|
||||||
print_info "В меню и на рабочем столе создан $desktop_filename.desktop"
|
|
||||||
fi
|
|
||||||
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$desktop_path"
|
|
||||||
else
|
|
||||||
print_info "В меню создан $desktop_filename.desktop"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]] \
|
if [[ -n "$INSTALL_SCRIPT_NAME" ]] \
|
||||||
&& [[ -f "$exe_file" ]]
|
&& [[ -f "$exe_file" ]]
|
||||||
@ -454,26 +420,16 @@ 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"
|
||||||
try_remove_file "$WH_MENU_DIR/$1.desktop"
|
|
||||||
try_remove_file "$HOME/.local/share/applications/$1.desktop"
|
try_remove_file "$HOME/.local/share/applications/$1.desktop"
|
||||||
try_remove_file "$(xdg-user-dir DESKTOP)/$1.desktop"
|
try_remove_file "$(xdg-user-dir DESKTOP)/$1.desktop"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Удаляем категорию если она пуста
|
|
||||||
if [[ -d "$WH_MENU_DIR" ]] && [[ -z "$(ls -A "$WH_MENU_DIR")" ]]; then
|
|
||||||
try_remove_dir "$WH_MENU_DIR"
|
|
||||||
try_remove_file "$WH_MENU_CATEGORY"
|
|
||||||
try_remove_file "$WH_MENU_CONFIG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Обновляем кэш desktop файлов
|
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##### 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 +468,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 +486,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 +554,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 +566,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 +597,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 +605,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,115 +646,12 @@ init_wine_ver () {
|
|||||||
print_info "Используется версия wine: $WH_WINE_USE"
|
print_info "Используется версия wine: $WH_WINE_USE"
|
||||||
}
|
}
|
||||||
|
|
||||||
get_and_set_reg_file () {
|
##### INITIAL WINEPREFIX SETTINGS #####
|
||||||
|
|
||||||
convert_dec_and_hex () {
|
|
||||||
local type=$1
|
|
||||||
local num=$2
|
|
||||||
|
|
||||||
case "$type" in
|
|
||||||
--dec)
|
|
||||||
# Преобразование из десятичного в шестнадцатеричный
|
|
||||||
echo -n "$(printf "%08x" "$num")" ;;
|
|
||||||
--hex)
|
|
||||||
# Преобразование из шестнадцатеричного в десятичный
|
|
||||||
echo $(( 0x$num )) ;;
|
|
||||||
*)
|
|
||||||
echo "Неверный тип преобразования. Используйте --dec или --hex." ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
local name_block name_for_find find_block find_file find_line count name_for_new_block name_for_find_old
|
|
||||||
local line_reg find_number_line find_check_file name_for_set name_type_reg name_fatal name_add_or_del
|
|
||||||
name_add_or_del=$1
|
|
||||||
name_block=$2
|
|
||||||
name_for_find=$3
|
|
||||||
name_type_reg=$4
|
|
||||||
name_for_set=$5
|
|
||||||
name_for_new_block=$6
|
|
||||||
name_for_find_old=$name_for_find
|
|
||||||
name_fatal="$name_block $name_for_find"
|
|
||||||
|
|
||||||
case $name_type_reg in
|
|
||||||
REG_DWORD)
|
|
||||||
if [[ $name_for_find != '@=' ]]
|
|
||||||
then name_for_find="\"$name_for_find\"=dword:"
|
|
||||||
else name_for_find="@=dword:"
|
|
||||||
fi
|
|
||||||
name_for_set=$(convert_dec_and_hex --dec "$name_for_set") ;;
|
|
||||||
REG_SZ)
|
|
||||||
if [[ $name_for_find != '@=' ]]
|
|
||||||
then name_for_find="\"$name_for_find\"="
|
|
||||||
else name_for_find="@="
|
|
||||||
fi
|
|
||||||
name_for_set="\"$name_for_set\"" ;;
|
|
||||||
*)
|
|
||||||
if [[ $name_add_or_del == --delete ]] ; then
|
|
||||||
if [[ $name_for_find != '@=' ]]
|
|
||||||
then name_for_find="\"$name_for_find\""
|
|
||||||
else name_for_find="@="
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
print_error "не задан тип ветки реестра: $name_fatal"
|
|
||||||
return 1
|
|
||||||
fi ;;
|
|
||||||
esac
|
|
||||||
name_block=${name_block//\\/\\\\\\\\}
|
|
||||||
if [[ -n $name_for_new_block ]] ; then
|
|
||||||
find_block=$(grep -n "\[$name_block\]" "$WINEPREFIX/$name_for_new_block.reg")
|
|
||||||
else
|
|
||||||
find_block=$(grep -n "\[$name_block\]" "$WINEPREFIX/"*.reg)
|
|
||||||
fi
|
|
||||||
if [[ -n $find_block ]] ; then
|
|
||||||
if [[ -n $name_for_new_block ]] ; then
|
|
||||||
find_file="$WINEPREFIX/$name_for_new_block.reg"
|
|
||||||
find_line=${find_block//:*/}
|
|
||||||
else
|
|
||||||
find_file=${find_block//:*/}
|
|
||||||
find_line=${find_block//$find_file:/}
|
|
||||||
find_line=${find_line//:*/}
|
|
||||||
fi
|
|
||||||
count=-1
|
|
||||||
while read -r line_reg ; do
|
|
||||||
((count++))
|
|
||||||
if [[ $line_reg =~ $name_for_find ]] ; then
|
|
||||||
if [[ $line_reg == $name_for_find$name_for_set ]] ; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
find_number_line=$(( count + find_line ))
|
|
||||||
find_check_file=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
[[ -z $line_reg ]] && break
|
|
||||||
done <<< "$(sed -n "$find_line"',$p' "$find_file")"
|
|
||||||
fi
|
|
||||||
if [[ $name_add_or_del == --add ]] ; then
|
|
||||||
if [[ -z $find_block ]] ; then
|
|
||||||
if [[ -n $name_for_new_block ]] ; then
|
|
||||||
sed -i '$a\\n'\["$name_block"\] "$WINEPREFIX/$name_for_new_block.reg"
|
|
||||||
find_file="$WINEPREFIX/$name_for_new_block.reg"
|
|
||||||
find_line=$(wc -l "$find_file" | awk -F" " '{print $1}')
|
|
||||||
find_line=$(( find_line - 1 ))
|
|
||||||
else
|
|
||||||
print_error "$name_fatal не найден в файле реестра"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ $find_check_file == 1 ]] ; then
|
|
||||||
print_info "Меняем $name_for_find_old в ветке реестра: $name_block"
|
|
||||||
sed -i "${find_number_line}s|$name_for_find.*|$name_for_find$name_for_set|" "$find_file"
|
|
||||||
else
|
|
||||||
print_info "Добавляем $name_for_find_old в ветку реестра: $name_block"
|
|
||||||
sed -i "$(( find_line + 1 ))a$name_for_find$name_for_set" "$find_file"
|
|
||||||
fi
|
|
||||||
elif [[ $name_add_or_del == --delete ]] ; then
|
|
||||||
[[ $find_check_file != 1 ]] && return 0
|
|
||||||
print_info "Удаляем $name_for_find_old из ветки реестра: $name_block"
|
|
||||||
sed -i "${find_number_line}d" "$find_file"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -835,53 +675,17 @@ get_base_pfx () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_prefix_var () {
|
init_wineprefix () {
|
||||||
if [[ -z "$WINEPREFIX" ]] ; then
|
if [[ -z "$WINEPREFIX" ]] ; then
|
||||||
print_warning "Префикс не выбран."
|
export WINEPREFIX="$WH_PREFIXES_DIR/default"
|
||||||
|
|
||||||
local prefixes=()
|
|
||||||
local count=1
|
|
||||||
print_info "Доступные префиксы WineHelper:"
|
|
||||||
for prefix in "$WH_PREFIXES_DIR"/*; do
|
|
||||||
if [[ -d "$prefix" ]]; then
|
|
||||||
prefixes+=("$prefix")
|
|
||||||
echo "$count. $(basename "$prefix")"
|
|
||||||
((count++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ ${#prefixes[@]} -eq 0 ]]; then
|
|
||||||
fatal "Не найдено ни одного префикса!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local max_choice=${#prefixes[@]}
|
|
||||||
read -p "Выберите префикс (1-$max_choice): " choice
|
|
||||||
|
|
||||||
if [[ "$choice" -ge 1 && "$choice" -le "$max_choice" ]]; then
|
|
||||||
export WINEPREFIX="${prefixes[$choice-1]}"
|
|
||||||
else
|
else
|
||||||
fatal "Неверный выбор."
|
if echo "$WINEPREFIX" | grep -v '/' ; then
|
||||||
fi
|
|
||||||
|
|
||||||
print_info "Выбран префикс: $WINEPREFIX"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
|
||||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
init_wineprefix () {
|
|
||||||
check_prefix_var
|
|
||||||
|
|
||||||
if [[ "$WINEARCH" == "win32" ]]
|
|
||||||
then check_variables BASE_PFX "defpfx_x86_v01"
|
|
||||||
else check_variables BASE_PFX "defpfx_x64_v01"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export DRIVE_C="$WINEPREFIX/drive_c"
|
export DRIVE_C="$WINEPREFIX/drive_c"
|
||||||
|
# export WINEDLLPATH+=":$DRIVE_C/widows/system32:$DRIVE_C/windows/syswow64"
|
||||||
|
|
||||||
if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then
|
if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then
|
||||||
create_new_dir "$WINEPREFIX"
|
create_new_dir "$WINEPREFIX"
|
||||||
@ -892,8 +696,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 +710,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
|
||||||
@ -922,100 +726,9 @@ init_wineprefix () {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
try_remove_file "$DRIVE_C/windows/system32/winemenubuilder.exe"
|
try_remove_file "$DRIVE_C/windows/system32/winemenubuilder.exe"
|
||||||
|
|
||||||
# хак для XRDP сессии
|
|
||||||
if [[ $DISPLAY == *:10.0 ]] ; then
|
|
||||||
print_warning "Обнаружена сессия XRDP, настраиваем реестр:"
|
|
||||||
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'UseXRandR' 'REG_SZ' "N" "user"
|
|
||||||
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'UseXVidMode' 'REG_SZ' "N" "user"
|
|
||||||
else
|
|
||||||
get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXRandR'
|
|
||||||
get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXVidMode'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# добавление ассоциаций файлов для запуска нативного приложения из wine
|
|
||||||
# пример переменной: WH_XDG_OPEN="txt doc pdf"
|
|
||||||
check_variables WH_XDG_OPEN "0"
|
|
||||||
local WRAPPER="${WH_TMP_DIR}/wh-xdg-open.sh"
|
|
||||||
local XDG_OPEN_REG="Software\Classes\xdg-open\shell\open\command"
|
|
||||||
if [[ $WH_XDG_OPEN != "0" ]] ; then
|
|
||||||
# проверяем на наличие запрещённых расширений
|
|
||||||
local forbidden_extensions="cpl dll exe lnk msi"
|
|
||||||
for ext in $WH_XDG_OPEN; do
|
|
||||||
if [[ "$forbidden_extensions" =~ $ext ]] ; then
|
|
||||||
fatal "Расширение .$ext запрещено для добавления!"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# создаем скрипт-обёртку
|
|
||||||
{
|
|
||||||
echo "#!/usr/bin/env bash"
|
|
||||||
echo "unix_path=\$(\"$WINELOADER\" winepath -u \"\$*\")"
|
|
||||||
echo "xdg-open \"\$unix_path\""
|
|
||||||
} > "$WRAPPER"
|
|
||||||
chmod +x "$WRAPPER"
|
|
||||||
|
|
||||||
# добавляем новую команду xdg-open в реестр
|
|
||||||
get_and_set_reg_file --add "$XDG_OPEN_REG" '@=' 'REG_SZ' "$WRAPPER %1" "system"
|
|
||||||
|
|
||||||
# добавляем ассоциации файлов для запуска с помощью xdg-open
|
|
||||||
for ext in $WH_XDG_OPEN ; do
|
|
||||||
get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system"
|
|
||||||
done
|
|
||||||
print_info "Используется ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
|
|
||||||
else
|
|
||||||
# удаление команды xdg-open из реестра
|
|
||||||
get_and_set_reg_file --delete "$XDG_OPEN_REG" '@='
|
|
||||||
# удаяем скрипт-обёртку
|
|
||||||
try_remove_file "$WRAPPER"
|
|
||||||
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"
|
|
||||||
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 \
|
|
||||||
WINE_CPU_TOPOLOGY USE_RENDERER DXVK_VER VKD3D_VER
|
|
||||||
do
|
|
||||||
echo "export $var=\"${!var}\"" >> "$WINEPREFIX/last.conf"
|
|
||||||
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 +745,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 +773,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 +786,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 () {
|
||||||
@ -1070,30 +808,29 @@ kill_wine () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_database () {
|
init_database () {
|
||||||
WHDB_FILE="0"
|
|
||||||
if [[ -f "$WIN_FILE_EXEC" ]] ; then
|
if [[ -f "$WIN_FILE_EXEC" ]] ; then
|
||||||
WHDB="$(basename "$WIN_FILE_EXEC" .exe)"
|
WHDB="$(basename "$WIN_FILE_EXEC" .exe)"
|
||||||
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) -gt 1 ]] ; then
|
||||||
|
print_error "Найдено более одного файла настроек: $WHDB.exe"
|
||||||
|
WHDB_FILE="$(echo "$WH_FIND_DB_FILE" | head -n1)"
|
||||||
|
else
|
||||||
WHDB_FILE="$WH_FIND_DB_FILE"
|
WHDB_FILE="$WH_FIND_DB_FILE"
|
||||||
fi
|
fi
|
||||||
IFS="$orig_IFS"
|
IFS="$orig_IFS"
|
||||||
fi
|
fi
|
||||||
fi
|
if [[ "$WHDB_FILE" ]] ; then
|
||||||
|
|
||||||
if [[ "$WHDB_FILE" != "0" ]] ; then
|
|
||||||
print_info "Используется файл настроек: $WHDB_FILE"
|
print_info "Используется файл настроек: $WHDB_FILE"
|
||||||
. "$WHDB_FILE"
|
. "$WHDB_FILE"
|
||||||
elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then
|
|
||||||
print_info "Найдены настройки из предыдущего использования префикса: $WINEPREFIX"
|
|
||||||
cat "$WINEPREFIX/last.conf"
|
|
||||||
. "$WINEPREFIX/last.conf"
|
|
||||||
else
|
else
|
||||||
print_warning "Файл настроек не найден. Пропускаем."
|
print_warning "Файл настроек не найден. Пропускаем."
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
prepair_wine () {
|
prepair_wine () {
|
||||||
@ -1118,10 +855,7 @@ prepair_wine () {
|
|||||||
|
|
||||||
var_winedlloverride_update "winemenubuilder.exe=d"
|
var_winedlloverride_update "winemenubuilder.exe=d"
|
||||||
|
|
||||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
init_database
|
||||||
then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME"
|
|
||||||
else init_database
|
|
||||||
fi
|
|
||||||
init_wine_ver
|
init_wine_ver
|
||||||
init_wineprefix
|
init_wineprefix
|
||||||
use_winetricks
|
use_winetricks
|
||||||
@ -1185,7 +919,7 @@ run_autoinstall () {
|
|||||||
export INSTALL_SCRIPT INSTALL_MODE
|
export INSTALL_SCRIPT INSTALL_MODE
|
||||||
|
|
||||||
if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then
|
if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then
|
||||||
print_info "Список программ с возможностью автоматической установки:"
|
echo "Список программ с возможностью автоматической установки:"
|
||||||
for list in $(ls "$WH_AUTOINSTALL_DIR") ; do
|
for list in $(ls "$WH_AUTOINSTALL_DIR") ; do
|
||||||
AI_INFO="$(grep "info_ru:" "$WH_AUTOINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')"
|
AI_INFO="$(grep "info_ru:" "$WH_AUTOINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')"
|
||||||
AI_PROGNAME="$(grep "PROG_NAME=" "$WH_AUTOINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')"
|
AI_PROGNAME="$(grep "PROG_NAME=" "$WH_AUTOINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')"
|
||||||
@ -1193,127 +927,12 @@ run_autoinstall () {
|
|||||||
echo "$AI_INFO"
|
echo "$AI_INFO"
|
||||||
done
|
done
|
||||||
echo
|
echo
|
||||||
print_info "Список программ с возможностью установки из существующего дистрибутива:"
|
|
||||||
for list in $(ls "$WH_MANUALINSTALL_DIR") ; do
|
|
||||||
AI_INFO="$(grep "info_ru:" "$WH_MANUALINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')"
|
|
||||||
AI_PROGNAME="$(grep "PROG_NAME=" "$WH_MANUALINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')"
|
|
||||||
echo -e "\n$list - $AI_PROGNAME"
|
|
||||||
echo "$AI_INFO"
|
|
||||||
done
|
|
||||||
elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then
|
elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then
|
||||||
source "$INSTALL_SCRIPT" "$@"
|
source "$INSTALL_SCRIPT" "$@"
|
||||||
print_info "Завершена установка $INSTALL_SCRIPT_NAME"
|
print_info "Завершена установка $INSTALL_SCRIPT_NAME"
|
||||||
else
|
else
|
||||||
fatal "Скрипт автоматической установки для $INSTALL_SCRIPT_NAME не найден!"
|
fatal "Скрипт автоматической установки для $INSTALL_SCRIPT_NAME не найден!"
|
||||||
fi
|
fi
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_prefix() {
|
|
||||||
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 () {
|
|
||||||
local answer
|
|
||||||
if [[ $1 =~ --force|-y ]] ; then
|
|
||||||
answer="y"
|
|
||||||
else
|
|
||||||
echo "======================================================"
|
|
||||||
print_warning "Вы собираетесь удалить WineHelper и все связанные с ним данные."
|
|
||||||
echo " Это удалит:"
|
|
||||||
echo " - Все настройки WineHelper"
|
|
||||||
echo " - Все приложения/программы, установленные через WineHelper"
|
|
||||||
echo " - Все ярлыки из меню и с рабочего стола созданные с помощью WineHelper"
|
|
||||||
echo "======================================================"
|
|
||||||
echo "Продолжить? (y/N)"
|
|
||||||
read -r answer
|
|
||||||
|
|
||||||
if [[ "$answer" =~ ^[YyДд]$ ]] ; then
|
|
||||||
# Второе подтверждение
|
|
||||||
echo "----------------------------------------------"
|
|
||||||
print_warning " ВЫ ТОЧНО УВЕРЕНЫ?"
|
|
||||||
echo "----------------------------------------------"
|
|
||||||
echo "Продолжить? (y/N)"
|
|
||||||
read -r answer
|
|
||||||
else
|
|
||||||
print_info "Удаление отменено."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$answer" =~ ^[YyДд]$ ]] ; then
|
|
||||||
# Удаление рабочих каталогов
|
|
||||||
try_remove_dir "$USER_WORK_PATH"
|
|
||||||
|
|
||||||
# Удаление файлов меню
|
|
||||||
try_remove_dir "$WH_MENU_DIR"
|
|
||||||
try_remove_file "$WH_MENU_CATEGORY"
|
|
||||||
try_remove_file "$WH_MENU_CONFIG"
|
|
||||||
|
|
||||||
# Удаление desktop-файлов
|
|
||||||
for desktop_file in "$(xdg-user-dir DESKTOP)"/*.desktop; do
|
|
||||||
if grep -q "Exec=env \"$RUN_SCRIPT\"" "$desktop_file"; then
|
|
||||||
try_remove_file "$desktop_file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Обновление кэша desktop-файлов
|
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
|
||||||
|
|
||||||
# Удаление символических ссылок
|
|
||||||
try_remove_file "$HOME/.winehelper"
|
|
||||||
|
|
||||||
print_info "WineHelper и все связанные данные успешно удалены."
|
|
||||||
else
|
|
||||||
print_info "Удаление отменено."
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wh_info () {
|
wh_info () {
|
||||||
@ -1326,8 +945,6 @@ wh_info () {
|
|||||||
|
|
||||||
installed список установленных программ
|
installed список установленных программ
|
||||||
run [программа.exe] запуск программы (отладка)
|
run [программа.exe] запуск программы (отладка)
|
||||||
remove-all удалить WineHelper и все связанные данные
|
|
||||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
|
||||||
|
|
||||||
Параметры:
|
Параметры:
|
||||||
--help показать эту справку и выйти
|
--help показать эту справку и выйти
|
||||||
@ -1356,13 +973,11 @@ 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-prefix) shift ; remove_prefix "$@" ;;
|
|
||||||
*)
|
*)
|
||||||
if [[ -f "$1" ]] ; then
|
if [[ -f "$1" ]] ; then
|
||||||
WIN_FILE_EXEC="$(readlink -f "$1")"
|
WIN_FILE_EXEC="$(readlink -f "$1")"
|
||||||
|