Compare commits

...

11 Commits

4 changed files with 231 additions and 48 deletions

View File

@ -1,5 +1,10 @@
История изменений:
0.4.0:
* добавлена автоматическая установка и настройка wine-cpcsp_proxy при
использовании переменной WH_USE_CPCSP_PROXY=1
* подготовка функций для создания бэкапов префикса
0.3.9:
* обновлен скрипт установки scadoffice
* добавлена автоустановка:
@ -8,7 +13,8 @@
* добавлена возможность удаления префикса
0.3.8:
* добавлена возможность ассоциации и запуска файлов из WINE в нативном Linux приложении
* добавлена возможность ассоциации и запуска файлов из WINE в нативном Linux
приложении с помощью перемененной. Пример: WH_XDG_OPEN="rtf txt doc"
* добавлен выбор префикса, если переменная WINEPREFIX не объявлена
* добавлено сохранение последней конфигурации использования префикса
* добавлено сохранение скписка создаваемых ярлыков для приложений

163
README.md Normal file
View File

@ -0,0 +1,163 @@
<div align="center">
<h1 align="center">WineHelper</h1>
<p align="center">WineHelper - предназначен для упрощения установки windows-приложений, с помощью подготовленных скриптов, в разные префиксы и используя портативные версии wine для максимальной повторяемости на различных системах, начиная с релиза p10 Alt Linux и выше.</p>
</div>
## Установка
```
su -
apt-get update && apt-get dist-upgrade
apt-get install winehelper
exit
```
## Использование WineHelper
### Список приложений для установки
Для вывода списка доступных к установке приложений:
```
winehelper install list
```
либо использовать сокращенную команду:
```
winehelper -i
```
### Запуск установки приложений
В списках есть 2 вида установщиков:
**Список программ с возможностью автоматической установки** - содержит полностью автоматизированные скрипты установок программ у которых есть дистрибутивы (установщики) в свободном доступе.
Пример:
```
winehelper install spravki-bk
```
либо использовать сокращенную команду:
```
winehelper -i spravki-bk
```
**Список программ с возможностью установки из существующего дистрибутива** - содержит скрипты установок для программ которых нет в свободном доступе.
Пример:
```sh
winehelper install is-record-station "/путь/до/установочногоайла"
```
либо использовать сокращенную команду:
```sh
winehelper -i is-record-station "/путь/до/установочногоайла"
```
### Процесс установки приложений
1. при первом запуске winehelper произойдет проверка на дополнительные зависимости и при необходимости будет запрос ввода root пароля для установки пакетов
2. далее будет предложено принять лицензионные соглашения использования сторонних компонентов, для продолжения нажмите любую клавишу на клавиатуре
3. на данном этапе, в большей части скриптов, всё устанавливается автоматически с подробным выводом информации в терминале:
- загрузка необходимой версии wine, с последующей проверкой хэш-суммы
- загрузка базового префикса, с последующей проверкой хэш-суммы
- первичные обновление и подготовка префикса
- скачивание дистрибутива (установщика) программы с официального сайта
- установка программы
- создание desktop файла (ярлыка) на рабочем столе и в меню
Если устанавливаемое приложение требует дополнительных действий от пользователя, об этом будет явно написано в терминале.
### Процесс удаления префикса с приложением
Выполняем команду:
```sh
winehelper remove-prefix
```
и видим список префиксов доступных для удаления, например:
```sh
winehelper remove-prefix spravki-bk
```
после подтверждения клавишей "y" полностью удалит префикс с ПО и desktop файлы (ярлыки)
### Процесс удаления WineHelper
Выполняем команду:
```sh
winehelper remove-all
```
после подтверждения клавишей "y" данная команда удалить WineHelper и все связанные данные (префиксы, ярлыки, wine, прогаммы установленные с помощью WineHelper)
### Процесс создания резервной копии префикса
Выполняем команду:
```sh
winehelper backup-prefix "имя префикса"
```
команда создаст резервную копию префикса на рабочем столе в виде архива backup_имя_префикса_год.месяц.цисло.whpack
### Процесс восстановления резервной копии префикса
Выполняем команду:
```sh
winehelper restore-prefix "/путь/к/архиву.whpack"
```
команда восстановит префикс из резервной копии а также desktop файлы и фалы меню
### Дополнительные команды
```sh
winehelper help
```
Вывод:
<pre>
Использование: $SCRIPT_NAME [команда]
Команды:
install list список возможных установочных скриптов
install [скрипт] запустить скрипт установки программы
install [скрипт] --clear-pfx не использовать подготовленный префикс для установки ПО
installed список установленных программ
run [программа.exe] запуск программы (отладка)
remove-all удалить WineHelper и все связанные данные
remove-prefix [имя_префикса] удалить префикс и все связанные данные
backup-prefix [имя_префикса] создать резервную копию префикса
restore-prefix [имя_префикса] восстановить префикс из резервной копии
Параметры:
--help показать эту справку и выйти
--version показать информацию о пакете и его версии
--debug [команда] включить режим логирования работы WINE
</pre>
## 🛠 Участие в разработке
Мы рады вашим Pull Request'ам! Вот как можно помочь:
1. **Сообщить о баге или предложить улучшение**
Откройте [Задачи](https://git.linux-gaming.ru/CastroFidel/winehelper/issues), опишите проблему или идею.
2. **Исправить баг или добавить функционал**
- Форкните репозиторий
- Создайте ветку (`git checkout -b feature/ваша-фича`)
- Закоммитьте изменения (`git commit -m 'Добавил ...'`)
- Запушьте в форк (`git push origin feature/ваша-фича`)
- Откройте Pull Request
3. **Помощь с документацией**
Исправления в документации тоже приветствуются!
Перед началом работы обсудите вашу идею в [Задачи](https://git.linux-gaming.ru/CastroFidel/winehelper/issues), чтобы избежать дублирования.

View File

@ -3,6 +3,7 @@
3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f wine_x_tkg_10-0_i586.tar.xz
71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12 wine_x_tkg_10-0_amd64.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
##### DXVK #####

View File

@ -12,21 +12,41 @@ print_warning () { printf "\E[33m%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_var () { for vp in $@ ; do echo "${vp}=${!vp}" ; done ;}
fatal () { print_error "$@" ; exit 1 ;}
fatal () {
print_error "$@"
[[ -n "$WINESERVER" ]] && "$WINESERVER" -w
exit 1
}
##### CHECK VARIABLES #####
check_variables () { [[ -z ${!1} ]] && export $1="$2" ;}
##### CHECK DEBUG #####
if [[ "$1" == "--debug" ]] ; then
export DEBUG="full"
export LOG_FILE="$HOME/winehelper.log"
check_variables WINEDEBUG "+loaddll,+seh"
export DXVK_LOG_LEVEL="error"
export VKD3D_DEBUG "error"
export WINE_MONO_TRACE "E:System.NotImplementedException"
export VK_LOADER_DEBUG "error"
export VKBASALT_LOG_LEVEL "error"
export DXVK_NVAPI_LOG_LEVEL "error"
shift
print_warning "Включен режим подробного логирования работы WINE."
else
check_variables WINEDEBUG "-all"
check_variables DXVK_LOG_LEVEL "none"
check_variables VKD3D_SHADER_DEBUG "none"
check_variables VKD3D_DEBUG "none"
check_variables DXVK_LOG_PATH "none"
check_variables VKBASALT_LOG_LEVEL "none"
check_variables DXVK_NVAPI_LOG_LEVEL "none"
fi
if [[ $WINEDEBUG != "-all" ]] ; then
export LOG_FILE="$HOME/winehelper.log"
date > "$LOG_FILE"
print_warning "Включен режим логирования работы WINE."
print_warning "Лог будет сохранен по пути: $LOG_FILE"
sleep 3
else
check_variables DEBUG "0"
fi
##### WINETRICKS VERSION #####
@ -299,9 +319,9 @@ var_winedlloverride_update () {
fi
}
var_vkd3d_config_update () {
var_dxvk_config_update () {
if [[ -n "${DXVK_CONFIG}" ]]
then export DXVK_CONFIG="${1}; ${DXVK_CONFIG}"
then export DXVK_CONFIG="${1};${DXVK_CONFIG}"
else export DXVK_CONFIG="${1}"
fi
}
@ -385,7 +405,9 @@ create_desktop () {
&& grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list"
then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list"
fi
echo "$name_desktop=${exe_file//$WINEPREFIX/}" >> "$WINEPREFIX/desktop.list"
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"
@ -673,27 +695,6 @@ init_wine_ver () {
export WINESERVER="wineserver"
fi
check_variables DXVK_LOG_LEVEL "none"
check_variables VKD3D_SHADER_DEBUG "none"
check_variables VKD3D_DEBUG "none"
check_variables DXVK_LOG_PATH "none"
check_variables VKBASALT_LOG_LEVEL "none"
check_variables DXVK_NVAPI_LOG_LEVEL "none"
if [[ $DEBUG == "0" ]] ; then
check_variables WINEDEBUG "-all"
elif [[ $DEBUG == "full" ]] ; then
check_variables WINEDEBUG "+loaddll,+seh"
export DXVK_LOG_LEVEL="error"
export VKD3D_DEBUG "error"
export WINE_MONO_TRACE "E:System.NotImplementedException"
export VK_LOADER_DEBUG "error"
export VKBASALT_LOG_LEVEL "error"
export DXVK_NVAPI_LOG_LEVEL "error"
else
check_variables WINEDEBUG "err+all"
fi
print_info "Используется версия wine: $WH_WINE_USE"
}
@ -977,13 +978,27 @@ init_wineprefix () {
else cpcsp_proxy_cmd=("${WINELOADER}64" "cpcsp_proxy_setup.exe")
fi
print_info "Запускаем настройку cpcsp_proxy:"
echo "${cpcsp_proxy_cmd[*]}"
if "${cpcsp_proxy_cmd[@]}"
then print_info "Настройка cpcsp_proxy успешно завершена."
else fatal "Ошибка во время настройки cpcsp_proxy."
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
@ -1021,10 +1036,6 @@ use_winetricks () {
USE_WT_FROM_DB=0
[[ ! -f "$WINEPREFIX/winetricks.log" ]] && touch "$WINEPREFIX/winetricks.log"
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 [[ -z "$WH_DLL_NEED_INSTALL" ]]
then WH_DLL_NEED_INSTALL="$need_install_dll_to_pfx"
@ -1123,13 +1134,15 @@ wine_run () {
WIN_FILE_PATH="$(dirname "$WIN_FILE_EXEC")"
[[ -d "$WIN_FILE_PATH" ]] && cd "$WIN_FILE_PATH"
if [[ $DEBUG == "0" ]] ; then
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS
else
print_var WH_WINE_USE WINEARCH WINEPREFIX WINEDLLOVERRIDES WH_WINDOWS_VER | tee "$LOG_FILE"
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$LOG_FILE"
fi
if [[ -n $LOG_FILE ]] && [[ -f "$LOG_FILE" ]] ; then
echo "##### Основные переменные #####" | tee -a "$LOG_FILE"
env | grep -e "WH_" -e "WINE" -e "DXVK" -e "VKD3D" | tee -a "$LOG_FILE"
echo "##### Лог WINE #####" | tee -a "$LOG_FILE"
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$LOG_FILE"
else
$MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS
fi
wait_wineserver
}
@ -1345,7 +1358,7 @@ case "${1,,}" in
install|-i) shift ; run_autoinstall "$@" ;;
installed) shift ; check_installed_programs "$1" ;;
run|-r) shift ; run_installed_programs "$1" ;;
remove-all) shift ; remove_winehelper "$@ ";;
remove-all) shift ; remove_winehelper "$@" ;;
remove-prefix) shift ; remove_prefix "$@" ;;
*)
if [[ -f "$1" ]] ; then