<div align="center">
  <img src="image/gui/winehelper.svg" width="64">
  <h1 align="center">WineHelper</h1>
  <p align="center">Инструмент для упрощения установки Windows-приложений на Linux. Он использует подготовленные скрипты, портативные версии Wine и изолированные префиксы, обеспечивая максимальную идентичность на различных операционных системах основанных на Alt Linux, начиная с релиза p10 и выше.</p>
</div>

<p align="center">
  <img src="image/handbook/auto_install.png" alt="WineHelper GUI" width="80%">
</p>

## Основные возможности

*   **Простая установка**: Устанавливайте Windows-приложения с помощью готовых скриптов, как в автоматическом, так и в ручном режиме.
*   **Изолированные окружения**: Каждое приложение устанавливается в свой собственный, изолированный префикс, что предотвращает конфликты.
*   **Управление версиями Wine**: Легко переключайтесь между различными версиями Wine и Proton для достижения наилучшей совместимости.
*   **Графический и консольный интерфейсы**: Используйте удобный GUI для повседневных задач или мощный CLI для автоматизации.
*   **Резервное копирование**: Создавайте и восстанавливайте полные резервные копии ваших префиксов.
*   **Встроенные утилиты**: Быстрый доступ к `winecfg`, `regedit`, `Winetricks` и другим инструментам для каждого префикса.

---


<!-- Описание установки WineHelper-->
<details>
 <summary style="font-size: 35px; font-weight: bold;">Установка</summary>

```
 $ su -
 # apt-get update && apt-get dist-upgrade
 # apt-get install winehelper
 # exit
 ```
</details>


<!-- Описание использования CLI -->
<details>
  <summary style="font-size: 35px; font-weight: bold;">Использование WineHelper (CLI)</summary>

### Список приложений для установки

Вывод списка приложений, доступных к установке:
```
 $ winehelper install list
 ```
или сокращенная команда:
```
 $ winehelper -i
 ```

### Запуск установки приложений

Скрипты установки разделены на два типа:

1. **Список программ с возможностью автоматической установки** — содержит полностью автоматизированные скрипты установок программ у которыx есть дистрибутивы (установщики) в свободном доступе.
Процесс полностью автоматизирован.
Пример:
```
 $ winehelper install spravki-bk
 ```
или сокращенная команда:
```
 $ winehelper -i spravki-bk
```
2. **Список программ с возможностью установки из существующего дистрибутива** — содержит скрипты установок для программ, которых нет в свободном доступе.
Пример:
```
 $ winehelper install is-record-station "/путь/до/установочного_файла"
 ```
или сокращенная команда:
```
 $ winehelper -i is-record-station "/путь/до/установочного_файла"
```

### Процесс установки приложений

При первом запуске **WineHelper** проверяются и при необходимости устанавливаются дополнительные зависимости (запрашиваются права root).

Процесс установки приложений:
1. Отображаются лицензионные соглашения на сторонние компоненты. Для продолжения введите **y** и нажмите **Enter**.
2. Далее процесс проходит автоматически с подробным выводом в терминал:
- Загрузка и проверка хэш-суммы нужной версии Wine.
- Загрузка и проверка хэш-суммы базового префикса.
- Инициализация и подготовка префикса.
- Скачивание дистрибутива (установщика) программы с официального сайта (если применимо).
- Установка приложения.
- Создание .desktop-файла (ярлыка) на рабочем столе и в меню приложений.

Если устанавливаемое приложение требует дополнительных действий от пользователя (ввод лицензии, настройка), это будет явно указано в терминале.

### Удаление префикса с приложением

Для удаления префикса выполните команду:
```
 $ winehelper remove-prefix [имя_префикса]
 ```
Если имя префикса не указано, будет выведен список существующих префиксов:
```
 0 - Отмена
 1 - Префикс1
 2 - Префикс2
 Выберите префикс (0-2):
```
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**.Далее потребуется подтвердить удаление префикса вводом **y**.

В результате будут удалены:
- сам префикс;
- установленное ПО;
- desktop-файлы (ярлыки для установленного ПО в префиксе).

### 

Команда создания резервной копии префикса:
```
 $ winehelper backup-prefix [имя_префикса]
 ```
Если имя префикса не указано, будет выведен список существующих префиксов:
```
 0 - Отмена
 1 - Префикс1
 2 - Префикс2
 Выберите префикс (0-2):
 ```
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**.  
После выбора префикса автоматически:
- Создаётся копия префикса.
- Внутри префикса сохраняется используемая версия WINE.
- Копируются иконки для ярлыков (.desktop-файлов).
- Сохраняется информация о ярлыках (.desktop-файлах) для будущей распаковки/восстановления префикса.
- Резервная копия сохраняется на рабочем столе с именем: {{path|backup_имя_префикса_дата_создания.whpack}}

### Восстановление префикса из резервной копии

Команда восстановления префикса из резервной копии:
```
 $ winehelper restore-prefix "путь/до/файла.whpack"
```
Восстановление префикса не требует подключение к интернету и происходит в автоматическом режиме:
- Распаковка префикса.
- Восстановление версии WINE.
- Восстановление ярлыков (.desktop-файdлов).

После завершения восстановления приложение будет доступно для запуска через меню или рабочий стол.

### Использование команд WINE в WineHelper

WineHelper предоставляет доступ к основным инструментам WINE:
```
 winehelper winefile                  # запуск файлового менеджера wine
 winehelper winecfg                   # запуск wine конфигуратора для префикса
 winehelper winereg                   # запуск редактора реестра для префикса
 winehelper wineconsole               # запуск терминала wine (cmd.exe)
 winehelper winetricks                # запуск графического интерфейса winetricks
 winehelper winetricks [компонент]    # автоматическая установка дополнительного компонента в префикс
```
После выполнения любой из вышеперечисленных команд отображается список существующих префиксов:
 ```
0 - Отмена
 1 - Префикс1
 2 - Префикс2
 Выберите префикс (0-2):
 ```
Команда выполняется в выбранном вами префиксе.

### Запуск стороннего *.exe файла в WineHelper

Есть два варианта:
1. В командной строке выполнить команду:
 ```
 $ winehelper "путь/до/файла.exe"
 0 - Отмена
 1 - Префикс1
 2 - Префикс2
 Выберите префикс (0-2):
 ```
Файл будет запущен в выбранном префиксе.

2. С помощью файлового менеджера WINE:'''
 ```
 $ winehelper winefile
 0 - Отмена
 1 - Префикс1
 2 - Префикс2
 Выберите префикс (0-2):
 ```
В файловом менеджере найти и запустить нужный exe-файл.

### Дополнительные команды

 ```
 $ winehelper help
 ```
Вывод:
<pre>
Использование: winehelper [команда]

Команды:
    install list                    список возможных установочных скриптов
    install [скрипт]                запустить скрипт установки программы
    install [скрипт] --clear-pfx    не использовать готовый префикс для установки ПО

    install-dxvk [версия|none|list] установить, удалить или показать версии DXVK
    install-vkd3d [версия|none|list] установить, удалить или показать версии VKD3D
    change-wine [версия]            изменить версию Wine/Proton для текущего префикса

    installed                       список установленных программ
    run [программа]                 запуск программы (отладка)
    remove-all                      удалить WineHelper и все связанные данные
    create-prefix                   создать префикс
    remove-prefix [имя_префикса]    удалить префикс и все связанные данные
    backup-prefix [имя_префикса]    создать резервную копию префикса
    restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии

Параметры:
    --help                          показать эту справку и выйти
    --version                       показать информацию о пакете и его версии
    --changelog                     показать историю изменений
    --debug [команда]               включить режим логирования работы WINE
</pre>

</details>


<!-- Описание использования GUI -->
<details>
  <summary style="font-size: 35px; font-weight: bold;">Использование WineHelper (GUI)</summary>

### Вкладки «Автоматическая установка» и «Ручная установка»

При использовании графического интерфейса списки приложений расположены во вкладках **Автоматическая установка** и **Ручная установка**.

<div align="center">
  <img src="image/handbook/auto_install.png">
  <p><em>Вкладка "Автоматическая установка"</em></p>
</div>

<div align="center">
  <img src="image/handbook/manual_install.png">
  <p><em>Вкладка "Ручная установка"</em></p>
</div>

Для поиска нужной программы введите название в поле поиска.

<div align="center">
  <img src="image/handbook/search.png">
  <p><em>Поле поиска</em></p>
</div>

При выборе программы из списка слева, в правой части окна отображается подробная информация о ней: описание, иконка и ссылка на официальный сайт.

<div align="center">
  <img src="image/handbook/info.png">
  <p><em>Информация о выбранной программе</em></p>
</div>

Для установки программы нажмите кнопку **Установить**.

Для **ручной установки** дополнительно потребуется указать путь к установочному файлу (`.exe` или `.msi`), который вы скачали самостоятельно.

<div align="center">
  <img src="image/handbook/manual_install_1.png">
  <p><em>Вкладка "Ручная установка" с указанием пути к дистрибутиву</em></p>
</div>

После нажатия кнопки **Установить** появится окно с лицензионным соглашением. После его принятия начнется процесс установки, который будет подробно логироваться в отдельном окне.

<div align="center">
  <img src="image/handbook/license_agreement.png">
  <p><em>Окно с лицензионным соглашением</em></p>
</div>

<div align="center">
  <img src="image/handbook/log.png">
  <p><em>Окно установки с логом</em></м</em></p>
</div>

После установки приложения и нажатия кнопки **Закрыть** в окне установки приложения, ярлык приложения появится в списке установленных приложений во вкладке **Установленные** а также в меню приложений и на рабочем столе если это разрешено в рабочем окружении.

### Вкладка «Установленные»

На этой вкладке отображаются все приложения, которые были установлены с помощью WineHelper.

<div align="center">
  <img src="image/handbook/installed.png">
  <p><em>Вкладка "Установленные"</em></p>
</div>

При выборе приложения в правой панели становятся доступны следующие действия:
*   **Запустить/Остановить**: Запускает или останавливает/закрывает выбранное приложение.
*   **Создать лог запуска программы**: Запускает приложение в режиме отладки. После закрытия приложения в вашем домашнем каталоге будет создан файл `winehelper.log`.
*   **Создать резервную копию префикса**: Создает полный бэкап префикса приложения (включая версию Wine) в формате `.whpack` на вашем рабочем столе если это разрешено в рабочем окружении.
*   **Удалить префикс**: Полностью удаляет приложение вместе с его префиксом и всеми связанными ярлыками.

Также на этой вкладке доступна кнопка **«Восстановить префикс из резервной копии»**, которая позволяет восстановить любое приложение из ранее созданного `.whpack` файла.

<div align="center">
  <img src="image/handbook/election_installed.png">
  <p><em>Выбранное приложение во вкладке "Установленные"</em></p>
</div>

Расположения лога запуска программы а также резервной копии префикса можно просмотреть с помощью кнопки **«Открыть папку с логом/резервной копией префикса»** которая появляется автоматически после создания лога или резервной копии.

<div align="center">
  <img src="image/handbook/folder_log_backup.png">
  <p><em>Кнопка "Открыть папку с логом/резервной копией префикса"</em></p>
</div>

### Вкладка «Менеджер префиксов»

Эта вкладка предоставляет мощные инструменты для управления префиксами Wine.

<div align="center">
  <img src="image/handbook/prefix_manager.png">
  <p><em>Вкладка "Менеджер префиксов"</em></p>
</div>

#### Создание нового префикса

Нажав кнопку **«Создать новый префикс»**, вы откроете диалог, где можно задать:
*   **Имя префикса**.
*   **Разрядность** (32-bit или 64-bit).
*   **Наполнение** (чистый префикс или с рекомендуемыми библиотеками).
*   **Версию Wine/Proton** из доступного списка.

<div align="center">
  <img src="image/handbook/create_prefix.png">
  <p><em>Диалог создания нового префикса</em></p>
</div>

#### Управление существующим префиксом

Выбрав префикс из выпадающего списка, вы получаете доступ к панели управления, которая позволяет:

*   **Запускать стандартные утилиты Wine**:
    *   `Редактор настроек (winecfg)`
    *   `Редактор реестра (regedit)`
    *   `Удаление программ (uninstaller)`
    *   `Командная строка (cmd)`
    *   `Файловый менеджер (winefile)`
*   **Управлять компонентами**:
    *   **Менеджер компонентов (Winetricks)**: Удобный интерфейс для установки и переустановки библиотек, шрифтов и настроек.
    *   **Управление Wine/Proton**: Смена версии Wine или Proton для выбранного префикса.
    *   **Управление DXVK/VKD3D**: Установка или удаление конкретных версий DXVK и VKD3D.
    *   **Ассоциации файлов**: Настройка открытия определенных типов файлов (например, `.pdf`, `.docx`) нативными приложениями Linux.
*   **Включать/выключать ESync и FSync**.
*   **Устанавливать приложения**: Установить любой `.exe` или `.msi` файл напрямую в выбранный префикс.
*   **Создавать ярлыки**: Создать ярлык для любого исполняемого файла внутри префикса.
*   **Удалять префикс** или **создавать из него шаблон**.

Справа отображается подробная информация о конфигурации выбранного префикса.

### Вкладка «Справка»

Содержит полезную информацию о проекте:
*   **Руководство**: Ссылка на официальную документацию.
*   **Авторы**: Список разработчиков и участников проекта.
*   **Лицензия**: Текст лицензии WineHelper и информация о сторонних компонентах.
*   **История изменений**: Changelog пакета.

<div align="center">
  <img src="image/handbook/help.png">
  <p><em>Вкладка "Справка"</em></p>
</div>

</details>


### Примечание

> [!WARNING]
> Проект находится на стадии WIP (work in progress)
