Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1821b40ff | ||
|
|
608faea597 | ||
|
|
827395a0ed | ||
|
|
3fdfe0fffc | ||
|
|
f9be296cac | ||
|
|
b2e79a3571 | ||
|
|
2d808ae555 | ||
|
|
732c688e3a | ||
|
|
7611dc16c6 | ||
|
|
010f757589 | ||
|
|
55d591ac4f | ||
|
|
95ad8bdedc | ||
|
|
7fe5208333 | ||
|
|
c2e24ff327 | ||
|
|
1b63f2dd0c | ||
|
|
7cf76aaf97 | ||
|
|
b126910229 | ||
|
|
96e29eb528 | ||
|
|
3ec7b756de | ||
|
|
f640aaf6af | ||
|
|
93b9e2f638 | ||
|
|
2030cea983 | ||
|
|
793d960b65 | ||
|
|
ef74003283 | ||
|
|
81a43ca9bd | ||
|
|
f10921840e | ||
|
|
425268ade2 | ||
|
|
743ab69455 | ||
|
|
502c5e4b1b | ||
|
|
44881267cf | ||
|
|
0433ff6cee | ||
|
|
8c984f1b15 | ||
|
|
319c4453fd | ||
|
|
9ec692833e | ||
|
|
1a9297e3e5 | ||
|
|
625ee0a223 | ||
|
|
991a03b829 | ||
|
|
8eba7d21d0 | ||
|
|
eed297a226 | ||
|
|
9017aaac25 | ||
|
|
18f35ed08b | ||
|
|
f5b62e9ec2 | ||
|
|
ae55e69700 | ||
|
|
723cfdcc4c | ||
|
|
fb2f2cf020 | ||
|
|
a7d2ea994e | ||
|
|
572ce2a08a | ||
|
|
d48e50a0b4 | ||
|
|
7321bde951 | ||
|
|
f5e10a8b0d | ||
|
|
61e659ea2e | ||
|
|
728266cdb3 | ||
|
|
055dc04bb1 | ||
|
|
3b5432ecdd | ||
|
|
415ed948ad | ||
|
|
b6e99d01af | ||
|
|
6b53afa238 | ||
|
|
b27d5f31ae | ||
|
|
e62cd1463a | ||
|
|
3bab2d12c7 | ||
|
|
a14ad4ff70 | ||
|
|
39fd02d358 | ||
|
|
d7d0ef4516 | ||
|
|
4b540302dc | ||
|
|
ff7c36208d | ||
|
|
4f3355e633 | ||
|
|
bb637f48f6 | ||
|
|
e76f49a3bd | ||
|
|
0ed10c72f9 | ||
|
|
34849c9490 | ||
|
|
ebabc7ebf7 | ||
|
|
726f2f4b43 | ||
|
|
8a94f519a3 | ||
|
|
468ea73aa6 | ||
|
|
a860cacf2c | ||
|
|
416c4e5336 | ||
|
|
48f694322a | ||
|
|
b58d768ca6 | ||
|
|
28062ff5bb | ||
|
|
4bd3028c4a | ||
|
|
8edceb667c | ||
|
|
45b495eff0 | ||
|
|
0469197d77 | ||
|
|
4f067d6850 | ||
|
|
d0c6bdfdb6 | ||
|
|
41bde9d985 | ||
|
|
ee9bb767a7 | ||
|
|
1e0f8255ea | ||
|
|
af8471ea40 | ||
|
|
4bfeae6e42 | ||
|
|
ccd3176d2a | ||
|
|
0d23121a14 | ||
|
|
4fbb250a34 | ||
|
|
6091bf2cf9 | ||
|
|
dbe5226d29 | ||
|
|
08cc66c533 | ||
|
|
c457dc0d31 | ||
|
|
b3e4ae719d | ||
|
|
dc75805a31 | ||
|
|
3aebe55162 | ||
|
|
9a7a2d5f50 | ||
|
|
b4ccebc65d | ||
|
|
36b009ecd4 | ||
|
|
372b4c6a6a | ||
|
|
15d5db87ad | ||
|
|
a8a35d5bd8 | ||
|
|
87ad9e12b6 | ||
|
|
45987c9941 | ||
|
|
a2f25738cf | ||
|
|
a1c823017b | ||
|
|
5e1640a9c6 | ||
|
|
abb6f84c60 | ||
|
|
985be9b36c | ||
|
|
33ffa28d60 | ||
|
|
e1bbdebfdd | ||
|
|
a1ae2c125d | ||
|
|
4b8f94a9cc | ||
|
|
db7201f279 | ||
|
|
bfe9a3dc91 | ||
|
|
af2db32352 | ||
|
|
c04b2df049 | ||
|
|
e8e068ba3b | ||
|
|
32ac86ed51 | ||
|
|
e33d4037b1 | ||
|
|
c5cfe30877 | ||
|
|
b8bd9cd08d | ||
|
|
d942cb64c9 | ||
|
|
f934d1e705 | ||
|
|
00c16261a4 | ||
|
|
9629717ada | ||
|
|
6fa71ed871 | ||
|
|
ab6629dd9a | ||
|
|
e90c365010 | ||
|
|
4e3ab5fba0 | ||
|
|
3dbfea89e3 | ||
|
|
daa13f2e4c | ||
|
|
2aca05928a | ||
|
|
8b2af7015b | ||
|
|
4315cd0e3f | ||
|
|
fa10a3cf0e | ||
|
|
9f932c4403 | ||
|
|
b725be78d1 | ||
|
|
7cbd3cffc7 | ||
|
|
190698a1b4 | ||
|
|
c96033311c | ||
|
|
0a225d4c3d | ||
|
|
18b92b66b1 | ||
|
|
230315bc57 | ||
|
|
3d981158b0 | ||
|
|
4ad1e38141 | ||
|
|
ae24b2386e | ||
|
|
8b5b199ff1 | ||
|
|
af291e9c7a | ||
|
|
c8cb60e42c | ||
|
|
4d508afb44 | ||
|
|
f36869bea5 | ||
|
|
0e311b5d07 | ||
|
|
cfbb6030b5 | ||
|
|
8661d0258d | ||
|
|
9bb7dc7db0 | ||
|
|
1f08c75cb2 | ||
|
|
17802d2bc5 | ||
|
|
86694b3721 | ||
|
|
ad37601b23 | ||
|
|
a6d894ce99 | ||
|
|
8877012ec4 | ||
|
|
5774e033d4 | ||
|
|
de8294b34d | ||
|
|
273e86958d | ||
|
|
d0f3d0f8d6 | ||
|
|
fc01de74b2 | ||
|
|
eb5d6bb613 | ||
|
|
e65cd2386c | ||
|
|
6b094f4905 | ||
|
|
7f44432388 | ||
|
|
fbfccd0417 | ||
|
|
1942d49f4d | ||
|
|
ab2933f8b0 | ||
|
|
4b985417c4 | ||
|
|
d52bec4798 | ||
|
|
f2c7ecf926 | ||
|
|
a929411daf | ||
|
|
8114b3cb54 | ||
|
|
04e974a0b7 | ||
|
|
efe8ef7267 | ||
|
|
a4c6ef89bf | ||
|
|
2bfb574ba1 |
No files matched your search
@@ -0,0 +1,2 @@
|
||||
seh
|
||||
testser
|
||||
@@ -0,0 +1,59 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# Virtual environments
|
||||
venv/
|
||||
ENV/
|
||||
env/
|
||||
.venv/
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.project
|
||||
.pydevproject
|
||||
.settings/
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
.ruff_cache/
|
||||
.mypy_cache/
|
||||
.pytest_cache/
|
||||
.tox/
|
||||
|
||||
# Test and coverage
|
||||
.coverage
|
||||
htmlcov/
|
||||
|
||||
# RPM / package build artifacts
|
||||
*.rpm
|
||||
*.src.rpm
|
||||
RPMS/
|
||||
SRPMS/
|
||||
BUILD/
|
||||
BUILDROOT/
|
||||
*.spec~
|
||||
@@ -0,0 +1,111 @@
|
||||
default_language_version:
|
||||
python: python3
|
||||
|
||||
exclude: |
|
||||
(?x)(
|
||||
^\.git/|
|
||||
^__pycache__/|
|
||||
.*\.pyc$
|
||||
)
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-json
|
||||
- id: check-toml
|
||||
- id: check-added-large-files
|
||||
args: ["--maxkb=1024"]
|
||||
- id: check-merge-conflict
|
||||
- id: check-symlinks
|
||||
- id: check-executables-have-shebangs
|
||||
- id: check-shebang-scripts-are-executable
|
||||
- id: mixed-line-ending
|
||||
args: ["--fix=lf"]
|
||||
- id: check-case-conflict
|
||||
- id: check-ast
|
||||
- id: debug-statements
|
||||
- id: detect-private-key
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: bash-syntax-check
|
||||
name: bash syntax check
|
||||
entry: bash -n
|
||||
language: system
|
||||
files: |
|
||||
(?x)(
|
||||
^winehelper$|
|
||||
^dependencies\.sh$|
|
||||
^autoinstall/|
|
||||
^manualinstall/|
|
||||
^testinstall/|
|
||||
^hiden_scripts/|
|
||||
^database/.*\.whdb$
|
||||
)
|
||||
types: [shell]
|
||||
|
||||
- id: py-compile
|
||||
name: python compile
|
||||
entry: python3 -m py_compile
|
||||
language: system
|
||||
types: [python]
|
||||
|
||||
- id: shellcheck
|
||||
name: shellcheck
|
||||
entry: shellcheck
|
||||
args: ["--severity=error", "--exclude=SC2068,SC2145,SC2199"]
|
||||
language: system
|
||||
files: |
|
||||
(?x)(
|
||||
^winehelper$|
|
||||
^dependencies\.sh$|
|
||||
^autoinstall/|
|
||||
^manualinstall/|
|
||||
^testinstall/|
|
||||
^hiden_scripts/|
|
||||
^database/.*\.whdb$
|
||||
)
|
||||
types: [shell]
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.10.0-1
|
||||
hooks:
|
||||
- id: shfmt
|
||||
args: ["--write", "--indent", "4", "--case-indent", "--space-redirects"]
|
||||
files: |
|
||||
(?x)(
|
||||
^winehelper$|
|
||||
^dependencies\.sh$|
|
||||
^autoinstall/|
|
||||
^manualinstall/|
|
||||
^testinstall/|
|
||||
^hiden_scripts/|
|
||||
^database/.*\.whdb$
|
||||
)
|
||||
types: [shell]
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.4
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: ["--fix", "--show-fixes"]
|
||||
- id: ruff-format
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.3.0
|
||||
hooks:
|
||||
- id: codespell
|
||||
args: ["--ignore-words", ".codespell-ignorewords"]
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: sha256sum-list-check
|
||||
name: sha256sum.list format check
|
||||
entry: scripts/check_sha256sum_list.sh
|
||||
language: script
|
||||
files: ^sha256sum\.list$
|
||||
pass_filenames: false
|
||||
@@ -0,0 +1,340 @@
|
||||
# WineHelper - Руководство для AI агентов
|
||||
|
||||
## Обзор проекта
|
||||
|
||||
WineHelper — инструмент для упрощения установки Windows-приложений на Linux. Использует подготовленные скрипты, портативные версии Wine и изолированные префиксы, обеспечивая максимальную идентичность на различных операционных системах, основанных на ALT Linux (начиная с релиза p10 и выше).
|
||||
|
||||
**Лицензия:** GNU Lesser General Public License v2.1 (LGPL-2.1+)
|
||||
|
||||
**Автор:** Mikhail Tergoev (2025)
|
||||
|
||||
**Язык документации и комментариев:** Русский
|
||||
|
||||
**Статус проекта:** WIP (work in progress)
|
||||
|
||||
## Технологический стек
|
||||
|
||||
### Основные технологии
|
||||
- **Bash** — основной язык для CLI-интерфейса (~3075 строк в главном скрипте)
|
||||
- **Python 3** — графический интерфейс с использованием PyQt5 (~3413 строк в `winehelper_gui.py` и модули `winehelperqt/`)
|
||||
- **Wine** — запуск Windows-приложений (поддерживаются различные версии: vanilla, staging, Proton, tkg, crossover)
|
||||
- **DXVK/VKD3D** — трансляция DirectX → Vulkan
|
||||
|
||||
### Зависимости Python
|
||||
- PyQt5 (основной GUI фреймворк)
|
||||
- Стандартная библиотека Python (os, subprocess, sys, re, shlex, shutil, html)
|
||||
|
||||
### Системные зависимости
|
||||
- i586-версии библиотек (для 32-битных приложений, если не используется wow64)
|
||||
- wget/curl для загрузки
|
||||
- 7z, tar для распаковки
|
||||
- wrestool, icotool для извлечения иконок из .exe
|
||||
- winetricks для управления компонентами Wine
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
winehelper/
|
||||
├── winehelper # Главный bash-скрипт (CLI)
|
||||
├── winehelper_gui.py # GUI на PyQt5 (точка входа)
|
||||
├── winehelperqt/ # Python-модуль GUI
|
||||
│ ├── __init__.py # Экспорты основных классов
|
||||
│ ├── logger.py # Единый логгер (get_logger/setup_logger), вывод в консоль
|
||||
│ ├── dialogs/ # Диалоговые окна
|
||||
│ │ ├── base_version_dialog.py
|
||||
│ │ ├── component_version.py
|
||||
│ │ ├── create_prefix.py # Создание префикса
|
||||
│ │ ├── file_associations.py
|
||||
│ │ ├── noexec_warning.py # Предупреждение о noexec
|
||||
│ │ ├── settings.py # Настройки префикса
|
||||
│ │ ├── windows_version.py # Выбор версии Windows
|
||||
│ │ ├── wine_version.py # Выбор версии Wine
|
||||
│ │ └── winetricks_manager.py
|
||||
│ ├── parsers/ # Парсеры
|
||||
│ │ ├── script_parser.py # Парсинг скриптов установки
|
||||
│ │ ├── sha256_parser.py # Парсинг sha256sum.list
|
||||
│ │ └── winetricks_parser.py
|
||||
│ ├── services/ # Бизнес-логика
|
||||
│ │ ├── app_launcher.py # Запуск приложений
|
||||
│ │ ├── desktop_file_manager.py
|
||||
│ │ ├── prefix_manager.py # Управление префиксами
|
||||
│ │ ├── script_manager.py
|
||||
│ │ ├── settings_manager.py
|
||||
│ │ └── winetricks_service.py
|
||||
│ ├── utils/ # Утилиты
|
||||
│ │ ├── cache_service.py
|
||||
│ │ ├── desktop_entry.py
|
||||
│ │ ├── dialog_utils.py
|
||||
│ │ ├── environment.py
|
||||
│ │ ├── export_utils.py
|
||||
│ │ ├── grid_utils.py
|
||||
│ │ ├── log_handler.py # Обработка логов
|
||||
│ │ ├── prefix_info.py # Построение HTML с информацией о префиксе
|
||||
│ │ ├── process_utils.py
|
||||
│ │ └── version_utils.py
|
||||
│ └── widgets/ # Кастомные виджеты
|
||||
│ ├── icon_manager.py
|
||||
│ └── __init__.py
|
||||
├── autoinstall/ # Скрипты автоматической установки (43 приложения)
|
||||
├── manualinstall/ # Скрипты ручной установки (9 приложений)
|
||||
├── testinstall/ # Тестовые скрипты установки
|
||||
├── database/ # Базы данных префиксов (.whdb файлы)
|
||||
├── image/ # Иконки приложений и GUI ресурсы
|
||||
│ ├── gui/ # Иконки приложения (SVG)
|
||||
│ └── handbook/ # Скриншоты для документации
|
||||
├── hiden_scripts/ # Скрытые/вспомогательные скрипты
|
||||
├── scripts/ # Вспомогательные скрипты
|
||||
│ └── check_sha256sum_list.sh # Проверка формата sha256sum.list
|
||||
├── auto_completion/ # Автодополнение для bash
|
||||
├── dependencies.sh # Установка системных зависимостей
|
||||
├── sha256sum.list # SHA256 хеши загружаемых файлов
|
||||
├── .pre-commit-config.yaml # Настройки pre-commit
|
||||
├── pyproject.toml # Настройки ruff
|
||||
├── .codespell-ignorewords # Исключения для codespell
|
||||
└── winehelper.desktop # Desktop-файл для запуска GUI
|
||||
```
|
||||
|
||||
## Архитектура кода
|
||||
|
||||
### CLI (winehelper)
|
||||
|
||||
Главный скрипт `winehelper` — монолитный bash-скрипт с функциональными блоками:
|
||||
|
||||
1. **Переменные и окружение** — определение путей, версий, флагов
|
||||
2. **Функции сообщений** — цветной вывод в терминал
|
||||
3. **Утилиты** — работа с файлами, архивами, скачивание
|
||||
4. **Управление префиксами** — создание, удаление, бэкап/восстановление
|
||||
5. **Wine management** — установка версий Wine, DXVK, VKD3D
|
||||
6. **Desktop integration** — создание .desktop файлов, меню
|
||||
7. **Основной цикл** — обработка аргументов командной строки
|
||||
|
||||
### GUI (winehelperqt)
|
||||
|
||||
Модульная архитектура PyQt5:
|
||||
|
||||
- **WineHelperGUI** — главное окно приложения (`winehelper_gui.py`)
|
||||
- **ScriptManager** — загрузка и обработка скриптов установки
|
||||
- **ScriptParser** — парсинг информации из скриптов установки
|
||||
- **PrefixManager** — CRUD операции с префиксами
|
||||
- **DesktopFileManager** — работа с .desktop файлами
|
||||
- **AppLauncher** — запуск и мониторинг установленных приложений
|
||||
- **SettingsManager** — чтение/запись настроек префиксов
|
||||
- **WinetricksService** — работа с компонентами Winetricks
|
||||
- **Диалоги** — модальные окна для настроек и выбора (Wine, Windows, компоненты, ассоциации файлов, предупреждение noexec)
|
||||
- **Утилиты** — логирование, работа с окружением, экспорт, сеточные макеты, управление иконками
|
||||
|
||||
### Скрипты установки
|
||||
|
||||
Каждый скрипт установки — это bash-скрипт с переменными:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Описание программы
|
||||
export PROG_URL="https://example.com"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64" # Версия Wine
|
||||
export WINEPREFIX="prefix_name" # Имя префикса
|
||||
export PROG_NAME="Название программы"
|
||||
export BASE_PFX="base_prefix_v01" # Базовый шаблон (опционально)
|
||||
export WINEARCH="win64" # Архитектура (win32/win64)
|
||||
export INSTALL_DLL="corefonts msxml3..." # DLL через winetricks
|
||||
|
||||
# Логика установки
|
||||
prepair_wine
|
||||
try_download "URL" "${FILE_PATH}"
|
||||
unpack "${FILE_PATH}" "${DEST_DIR}"
|
||||
wine_run_install "${SETUP_EXE}" /S
|
||||
create_desktop "Имя ярлыка" "${EXE_PATH}" "icon_name"
|
||||
```
|
||||
|
||||
## Режимы работы
|
||||
|
||||
### Системный режим
|
||||
Когда скрипт установлен в `/usr/bin/winehelper`:
|
||||
- Данные в `/usr/share/winehelper/`
|
||||
- Рабочая директория пользователя: `~/.local/share/winehelper/`
|
||||
- Иконки в `/usr/share/icons/...`
|
||||
|
||||
### Режим разработки
|
||||
При запуске из репозитория:
|
||||
- Рабочая директория: `~/test-winehelper/`
|
||||
- Данные берутся из текущей директории
|
||||
- Включается проверка синтаксиса скриптов
|
||||
|
||||
## Команды CLI
|
||||
|
||||
```bash
|
||||
# Установка
|
||||
winehelper install list # Список доступных программ
|
||||
winehelper -i <script_name> # Установить программу
|
||||
winehelper -i <script_name> /path # Установить из дистрибутива
|
||||
winehelper -i "/path/to/script" # Установить из стороннего скрипта
|
||||
|
||||
# Управление префиксами
|
||||
winehelper create-prefix # Создать префикс
|
||||
winehelper remove-prefix [name] # Удалить префикс
|
||||
winehelper backup-prefix [name] # Создать бэкап (.whpack)
|
||||
winehelper restore-prefix <path> # Восстановить из бэкапа
|
||||
|
||||
# Wine tools
|
||||
winehelper winefile # Файловый менеджер
|
||||
winehelper winecfg # Настройки Wine
|
||||
winehelper winereg # Редактор реестра
|
||||
winehelper wineconsole # Терминал Wine (cmd.exe)
|
||||
winehelper winetricks [component] # Winetricks
|
||||
winehelper <file.exe> # Запустить exe в префиксе
|
||||
winehelper debug [флаги] [программа] # Запуск программы в отладчике winedbg
|
||||
winehelper killall # Остановить все процессы Wine
|
||||
winehelper run-in-prefix <префикс> <файл> # Запустить файл в указанном префиксе
|
||||
|
||||
# Управление компонентами
|
||||
winehelper install-dxvk [version] # Установить DXVK
|
||||
winehelper install-vkd3d [version] # Установить VKD3D
|
||||
winehelper change-wine [version] # Сменить версию Wine
|
||||
winehelper clear-winetricks-cache # Очистить кэш Winetricks
|
||||
|
||||
# Другое
|
||||
winehelper --changelog # История изменений
|
||||
winehelper gui # Запустить GUI
|
||||
```
|
||||
|
||||
## Разработка
|
||||
|
||||
### Запуск в режиме разработки
|
||||
|
||||
```bash
|
||||
# GUI режим
|
||||
./winehelper gui
|
||||
|
||||
# CLI режим
|
||||
./winehelper install list
|
||||
./winehelper -i alta-expert
|
||||
```
|
||||
|
||||
### Pre-commit
|
||||
|
||||
Проект использует [pre-commit](https://pre-commit.com/) для автоматической проверки кода перед коммитом.
|
||||
|
||||
#### Установка
|
||||
|
||||
```bash
|
||||
# Установить pre-commit
|
||||
pip install --user pre-commit
|
||||
|
||||
# Установить git-хуки
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
#### Использование
|
||||
|
||||
Проверка запускается автоматически при обычном `git commit`:
|
||||
|
||||
```bash
|
||||
git add some-file.py
|
||||
git commit -m "feat: описание изменения"
|
||||
```
|
||||
|
||||
Если хуки проходят — коммит создаётся. Если падают — коммит отменяется, а в терминале выводится список ошибок.
|
||||
|
||||
Проверить все файлы вручную:
|
||||
|
||||
```bash
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
Проверить только staged-файлы:
|
||||
|
||||
```bash
|
||||
pre-commit run
|
||||
```
|
||||
|
||||
Обновить версии хуков:
|
||||
|
||||
```bash
|
||||
pre-commit autoupdate
|
||||
```
|
||||
|
||||
#### Включённые проверки
|
||||
|
||||
- `trailing-whitespace`, `end-of-file-fixer`, `mixed-line-ending` — форматирование файлов
|
||||
- `check-ast` — синтаксис Python
|
||||
- `debug-statements` — отладочные вызовы (`breakpoint()`, `pdb`)
|
||||
- `detect-private-key` — случайно закоммиченные ключи
|
||||
- `bash-syntax-check` — синтаксис bash-скриптов
|
||||
- `py-compile` — компиляция Python-файлов (`python3 -m py_compile`)
|
||||
- `shellcheck` — линтинг bash-скриптов
|
||||
- `shfmt` — форматирование bash-скриптов
|
||||
- `ruff` — линтинг Python (импорты, отступы, line-length=120)
|
||||
- `ruff-format` — автоформатирование Python
|
||||
- `codespell` — проверка орфографии
|
||||
- `sha256sum.list format check` — валидация формата `sha256sum.list`
|
||||
|
||||
#### Важные нюансы
|
||||
|
||||
- Хук проверяет только файлы из индекса (`git add`).
|
||||
- Чтобы пропустить проверку (не рекомендуется):
|
||||
```bash
|
||||
git commit --no-verify
|
||||
```
|
||||
- `pyproject.toml` содержит настройки `ruff` (line-length=120, select правил).
|
||||
- Слова, которые `codespell` считает опечатками, но которые являются корректными для проекта, перечислены в `.codespell-ignorewords`.
|
||||
|
||||
### Добавление нового скрипта установки
|
||||
|
||||
1. Создать файл в `autoinstall/` (для автоматической установки) или `manualinstall/` (требуется дистрибутив)
|
||||
2. Добавить обязательные переменные: `PROG_NAME`, `WINEPREFIX`, `WH_WINE_USE`, `PROG_URL`
|
||||
3. Добавить комментарий `# info_ru:` с описанием
|
||||
4. Добавить иконку в `image/` (PNG, имя совпадает с переменной в create_desktop)
|
||||
5. Обновить `sha256sum.list` если требуется загрузка архивов
|
||||
|
||||
### Требования к коду
|
||||
|
||||
**Bash:**
|
||||
- Использовать `#!/usr/bin/env bash`
|
||||
- Проверять наличие переменных перед использованием
|
||||
- Использовать функции обработки ошибок (`fatal`, `print_error`)
|
||||
- Экранировать все пути с помощью кавычек
|
||||
|
||||
**Python:**
|
||||
- Импортировать из `winehelperqt` относительно
|
||||
- Документация на русском языке
|
||||
- Классы должны наследоваться от соответствующих QWidget
|
||||
- Код проходит проверки `ruff` и `ruff-format` (см. раздел Pre-commit)
|
||||
- Желательно добавлять type hints для новых функций и методов
|
||||
- Для вывода сообщений использовать логгер, а не `print()`:
|
||||
```python
|
||||
from winehelperqt.logger import get_logger
|
||||
logger = get_logger(__name__)
|
||||
```
|
||||
Логгер настраивается один раз в `main()` (`winehelper_gui.py`) через `setup_logger()`.
|
||||
Уровень задаётся переменной окружения `WH_LOG_LEVEL` (debug/info/warning/error, по умолчанию info)
|
||||
либо во вкладке «Настройки» GUI.
|
||||
Вывод идёт в stdout — виден при запуске GUI из терминала (`./winehelper gui`).
|
||||
|
||||
## Безопасность
|
||||
|
||||
- Скрипт запрещает запуск от root
|
||||
- Проверяет noexec для /home
|
||||
- Проверяет SHA256 хеши загружаемых файлов
|
||||
- Использует временные файлы с ограниченными правами (600)
|
||||
- Поддержка лицензионного соглашения перед установкой
|
||||
|
||||
## Особенности ALT Linux
|
||||
|
||||
- Требуется репозиторий x86_64-i586 для 32-битных зависимостей
|
||||
- Интеграция с RPM (версия определяется через `rpm -q winehelper`)
|
||||
- Использование apt-get для установки зависимостей
|
||||
- Desktop-файлы размещаются в `~/.local/share/applications/`
|
||||
|
||||
## Полезные ссылки
|
||||
|
||||
- Официальная документация: https://www.altlinux.org/Winehelper
|
||||
- Совместимость ПО (P10): https://www.basealt.ru/fileadmin/user_upload/compatibility/P10-view2.html
|
||||
- Совместимость ПО (P11): https://www.basealt.ru/fileadmin/user_upload/compatibility/P11-view2.html
|
||||
|
||||
## Сторонние компоненты
|
||||
|
||||
- Wine / Wine-Staging / Proton / wine-tkg
|
||||
- Wine-Mono, Wine-Gecko
|
||||
- DXVK, VKD3D
|
||||
- Winetricks
|
||||
- wine-cpcsp_proxy (для КриптоПро)
|
||||
@@ -1,5 +1,60 @@
|
||||
История изменений:
|
||||
|
||||
0.13.0
|
||||
* обновлен графический режим Qt5:
|
||||
- исправлены/улучшены основные функции
|
||||
- запуск утилит Wine выполняется через winehelper (CLI) вместо прямого вызова wine
|
||||
- добавлены индикаторы-иконки на кнопках версий Wine и DXVK/VKD3D
|
||||
- добавлена сортировка версий Wine по убыванию
|
||||
- удалена вкладка "Загрузка" в окне выбора версии Wine
|
||||
- исправлена автопрокрутка списка в менеджере компонентов при поиске
|
||||
- исправлено определение .exe файлов без учета регистра
|
||||
- скрытие ярлыка установленного приложения, если .exe файл отсутствует
|
||||
- добавлена корректная активация CPCSP_PROXY в дополнительных настройках префикса
|
||||
- добавлена принудительная переустановка cpcsp_proxy при включении
|
||||
* добавлены версии wine:
|
||||
- wine-11.0-alt-tkg
|
||||
- wine-9.0-alt-tkg (i586, amd64, wow64)
|
||||
- wine-10.0-alt-tkg (i586, amd64, wow64)
|
||||
- wine-10.0-alt-scadoffice-wow64
|
||||
* удалены неиспользуемые версии wine
|
||||
* обновлены скрипты установок:
|
||||
- t-flex: единый префикс для всех версий, используется wine с исправлением всплывающих окон и 3D на Wayland
|
||||
- emias: используется wine с исправлением сворачивания окон
|
||||
- scadoffice: используется специальная сборка wine (демо версия программы)
|
||||
- olimp: добавлен itss в префикс, исправлен фокус окна и окна справки
|
||||
- ctm-service: исправлено имя exe для desktop файла
|
||||
- daobit-cservice: исправлено имя установщика и замена CService32.exe
|
||||
* добавлена поддержка запуска сторонних скриптов установки
|
||||
* добавлена минимальная генерация .whdb файла при ручном создании ярлыка
|
||||
* возвращено уведомление о монтировании home с флагом noexec
|
||||
* добавлена возможность выбрать рабочий каталог для WineHelper:
|
||||
winehelper data-path "/путь/к/каталогу"
|
||||
|
||||
0.12.0
|
||||
* исправлена работа cpcsp_proxy при монтировании home с флагом noexec
|
||||
* обновлены все скрипты установки ВЭД и СТМ
|
||||
|
||||
0.11.0
|
||||
* исправлена работа WineHelper при монтировании home с флагом noexec
|
||||
* исправлена иконка графического режима Qt5
|
||||
* добавлена автоматическая архивация лога, если он больше 10 Мб
|
||||
* исправлена работа сертификатов для emias (спасибо lav@)
|
||||
|
||||
0.10.0
|
||||
* добавлены скрипты установок:
|
||||
- apropos-z
|
||||
- olimp
|
||||
* обновлены скрипты установок:
|
||||
- ctm-service
|
||||
- emias
|
||||
* добавлены версии wine:
|
||||
- wine-11.3.1-alt1-wow64
|
||||
- wine-10.18.1-alt2-i586
|
||||
- wine-9.0-cx-amd64
|
||||
* добавлена поддержка wine-cx (форк wine от crossover)
|
||||
* небольшие улучшения графического режим Qt5
|
||||
|
||||
0.9.0
|
||||
* добавлена поддержка wine-wow64 (не требует установку 32-битных зависимостей в систему)
|
||||
* добавлена поддержка wine-cpcsp_proxy для wine-wow64 (не требует установку 32-битного КриптоПро в систему)
|
||||
|
||||
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
@@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
@@ -158,7 +158,7 @@ Library.
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
@@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
@@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
@@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
|
||||
@@ -48,19 +48,19 @@
|
||||
$ winehelper -i
|
||||
```
|
||||
|
||||
### Запуск установки приложений
|
||||
### Запуск установки приложений из списка скриптов
|
||||
|
||||
Скрипты установки разделены на два типа:
|
||||
|
||||
1. **Список программ с возможностью автоматической установки** — содержит полностью автоматизированные скрипты установок программ у которыx есть дистрибутивы (установщики) в свободном доступе.
|
||||
1. **Список программ с возможностью автоматической установки** — содержит полностью автоматизированные скрипты установок программ у которых есть дистрибутивы (установщики) в свободном доступе.
|
||||
Процесс полностью автоматизирован.
|
||||
Пример:
|
||||
```
|
||||
$ winehelper install spravki-bk
|
||||
$ winehelper install ksamu
|
||||
```
|
||||
или сокращенная команда:
|
||||
```
|
||||
$ winehelper -i spravki-bk
|
||||
$ winehelper -i ksamu
|
||||
```
|
||||
2. **Список программ с возможностью установки из существующего дистрибутива** — содержит скрипты установок для программ, которых нет в свободном доступе.
|
||||
Пример:
|
||||
@@ -72,7 +72,13 @@
|
||||
$ winehelper -i is-record-station "/путь/до/установочного_файла"
|
||||
```
|
||||
|
||||
### Процесс установки приложений
|
||||
3. **Установка из стороннего скрипта** — можно передать путь к собственному скрипту установки, подготовленному по шаблону WineHelper.
|
||||
Пример:
|
||||
```
|
||||
$ winehelper -i "/путь/до/скрипта_установки"
|
||||
```
|
||||
|
||||
### Процесс установки приложений из списка скриптов
|
||||
|
||||
При первом запуске **WineHelper** проверяются и при необходимости устанавливаются дополнительные зависимости (запрашиваются права root).
|
||||
|
||||
@@ -88,6 +94,27 @@
|
||||
|
||||
Если устанавливаемое приложение требует дополнительных действий от пользователя (ввод лицензии, настройка), это будет явно указано в терминале.
|
||||
|
||||
### Установка своего приложения
|
||||
|
||||
Для установки своего приложения (не из списка готовых скриптов) выполните следующие шаги:
|
||||
|
||||
**Этап 1: Создание префикса**
|
||||
Создайте новый префикс с использованием wine-wow64 (рекомендуется для новых приложений):
|
||||
```
|
||||
$ winehelper create-prefix
|
||||
```
|
||||
Выберите wine-wow64 версию и разрядность 64-bit.
|
||||
|
||||
> [!NOTE]
|
||||
> **Всегда сначала пробуйте wine-wow64**, это упрощает настройку и избавляет от 32-битных зависимостей.
|
||||
|
||||
**Этап 2: Запуск установщика**
|
||||
Запустите установочный файл в созданном префиксе:
|
||||
```
|
||||
$ winehelper "/путь/до/установочного_файла.exe"
|
||||
```
|
||||
Выберите префикс из списка (введите номер и нажмите Enter).
|
||||
|
||||
### Удаление префикса с приложением
|
||||
|
||||
Для удаления префикса выполните команду:
|
||||
@@ -101,14 +128,14 @@
|
||||
2 - Префикс2
|
||||
Выберите префикс (0-2):
|
||||
```
|
||||
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**.Далее потребуется подтвердить удаление префикса вводом **y**.
|
||||
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**. Далее потребуется подтвердить удаление префикса вводом **y**.
|
||||
|
||||
В результате будут удалены:
|
||||
- сам префикс;
|
||||
- установленное ПО;
|
||||
- desktop-файлы (ярлыки для установленного ПО в префиксе).
|
||||
|
||||
###
|
||||
### Cоздание резервной копии префикса
|
||||
|
||||
Команда создания резервной копии префикса:
|
||||
```
|
||||
@@ -121,7 +148,7 @@
|
||||
2 - Префикс2
|
||||
Выберите префикс (0-2):
|
||||
```
|
||||
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**.
|
||||
Необходимо указать номер удаляемого префикса и нажать клавишу **Enter**.
|
||||
После выбора префикса автоматически:
|
||||
- Создаётся копия префикса.
|
||||
- Внутри префикса сохраняется используемая версия WINE.
|
||||
@@ -138,7 +165,7 @@
|
||||
Восстановление префикса не требует подключение к интернету и происходит в автоматическом режиме:
|
||||
- Распаковка префикса.
|
||||
- Восстановление версии WINE.
|
||||
- Восстановление ярлыков (.desktop-файdлов).
|
||||
- Восстановление ярлыков (.desktop-файлов).
|
||||
|
||||
После завершения восстановления приложение будет доступно для запуска через меню или рабочий стол.
|
||||
|
||||
@@ -150,7 +177,6 @@ WineHelper предоставляет доступ к основным инст
|
||||
winehelper winecfg # запуск wine конфигуратора для префикса
|
||||
winehelper winereg # запуск редактора реестра для префикса
|
||||
winehelper wineconsole # запуск терминала wine (cmd.exe)
|
||||
winehelper winetricks # запуск графического интерфейса winetricks
|
||||
winehelper winetricks [компонент] # автоматическая установка дополнительного компонента в префикс
|
||||
```
|
||||
После выполнения любой из вышеперечисленных команд отображается список существующих префиксов:
|
||||
@@ -175,7 +201,7 @@ WineHelper предоставляет доступ к основным инст
|
||||
```
|
||||
Файл будет запущен в выбранном префиксе.
|
||||
|
||||
2. С помощью файлового менеджера WINE:'''
|
||||
2. С помощью файлового менеджера WINE:
|
||||
```
|
||||
$ winehelper winefile
|
||||
0 - Отмена
|
||||
@@ -198,24 +224,40 @@ WineHelper предоставляет доступ к основным инст
|
||||
install list список возможных установочных скриптов
|
||||
install [скрипт] запустить скрипт установки программы
|
||||
install [скрипт] --clear-pfx не использовать готовый префикс для установки ПО
|
||||
install "путь/до/скрипта" запустить сторонний скрипт установки
|
||||
|
||||
install-dxvk [версия|none|list] установить, удалить или показать версии DXVK
|
||||
install-vkd3d [версия|none|list] установить, удалить или показать версии VKD3D
|
||||
change-wine [версия] изменить версию Wine для текущего префикса
|
||||
|
||||
installed список установленных программ
|
||||
run [программа] запуск программы (отладка)
|
||||
run [программа] запуск программы
|
||||
debug [флаги] [программа] запуск программы в отладчике winedbg
|
||||
Флаги:
|
||||
--auto, -a автоматический backtrace
|
||||
--gdb, -g режим gdb
|
||||
--interactive, -i интерактивный режим
|
||||
remove-all удалить WineHelper и все связанные данные
|
||||
create-prefix создать префикс
|
||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||
clear-winetricks-cache очистить кэш Winetricks
|
||||
|
||||
winecfg запуск wine конфигуратора для префикса
|
||||
winereg запуск редактора реестра для префикса
|
||||
winefile запуск файлового менеджера wine
|
||||
wineconsole запуск терминала wine (cmd.exe)
|
||||
control запуск панели управления wine
|
||||
uninstaller запуск удаления программ wine
|
||||
winetricks [компонент] автоматическая установка дополнительного компонента в префикс
|
||||
killall остановить все процессы Wine
|
||||
run-in-prefix <префикс> <файл> запустить файл в указанном префиксе
|
||||
|
||||
Параметры:
|
||||
--help показать эту справку и выйти
|
||||
--version показать информацию о пакете и его версии
|
||||
--changelog показать историю изменений
|
||||
--debug [команда] включить режим логирования работы WINE
|
||||
</pre>
|
||||
|
||||
</details>
|
||||
@@ -239,7 +281,7 @@ WineHelper предоставляет доступ к основным инст
|
||||
<p><em>Вкладка "Ручная установка"</em></p>
|
||||
</div>
|
||||
|
||||
Так же на вкладке **Автоматическая установка** есть чекбокс с тестовыми версиями скриптов установки которые еще не прошли полную проверку на зависимости и совместимость, но уже можно попробовать в работе.
|
||||
Также на вкладке **Автоматическая установка** есть чекбокс с тестовыми версиями скриптов установки которые еще не прошли полную проверку на зависимости и совместимость, но уже можно попробовать в работе.
|
||||
|
||||
<div align="center">
|
||||
<img src="image/handbook/auto_install_test.png">
|
||||
@@ -324,9 +366,9 @@ WineHelper предоставляет доступ к основным инст
|
||||
#### Создание нового префикса
|
||||
|
||||
Нажав кнопку **«Создать новый префикс»**, вы откроете диалог, где можно задать:
|
||||
* **Имя префикса**.
|
||||
* **Имя нового префикса**.
|
||||
* **Разрядность** (32-bit или 64-bit).
|
||||
* **Наполнение** (чистый префикс или с рекомендуемыми библиотеками).
|
||||
* **Шаблон префикса** (чистый префикс или с рекомендуемыми библиотеками).
|
||||
* **Версию Wine** из доступного списка.
|
||||
|
||||
<div align="center">
|
||||
@@ -334,22 +376,45 @@ WineHelper предоставляет доступ к основным инст
|
||||
<p><em>Диалог создания нового префикса</em></p>
|
||||
</div>
|
||||
|
||||
#### Установка своего приложения
|
||||
|
||||
Для установки своего приложения (не из списка готовых скриптов) выполните следующие шаги:
|
||||
|
||||
**Этап 1: Создание префикса**
|
||||
1. Вкладка **«Менеджер префиксов»**
|
||||
2. Нажмите **«Создать новый префикс»**
|
||||
3. Задайте имя префикса
|
||||
4. Выберите **wine-wow64** версию (рекомендуется)
|
||||
5. Выберите разрядность **64-bit**
|
||||
|
||||
> [!NOTE]
|
||||
> **Всегда сначала пробуйте wine-wow64**, это упрощает настройку и избавляет от 32-битных зависимостей.
|
||||
|
||||
**Этап 2: Установка приложения**
|
||||
1. Выберите созданный префикс из выпадающего списка
|
||||
2. Нажмите кнопку **«Запустить файл в префиксе»**, выберите файл для установки
|
||||
3. Нажмите кнопку **«Создать ярлык для приложения в префиксе»**, выберите установленный файл в префиксе
|
||||
|
||||
#### Управление существующим префиксом
|
||||
|
||||
Выбрав префикс из выпадающего списка, вы получаете доступ к панели управления, которая позволяет:
|
||||
|
||||
* **Управлять компонентами**:
|
||||
* **Менеджер компонентов (Winetricks)**: Удобный интерфейс для установки и переустановки библиотек, шрифтов и настроек.
|
||||
* **Запускать стандартные утилиты Wine**:
|
||||
* `Редактор настроек (winecfg)`
|
||||
* `Редактор реестра (regedit)`
|
||||
* `Удаление программ (uninstaller)`
|
||||
* `Командная строка (cmd)`
|
||||
* `Файловый менеджер (winefile)`
|
||||
* **Управлять компонентами**:
|
||||
* **Менеджер компонентов (Winetricks)**: Удобный интерфейс для установки и переустановки библиотек, шрифтов и настроек.
|
||||
* **Управление Wine**: Смена версии Wine для выбранного префикса. Диалог выбора позволяет как выбрать уже установленную версию, так и скачать новую из списков, сгруппированных по архитектуре.
|
||||
* `Панель управления (control)`
|
||||
* **Управлять версиями Wine**:
|
||||
* **Управление версией Wine**: Смена версии Wine для выбранного префикса. Диалог выбора позволяет как выбрать уже установленную версию, так и скачать новую из списков, сгруппированных по архитектуре.
|
||||
* **Управлять дополнительными настройками**:
|
||||
* **Управление DXVK/VKD3D**: Установка или удаление конкретных версий DXVK и vkd3d-proton.
|
||||
* **Ассоциации файлов**: Настройка открытия определенных типов файлов (например, `.pdf`, `.docx`) нативными приложениями Linux, чтобы избежать их открытия внутри Wine.
|
||||
* **Включать/выключать ESync и FSync**.
|
||||
* **Включать/выключать ESync и FSync**: Включение/выключение методов оптимизации синхронизации потоков в Windows-приложениях при запуске через Wine.
|
||||
* **Включать/выключать CPCSP_PROXY**: Поддержка КриптоПро CSP (электронная подпись). Включайте только для приложений, требующих ЭП.
|
||||
* **Устанавливать приложения**: Установить любой `.exe` или `.msi` файл напрямую в выбранный префикс.
|
||||
* **Создавать ярлыки**: Создать ярлык для любого исполняемого файла внутри префикса.
|
||||
* **Удалять префикс** или **создавать из него шаблон**.
|
||||
|
||||
@@ -4,25 +4,21 @@ _winehelper_completions() {
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--help --version --debug install installed install-dxvk install-vkd3d -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog change-wine clear-winetricks-cache"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||
opts="--help --version install installed install-dxvk install-vkd3d -r -i remove-all killall remove-prefix backup-prefix restore-prefix create-prefix change-wine change-windows-ver clear-winetricks-cache gui data-path version help --changelog changelog create-base-pfx init-prefix run-in-prefix debug"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run uninstaller control"
|
||||
|
||||
case "${prev}" in
|
||||
winehelper)
|
||||
COMPREPLY=( $(compgen -W "${opts} ${wine_cmd}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
--debug)
|
||||
COMPREPLY=( $(compgen -W "${wine_cmd}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
install|-i)
|
||||
local scripts="$(ls -1 /usr/share/winehelper/autoinstall) $(ls -1 /usr/share/winehelper/manualinstall)"
|
||||
COMPREPLY=( $(compgen -W "list ${scripts}" -- "${cur}") )
|
||||
local scripts="$(ls -1 /usr/share/winehelper/autoinstall 2>/dev/null) $(ls -1 /usr/share/winehelper/manualinstall 2>/dev/null) $(ls -1 /usr/share/winehelper/testinstall 2>/dev/null)"
|
||||
COMPREPLY=( $(compgen -W "list --clear-pfx ${scripts}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
run|installed)
|
||||
local installed=$(ls -1 ~/.local/share/winehelper/ | grep ".desktop" | sed 's/.desktop//')
|
||||
local installed=$(ls -1 ~/.local/share/winehelper/ 2>/dev/null | grep ".desktop" | sed 's/.desktop//')
|
||||
COMPREPLY=( $(compgen -W "${installed}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
@@ -31,7 +27,17 @@ _winehelper_completions() {
|
||||
COMPREPLY=( $(compgen -W "${prefixes}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
run-in-prefix)
|
||||
local prefixes=$(ls -1 ~/.local/share/winehelper/prefixes 2>/dev/null)
|
||||
COMPREPLY=( $(compgen -W "${prefixes}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
restore-prefix)
|
||||
COMPREPLY=( $(compgen -f -X '!*.whpack' -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
data-path)
|
||||
COMPREPLY=( $(compgen -d -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
install-dxvk|install-vkd3d)
|
||||
@@ -48,7 +54,15 @@ _winehelper_completions() {
|
||||
COMPREPLY=( $(compgen -W "system ${wine_versions}" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
change-windows-ver)
|
||||
COMPREPLY=( $(compgen -W "2k xp xp64 2k3 vista 7 8 81 10 11" -- "${cur}") )
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
if [[ "${COMP_WORDS[COMP_CWORD-2]}" == "run-in-prefix" ]] ; then
|
||||
COMPREPLY=( $(compgen -f -- "${cur}") )
|
||||
return 0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -5,8 +5,9 @@ _winehelper() {
|
||||
|
||||
opts=(
|
||||
'--help[Вывести справку]'
|
||||
'help[Вывести справку]'
|
||||
'--version[Показать информацию о пакете и его версии]'
|
||||
'--debug[Режим отладки]'
|
||||
'version[Показать информацию о пакете и его версии]'
|
||||
'install[Запустить скрипт установки программы]'
|
||||
'install-dxvk[Установить/удалить DXVK]'
|
||||
'install-vkd3d[Установить/удалить VKD3D]'
|
||||
@@ -14,14 +15,22 @@ _winehelper() {
|
||||
'-r[Запуск программы (отладка)]'
|
||||
'-i[Запустить скрипт установки программы]'
|
||||
'remove-all[Удалить WineHelper и все связанные данные]'
|
||||
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
|
||||
'killall[Убить все процессы]'
|
||||
'create-prefix[Создать новый префикс]'
|
||||
'remove-prefix[Удалить префикс и все связанные данные]'
|
||||
'backup-prefix[Создать резерную копию префикса]'
|
||||
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||
'backup-prefix[Создать резервную копию префикса]'
|
||||
'restore-prefix[Восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||
'change-wine[Изменить версию Wine для префикса]'
|
||||
'change-windows-ver[Изменить версию Windows для префикса]'
|
||||
'clear-winetricks-cache[Очистить кэш Winetricks]'
|
||||
'gui[Запустить графический интерфейс]'
|
||||
'data-path[Изменить рабочий каталог WineHelper]'
|
||||
'create-base-pfx[Создать базовый шаблонный префикс]'
|
||||
'init-prefix[Инициализировать префикс]'
|
||||
'run-in-prefix[Запустить файл в указанном префиксе]'
|
||||
'debug[Запуск программы в отладчике]'
|
||||
'--changelog[Показать историю изменений]'
|
||||
'changelog[Показать историю изменений]'
|
||||
)
|
||||
|
||||
wine_cmd=(
|
||||
@@ -34,6 +43,8 @@ _winehelper() {
|
||||
regedit
|
||||
explorer
|
||||
cmd
|
||||
uninstaller
|
||||
control
|
||||
'run[Запуск программы (отладка)]'
|
||||
)
|
||||
|
||||
@@ -47,23 +58,28 @@ _winehelper() {
|
||||
_values 'winehelper options' "${opts[@]}" "${wine_cmd[@]}"
|
||||
;;
|
||||
args)
|
||||
if [[ "$words[2]" == "run-in-prefix" ]] && [[ ${#words[@]} -gt 3 ]] ; then
|
||||
_files
|
||||
return
|
||||
fi
|
||||
|
||||
case $words[2] in
|
||||
--debug)
|
||||
_values 'wine commands' "${wine_cmd[@]}"
|
||||
;;
|
||||
install|-i)
|
||||
_get_list_for_install
|
||||
;;
|
||||
run|installed)
|
||||
run|installed|debug)
|
||||
_get_installed_list
|
||||
;;
|
||||
remove-prefix|backup-prefix)
|
||||
remove-prefix|backup-prefix|run-in-prefix)
|
||||
_get_prefixes
|
||||
;;
|
||||
create-prefix)
|
||||
create-prefix|init-prefix|create-base-pfx|gui|killall|clear-winetricks-cache|remove-all|version|--version|help|--help|changelog|--changelog)
|
||||
;;
|
||||
restore-prefix)
|
||||
_files
|
||||
_files -g '*.whpack'
|
||||
;;
|
||||
data-path)
|
||||
_path_files -/
|
||||
;;
|
||||
install-dxvk)
|
||||
_get_component_versions 'install-dxvk'
|
||||
@@ -74,6 +90,11 @@ _winehelper() {
|
||||
change-wine)
|
||||
_get_wine_versions
|
||||
;;
|
||||
change-windows-ver)
|
||||
_values 'windows versions' 2k xp xp64 2k3 vista 7 8 81 10 11
|
||||
;;
|
||||
winecfg|winereg|winefile|wineconsole|winetricks|desktop|regedit|explorer|cmd|uninstaller|control)
|
||||
;;
|
||||
*)
|
||||
_values 'winehelper options' "${opts[@]}" "${wine_cmd[@]}"
|
||||
;;
|
||||
@@ -117,8 +138,11 @@ _get_prefixes () {
|
||||
}
|
||||
|
||||
_get_list_for_install () {
|
||||
|
||||
packages=(${(f)"$(winehelper install list 2>/dev/null |
|
||||
local -a packages
|
||||
|
||||
packages=(--clear-pfx)
|
||||
|
||||
packages+=(${(f)"$(winehelper install list 2>/dev/null |
|
||||
awk -F ' - ' '
|
||||
/^[^ ]+ - \("/ {next}
|
||||
/^[[:space:]]*$/ {next}
|
||||
@@ -131,14 +155,8 @@ _get_list_for_install () {
|
||||
if (name && desc) print name ":" desc
|
||||
}
|
||||
')"})
|
||||
|
||||
packages+=(
|
||||
scadoffice:"SCAD Office"
|
||||
t-flex-cad17-applications:"Приложения для T-FLEX CAD 17"
|
||||
t-flex-cad17-resources:"Обучающие материалы T-FLEX CAD 17"
|
||||
)
|
||||
|
||||
_describe 'packages' packages
|
||||
_describe 'packages' packages
|
||||
}
|
||||
|
||||
_get_installed_list () {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Пакет программ для таможенного оформления. Включает программы Такса и ТамДок в комплектациях Эксперт, а также программу Заполнитель.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Альта-Эксперт"
|
||||
export BASE_PFX="alta_pfx_x86_v01"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Таможенное оформление товаров
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Альта-ГТД"
|
||||
export PROG_ICON="altagtd"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Пакет программ для таможенного оформления. Включает программы Альта-ГТД, Такса и ТамДок в комплектациях Максимум, а также программу Заполнитель.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Альта-Максимум"
|
||||
export BASE_PFX="alta_pfx_x86_v01"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Таможенное законодательство
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Таможенные документы"
|
||||
export PROG_ICON="altatamdoc"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Расчет контракта
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Такса"
|
||||
export PROG_ICON="altatax"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Автоматизация импорта данных
|
||||
########################################################################
|
||||
export PROG_URL="https://www.alta.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="alta"
|
||||
export PROG_NAME="Заполнитель"
|
||||
export PROG_ICON="altazap"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Система “A'PROPOS-Z - Графит ТМ” для проектирования этапов механообработки, синтеза, расчета и верефикация операционных размерных текстур. Графическое моделирование технологии иформирование карт эскизов.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.tezis.pro"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="apropos-z"
|
||||
export PROG_NAME="A'PROPOS-Z - Графит ТМ"
|
||||
export PROG_ICON="apropos-z"
|
||||
@@ -24,5 +24,3 @@ if try_download "$AUTOINSTALL_URL" "$AUTOINSTALL_EXE" ; then
|
||||
|
||||
create_desktop "$PROG_NAME" "$DRIVE_C/Program Files/A'PROPOS-Z/Apropos-Z.exe" "$PROG_ICON"
|
||||
fi
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ АТТЕСТАТ” для документов об основном общем, среднем общем образовании.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-4"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ АТТЕСТАТ"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ ДПП” для заполнения бланков документов о повышении квалификации и профессиональной переподготовке.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ ДПП"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ НШ” для заполнения бланков документов об окончании начальной школы.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-1"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ НШ"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ МЕД” для заполнения бланков документов о послевузовском профессиональном образовании и сертификатов специалиста.
|
||||
######################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-3"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ МЕД"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ ПРОФЕССИЯ” для заполнения бланков документов профессионального обучения.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-5"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ ПРОФЕССИЯ"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ СПО” для заполнения бланков документов о среднем профессиональном образовании.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-2"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ СПО"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа “АРМ КТ ПРОФ ВУЗ” для заполнения бланков документов о высшем образовании.
|
||||
########################################################################
|
||||
export PROG_URL="https://armregistr.ru/programmnoe-obespechenie/licenziya-na-programmnoe-obespechenie-dlya-zapolneniya-blank-6"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="arm-kt"
|
||||
export PROG_NAME="АРМ КТ ПРОФ ВУЗ"
|
||||
export PROG_ICON="armkt"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.ctm.ru"
|
||||
export PROG_NAME="СТМ-Финансы"
|
||||
export PROG_ICON="ctmfinance"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.ctm.ru"
|
||||
export PROG_NAME="СТМ-Журналы"
|
||||
export PROG_ICON="ctmjournals"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.ctm.ru"
|
||||
export PROG_NAME="Монитор ЭД"
|
||||
export PROG_ICON="ctmmonitor"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.ctm.ru"
|
||||
export PROG_NAME="СТМ-Отчет"
|
||||
export PROG_ICON="ctmreport"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.ctm.ru"
|
||||
export PROG_NAME="СТМ-Сервис"
|
||||
export PROG_ICON="ctmservice"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
@@ -18,7 +18,7 @@ get_and_set_reg_file --add 'Software\CTM\CTMSETUP' 'SkipKBCheck' 'REG_DWORD' "1"
|
||||
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/setup_cs.exe"
|
||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_cs"
|
||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_cs/setup.exe"
|
||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_cs/Setup.exe"
|
||||
|
||||
if try_download "https://files.ctm.ru/CSERVICE/SFX/setup_cs.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
unpack "${AUTOINSTALL_EXE}" "${AUTOINSTALL_UNPACK}"
|
||||
@@ -27,8 +27,10 @@ if try_download "https://files.ctm.ru/CSERVICE/SFX/setup_cs.exe" "${AUTOINSTALL_
|
||||
wine_run_install "${AUTOINSTALL_SETUP}" /cd /targetdir="C:\\\\Program Files\\\\CTM\\\\CSERVICE" /auto /hide
|
||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/CTM/CSERVICE/ctmservc.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/CTM/CSERVICE/CService32.exe"
|
||||
WIN_FAKE_EXEC="$DRIVE_C/Program Files/CTM/CSERVICE/ctm-service.exe"
|
||||
try_force_link_file "$WIN_FILE_EXEC" "$WIN_FAKE_EXEC"
|
||||
create_desktop "$PROG_NAME" "$WIN_FAKE_EXEC" "$PROG_ICON"
|
||||
|
||||
if [[ "$USE_CTMBAR" == "1" ]] ; then
|
||||
if [[ -f "$DRIVE_C/Program Files/CTM/COMMON/CTMBAR.EXE" ]]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Сервис обновления ПО: "R-Атлас", "R-Инфо" и "R-Тариф".
|
||||
########################################################################
|
||||
export PROG_URL="https://daobit.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="daobit"
|
||||
export PROG_NAME="Сервис обновления ПО"
|
||||
export PROG_ICON="daobitcservice"
|
||||
@@ -13,7 +13,7 @@ export INSTALL_DLL="dotnet7 dotnetdesktop7 arial renderer=gdi"
|
||||
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/setup_cs.exe"
|
||||
AUTOINSTALL_UNPACK="${WH_TMP_DIR}/setup_cs"
|
||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_cs/SETUP.EXE"
|
||||
AUTOINSTALL_SETUP="${WH_TMP_DIR}/setup_cs/Setup.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://files.daobit.ru/CSERVICE/SFX/setup_cs.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
@@ -25,7 +25,9 @@ if try_download "https://files.daobit.ru/CSERVICE/SFX/setup_cs.exe" "${AUTOINSTA
|
||||
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"
|
||||
WIN_FAKE_EXEC="$DRIVE_C/Program Files/DAO/CSERVICE/daobit-service.exe"
|
||||
try_force_link_file "$WIN_FILE_EXEC" "$WIN_FAKE_EXEC"
|
||||
create_desktop "$PROG_NAME" "$WIN_FAKE_EXEC" "$PROG_ICON"
|
||||
try_remove_dir "$AUTOINSTALL_UNPACK"
|
||||
try_remove_file "$AUTOINSTALL_EXE"
|
||||
fi
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Построение маршрутов железнодорожных грузоперевозок
|
||||
########################################################################
|
||||
export PROG_URL="https://daobit.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="daobit"
|
||||
export PROG_NAME="R-Атлас"
|
||||
export PROG_ICON="daobitratlas"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Специализированная информация для организации железнодорожных перевозок
|
||||
########################################################################
|
||||
export PROG_URL="https://daobit.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="daobit"
|
||||
export PROG_NAME="R-Инфо"
|
||||
export PROG_ICON="daobitrinfo"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Расчёт размера провозной платы и дополнительных сборов за грузовые перевозки по железной дороге
|
||||
########################################################################
|
||||
export PROG_URL="https://daobit.ru"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="daobit"
|
||||
export PROG_NAME="R-Тариф"
|
||||
export PROG_ICON="daobitrtariff"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://www.keepsoft.ru"
|
||||
export PROG_NAME="Конструктор тестов"
|
||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/simulator4.exe"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="keepsoft_similator4"
|
||||
export BASE_PFX="defpfx_x86_v01"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: “КСАМУ” - Комплексная система автоматизации медицинского учреждения.
|
||||
########################################################################
|
||||
export PROG_URL="https://docs.medicine-it.ru/"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="ksamu"
|
||||
export PROG_NAME="КСАМУ"
|
||||
export PROG_ICON="ksamu"
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX CAD Учебная Версия 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX CAD 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -5,13 +5,12 @@ export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="Приложения для T-FLEX CAD 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
check_prefix_var
|
||||
if [[ ! -f "$WINEPREFIX/drive_c/Program Files/T-FLEX CAD 17/Program/TFlexCad.exe" ]]
|
||||
|
||||
@@ -5,13 +5,12 @@ export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="Ресурсы для T-FLEX CAD 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
check_prefix_var
|
||||
if [[ ! -f "$WINEPREFIX/drive_c/Program Files/T-FLEX CAD 17/Program/TFlexCad.exe" ]]
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX CAD 18"
|
||||
export PROG_ICON="tflexcad18"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -5,13 +5,12 @@ export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="Приложения для T-FLEX CAD 18"
|
||||
export PROG_ICON="tflexcad18"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
check_prefix_var
|
||||
if [[ ! -f "$WINEPREFIX/drive_c/Program Files/T-FLEX CAD 18/Program/TFlexCad.exe" ]]
|
||||
|
||||
@@ -5,13 +5,12 @@ export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="Ресурсы для T-FLEX CAD 18"
|
||||
export PROG_ICON="tflexcad18"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
check_prefix_var
|
||||
if [[ ! -f "$WINEPREFIX/drive_c/Program Files/T-FLEX CAD 18/Program/TFlexCad.exe" ]]
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX CAD 2D+ 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX CAD 2D+ 18"
|
||||
export PROG_ICON="tflexcad18"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX DOCs 17"
|
||||
export PROG_ICON="tflexdoc17"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=gdi"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX Viewer 17"
|
||||
export PROG_ICON="tflexcad17"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
export PROG_URL="https://www.tflexcad.ru"
|
||||
export PROG_NAME="T-FLEX Viewer 18"
|
||||
export PROG_ICON="tflexcad18"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
# используем общий whdb файл для подготовки префикса и сервисов
|
||||
# prepair_wine используется из файла настроек
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Алфавит"
|
||||
export PROG_ICON="vedalf"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Контроль"
|
||||
export PROG_ICON="vedcontrol"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Декларант"
|
||||
export PROG_ICON="veddcl"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Инфо"
|
||||
export PROG_ICON="vedinfo"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Платежи"
|
||||
export PROG_ICON="vedpayments"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export PROG_URL="https://ctm.ru"
|
||||
export PROG_NAME="ВЭД-Склад"
|
||||
export PROG_ICON="vedsts"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ved_ctm"
|
||||
export BASE_PFX="ved_ctm_pfx_x86_v05"
|
||||
export WINEARCH="win32"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Компоненты сервисов поддержки T-FLEX 17 и 18
|
||||
########################################################################
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export WH_WINE_USE="wine-10.9-alt-tflex-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export PROG_VERSION=""
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##### CHECK ROOT #####
|
||||
if [[ $(id -u) -ne 0 ]] ; then
|
||||
if [[ $(id -u) -ne 0 ]]; then
|
||||
echo "Перезапустите скрипт $0 от root пользователя!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
##### MESSAGES FUNCTIONS #####
|
||||
if [[ -t 0 ]] ; then
|
||||
print_error () { printf "\E[31m%s Ошибка: $* %s\e[0m\n" ;}
|
||||
if [[ -t 0 ]]; then
|
||||
print_error() { printf "\E[31m%s Ошибка: $* %s\e[0m\n"; }
|
||||
else
|
||||
print_error () { echo -e "Ошибка: $*" ;}
|
||||
print_error() { echo -e "Ошибка: $*"; }
|
||||
fi
|
||||
|
||||
fatal () {
|
||||
fatal() {
|
||||
print_error "$@ Аварийное завершение работы WineHelper!"
|
||||
exit 1
|
||||
}
|
||||
@@ -29,7 +29,4 @@ apt-get update || fatal "Не удалось обновить список до
|
||||
##### INSTALL DEPENDENCIES #####
|
||||
# fonts-ttf-ms
|
||||
|
||||
apt-get install -y i586-{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
||||
libnm,libnss,libnss-mdns,libnsl1,libunwind,libunixODBC2,ocl-icd,libfreetype,\
|
||||
libcups,libfontconfig1,libgnutls30,libGL,libEGL,libvulkan1,xorg-dri-swrast,\
|
||||
xorg-dri-intel,xorg-dri-radeon} || fatal "Не удалось установить зависимости."
|
||||
apt-get install -y i586-{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libnm,libnss,libnss-mdns,libnsl1,libunwind,libunixODBC2,ocl-icd,libfreetype,libcups,libfontconfig1,libgnutls30,libGL,libEGL,libvulkan1,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon} || fatal "Не удалось установить зависимости."
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Автоматизация установки МИС Витакарта (AIS LPU Client).
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="ais-lpu-client"
|
||||
export PROG_NAME="AIS LPU Client"
|
||||
export PROG_ICON="ais_lpu_client"
|
||||
|
||||
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 284 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 232 KiB |
|
Before Width: | Height: | Size: 336 KiB After Width: | Height: | Size: 365 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 208 KiB |
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Специализированное программное обеспечение «Автономная станция прослушивания» предназначено для загрузки и прослушивания электронных материалов итогового собеседования.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="desktopaudiostation"
|
||||
export PROG_NAME="АС Прослушивания"
|
||||
export PROG_ICON="desktopaudiostation"
|
||||
|
||||
@@ -2,16 +2,15 @@
|
||||
# info_ru: Установщик "ЕМИАС" - Единая медицинская информационно-аналитическая система
|
||||
########################################################################
|
||||
export PROG_URL="https://emias.info/"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-11.0-alt-emias-wow64"
|
||||
export WINEPREFIX="emias"
|
||||
export PROG_NAME="КИС ЕМИАС"
|
||||
export BASE_PFX="emias_pfx_x64_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win64"
|
||||
export INSTALL_DLL="crypt32"
|
||||
export WH_WINDOWS_VER="7"
|
||||
export WH_MAIN_DECORATED="0"
|
||||
export WH_USE_CPCSP_PROXY="1"
|
||||
export STAGING_SHARED_MEMORY="1"
|
||||
export WINE_LARGE_ADDRESS_AWARE="1"
|
||||
export CPCSP_PROXY_WOW64_VER="0.7.7-alt1.1-em-wow64"
|
||||
|
||||
if [[ -f "$2" ]] \
|
||||
&& [[ $(basename "$2") =~ (kis\.exe|kis_z\.exe) ]]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Специализированное программное обеспечение «Автономная станция записи» предназначено для записи ответов участников итогового собеседования.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="isrecordingstation"
|
||||
export PROG_NAME="АС Записи"
|
||||
export PROG_ICON="isrecordingstation"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Установщик программного комплекса NetTest (демо-версия)
|
||||
########################################################################
|
||||
export PROG_URL="https://www.kpolyakov.spb.ru/prog/nettest/nettget.htm"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-amd64"
|
||||
export WINEPREFIX="nettest"
|
||||
export PROG_NAME="NetTest"
|
||||
export BASE_PFX="none"
|
||||
@@ -33,7 +33,3 @@ else
|
||||
fatal "Не найден файл архива для $PROG_NAME. Перезапустите по примеру:
|
||||
winehelper install $1 \"/путь/до/архива\""
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,15 +2,16 @@
|
||||
# info_ru: "КИС Олимп" - программно-аналитический комплекс, состоящий из самостоятельных подключаемых модулей.
|
||||
########################################################################
|
||||
export PROG_URL="https://olimp.best/"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="olimp"
|
||||
export PROG_NAME="КИС Олимп"
|
||||
export BASE_PFX="olimp_pfx_x86_v01"
|
||||
export BASE_PFX="olimp_pfx_x86_v04"
|
||||
export WINEARCH="win32"
|
||||
export WH_WINDOWS_VER="7"
|
||||
export INSTALL_DLL="jet40 dotnet45 corefonts lucida opensymbol tahoma cjkfonts mdac28 msxml4 native_oleaut32 vcrun2005"
|
||||
export INSTALL_DLL="jet40 dotnet45 corefonts lucida opensymbol tahoma cjkfonts mdac28 msxml4 native_oleaut32 vcrun2005 ie8 itss"
|
||||
export WINEDLLOVERRIDES="d2d1=n"
|
||||
export WH_MAIN_DECORATED="0"
|
||||
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
|
||||
|
||||
if [[ -f "$2" ]] \
|
||||
&& [[ $(basename "$2") =~ (Loader\.exe) ]]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Это мощный, современный инструмент быстрой и качественной разработки АСУТП
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586" # wine-9.0.9-alt1-i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="scada-krug-2000"
|
||||
export PROG_NAME="SCADA КРУГ 2000"
|
||||
export PROG_ICON="krugtaskmanager"
|
||||
|
||||
@@ -7,7 +7,7 @@ export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=vulkan"
|
||||
|
||||
@@ -7,7 +7,7 @@ export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex18"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ export WH_WINE_USE="wine-10.18.1-tflex-alt2-wow64"
|
||||
export BASE_PFX="tflex_pfx_x64_v03"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEPREFIX="tflex17"
|
||||
export WINEPREFIX="tflex"
|
||||
export WH_XDG_OPEN="log"
|
||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||
export WINE_D3D_CONFIG="renderer=gdi"
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
[tool.ruff]
|
||||
line-length = 120
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "W", "F", "I"]
|
||||
|
||||
[tool.ruff.format]
|
||||
quote-style = "double"
|
||||
indent-style = "space"
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
file="sha256sum.list"
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
awk '
|
||||
/^#/ { next }
|
||||
NF == 0 { next }
|
||||
$1 !~ /^[a-f0-9]{64}$/ {
|
||||
print "Invalid hash line: " NR ": " $0
|
||||
exit 1
|
||||
}
|
||||
' "$file"
|
||||
@@ -1,24 +1,25 @@
|
||||
##### WINE WOW64 #####
|
||||
e9a8b79dfe12cad1304dca573d73aefe109e3d69b6fff739c8dbb8b2d3c271c6 wine-10.12.1-alt1-wow64.tar.xz
|
||||
a862761c432f8619caf8100589678a1cbb523787259120ccd4388089d81e3b17 wine-10.18.1-tflex-alt2-wow64.tar.xz
|
||||
349c707148a23e667970309248bbbf97b4e2a0db59c548e73d9fe9c3f585872c wine-10.18.1-alt1-wow64.tar.xz
|
||||
e99a44d9f302869287cbe699c2800e3ab4b3e1f9501f20fa3b0491c9cfaae1e7 wine-11.12-alt-tkg-wow64.tar.xz
|
||||
90676579fc97b0bdd0cc265b5c728683f8ce8d8998b020ac39d7c26ebf8783d9 wine-11.0-alt-tkg-wow64.tar.xz
|
||||
d8275a94f7538e600b4c82b0693a9ab1ebf0d5f141ea7ec3bc2a0e230b15676b wine-11.0-alt-emias-wow64.tar.xz
|
||||
d86724bd1b3a7a798f221a6a84430d37a3f531014756b7de49c0d8444d748bd7 wine-10.9-alt-tflex-wow64.tar.xz
|
||||
df5509e1f04424d41d734a255acd3695ac1167b73e52189b97b8acc9084f7fa6 wine-10.0-alt-scadoffice-wow64.tar.xz
|
||||
714687110724f4772d4028fb340ac1c8f9a32f0454c76822c967af9ef06844eb wine-10.0-alt-tkg-wow64.tar.xz
|
||||
4826028ddd49cc6ec2760be8dbb8ff2353a58323a87c846a8667e41e90851ea1 wine-9.0-alt-tkg-wow64.tar.xz
|
||||
|
||||
##### WINE AMD64 #####
|
||||
009c95bfe2df3f9264c9c5092f3e30ea7a168dd7869046058a718a70739602d4 wine_wh_tflex_10-9_amd64.tar.xz
|
||||
71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12 wine_x_tkg_10-0_amd64.tar.xz
|
||||
e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183 wine-9.0.14-alt1-amd64.tar.xz
|
||||
f1bf1261550ca2928cefacdb724926d3d6d103433d0ff6882ee9783a50d8f4e4 wine-8.8-staging-amd64.tar.xz
|
||||
61bec1230b37b8fcc69fd45f848b44fd88cc41fcdd5dc3080336d7da63660f40 wine-7.16.1-alt1-amd64.tar.xz
|
||||
fd209c95a3aa507002374417365b3d1119dbe3a0a6d223034171221a2b187b66 wine-9.0-cx-amd64.tar.xz
|
||||
d1bfda024138f6e83ee531df513e6ebebb7aee1e40ce3f5cd3a4d0631107e482 wine-11.12-alt-tkg-amd64.tar.xz
|
||||
7a735f1e00173d8d3e3727aab927c4eb86aca018f39a4e8dfc1936909b8b9654 wine-11.0-alt-tkg-amd64.tar.xz
|
||||
2f3aa24fcb52a12bac35a77bf088aa8308e2e0ac3bf89f9b3f9e8e3c7090bbe8 wine-10.0-alt-tkg-amd64.tar.xz
|
||||
4251e75b410268fca9dabc168f838a56f5f02b970c6d4250763da8e791e8880d wine-9.0-alt-tkg-amd64.tar.xz
|
||||
|
||||
##### WINE I586 #####
|
||||
3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f wine_x_tkg_10-0_i586.tar.xz
|
||||
fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193 wine-9.0.14-alt1-i586-spravkibk.tar.xz
|
||||
6f86d2220b65b709bf88c6f829a4998de3b929cc2091cd1333a51c32e1491b79 wine-9.0.9-alt1-i586.tar.xz
|
||||
6fea17fd131f57c2ebf7ca4c60d3c5a9e819afe16e5d0b77ecb750da99ae0e38 wine-7.16.1-alt1-i586.tar.xz
|
||||
b660de1ce16fc90f54997e6cf30d9cf92daa932f5ef14ba8bd7cd5d7a4fa25af wine-11.12-alt-tkg-i586.tar.xz
|
||||
b082dc92c0ed96366353b8a9f62b126276d2476be85d2b37d47a886771a808b6 wine-11.0-alt-tkg-i586.tar.xz
|
||||
d63ae109e2495d3817172146107d9ddfd0b63a0f76b4d575279ae6b642522795 wine-10.0-alt-tkg-i586.tar.xz
|
||||
9a3160ae815b2dd008f67bf230b4e440c6b341d770b7c2a4b1a2c50283c7a895 wine-9.0-alt-tkg-i586.tar.xz
|
||||
|
||||
##### DXVK #####
|
||||
d1a86ca53ab7e156e1252d3cf7eed3c66fe0651699cfc9c4ba152024261d8258 dxvk-1.10.1-967.tar.xz
|
||||
98411effbc1b3611b11c4ca3af2ad29400b08e1c8c380791d6351600a06fb3c7 dxvk-1.10.3-28.tar.xz
|
||||
061568b51ce99d285ef2d0f1f31aab65b3e6fd34747073859c5a719bec2a7afd dxvk-1.6.1.tar.xz
|
||||
37ed4a8cd4c2bff3abbf830e6d602c2e0a971eda7c69b3f45834539bc84b1431 dxvk-2.0-116.tar.xz
|
||||
@@ -114,9 +115,9 @@ b3f56f58b5b764aba564c8b8c69eb12425467d57bf2a6457edff08842af03573 vkd3d-proton-1
|
||||
edf16d2b37bc77d121d5d81b06b60d3f694e0060c6606e729ceab30de3d27466 vkd3d-proton-sarek-2.6.0.tar.xz
|
||||
|
||||
##### CPCSP_PROXY #####
|
||||
3153088ff28d6af415c3504a421e5382554dbb305f38d5a87dd84df90d680421 wine-cpcsp_proxy-0.6.1-alt1.tar.xz
|
||||
fbe72bfe3c2c307363782ce2d37589e142b44111f269657b0e516a6b2d6ab8a9 wine-cpcsp_proxy-0.7.3-alt5-wow64.tar.xz
|
||||
5a0c582f662ac501865f569124c153b43cded72eb98a001eaa7ebd5b2168f1a2 wine-cpcsp_proxy-0.7.7-alt1.1-em-wow64.tar.xz
|
||||
6f43427148c6f424cd49a406328669e4ec4f21df7bc86f1a6aad2b5c16b50e39 wine-cpcsp_proxy-0.7.7-alt1-wow64.tar.xz
|
||||
3153088ff28d6af415c3504a421e5382554dbb305f38d5a87dd84df90d680421 wine-cpcsp_proxy-0.6.1-alt1.tar.xz
|
||||
|
||||
##### FONTS #####
|
||||
405bfe3b7c7f80034837c05656535053305727ee4bf1d993521b67b71d08ebc6 extra_fonts_v01.tar.xz
|
||||
@@ -183,10 +184,6 @@ dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e audiorecstatio
|
||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
||||
# winetricks arial dotnet7 dotnetdesktop7 renderer=gdi
|
||||
|
||||
8c6312f2e4e846a98ca4a87fc90ee1917eb28d4caaddde040fb4d2dd05f8c0fe scadaoffice_pfx_x64_v05.tar.xz
|
||||
# create with wine_x_tkg_10-0_amd64 (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
|
||||
|
||||
ef7e8f1ba785d48e4ea287feed5b79bd630d423e59efadb43da9653adefef218 ais-lpu-client_pfx_x86_v01.tar.xz
|
||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
||||
# winetricks vcrun2005 vcrun2008 dotnet20sp2 dotnet40 mfc42 7zip
|
||||
@@ -216,11 +213,15 @@ d16c300b5451e4fad6eeebeca0949367a7bdf1cb1878fc51f0f9dee33744d3a7 emias_pfx_x64_
|
||||
# create with wine-10.18.1-alt1-wow64 (universal user: xuser)
|
||||
# winetricks crypt32
|
||||
|
||||
66a31bf72aac7354956c0ce8ddb9a2858b291bb9c8b94229b0820b0119ced97f olimp_pfx_x86_v01.tar.xz
|
||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
||||
# winetricks jet40 dotnet45 corefonts lucida opensymbol tahoma cjkfonts mdac28 msxml4 native_oleaut32 vcrun2005
|
||||
49cfb047297c958c7005afa0c4ced371e867b33aca33ad7572ecf7dc7b64552a olimp_pfx_x86_v04.tar.xz
|
||||
# create with wine-10.18.1-alt2-i586
|
||||
# winetricks jet40 dotnet45 corefonts lucida opensymbol tahoma cjkfonts mdac28 msxml4 native_oleaut32 vcrun2005 ie8 itss
|
||||
# + psqlodbc_x86.msi installed from script
|
||||
|
||||
4fc8ba95190d7d2cd05f60f29fe6af801f99bf046ab75bccd82bf48a600d5fc4 scadoffice_pfx_x64_v06.tar.xz
|
||||
# create with wine-10.18.1-alt1-wow64 (universal user: xuser)
|
||||
# winetricks msxml6 gdiplus vcrun6sp6 vcrun2005 ucrtbase2019 vcrun2019 d3dx9 d3dx11_43 d3dx11_42 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 dotnet40 dotnet48 riched20 riched30 msls31 richtx32
|
||||
|
||||
##### ADDONS #####
|
||||
# addons with ODBC, SSH, *.reg
|
||||
0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb scadoffice_addons_v02.tar.xz
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа «Декларация» позволяет автоматически формировать налоговые декларации по форме 3-НДФЛ. В процессе заполнения Вами данных программа автоматически проверяет их корректность, что уменьшает вероятность появления ошибки.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="declaration"
|
||||
export PROG_NAME="Декларация"
|
||||
export PROG_ICON="declarac-2"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Программное обеспечение для 3D-графики, предназначенное для проектирования освещения. (Версия 4.4.0.2)
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="dialux"
|
||||
export PROG_NAME="DIALux"
|
||||
export PROG_ICON="dialux"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Удобная программа для создания двухмерных схем и чертежей. Основной акцент сделан на проектировании систем тепло-, водо- и газоснабжения, водоочистки, автоматизированных систем управления технологическими процессами (АСУТП), а также планов эвакуации при пожаре и авариях.
|
||||
########################################################################
|
||||
export PROG_URL="https://easymnemo.com"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="easymnemo"
|
||||
export PROG_NAME="Easymnemo"
|
||||
export PROG_ICON="easymnemo"
|
||||
|
||||
@@ -2,46 +2,118 @@
|
||||
# info_ru: Программа автоматизации процесса подготовки юридическими и физическими лицами документов для представления в налоговые органы в электронной форме и на бумажном носителе.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="Налогоплательщик ЮЛ"
|
||||
export PROG_ICON="npul"
|
||||
export BASE_PFX="nalog_pfx_x64_v01"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win64"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_XDG_OPEN="doc"
|
||||
export INSTALL_DLL="msxml4 msxml6 corefonts wsh57 gdiplus"
|
||||
export INSTALL_DLL="msxml4 msxml6 corefonts wsh57 gdiplus vb6run"
|
||||
|
||||
try_get_page "https://data.nalog.ru/rn77/program/5961229/"
|
||||
VER_MSI=$(read_page | grep -oP 'NalogUL\d+\.msi' | tail -n 1 | grep -oP '\d+')
|
||||
VER_MSI_URL="${VER_MSI:0:1}.${VER_MSI:1}" # 492 → 4.92
|
||||
VER_EXE=$(read_page | grep -oP 'NalogUL\d+\.exe' | tail -n 1 | grep -oP '\d+')
|
||||
VER_EXE_URL="${VER_EXE:0:1}.${VER_EXE:1:2}.${VER_EXE:3}" # 4924 → 4.92.4
|
||||
HTML_CONTENT=$(read_page)
|
||||
|
||||
AUTOINSTALL_MSI="${WH_TMP_DIR}/NalogUL${VER_MSI}.msi"
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/NalogUL${VER_EXE}.exe"
|
||||
# Извлекаем все версии одним проходом (и 3, и 4 цифры, и MSI, и EXE)
|
||||
declare -A VERSIONS
|
||||
while IFS= read -r match; do
|
||||
if [[ -n "$match" ]]; then
|
||||
ver=$(echo "$match" | grep -oP '\d+')
|
||||
ext="${match##*.}"
|
||||
digits="${#ver}"
|
||||
VERSIONS["${digits}_${ext}"]="$ver"
|
||||
fi
|
||||
done < <(echo "$HTML_CONTENT" | grep -oP 'NalogUL\d{3,4}\.(msi|exe)')
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_URL}/NalogUL${VER_MSI}.msi" "${AUTOINSTALL_MSI}" ; then
|
||||
wine_run_install "${AUTOINSTALL_MSI}" /quiet INSTALLDIR="c:\npul"
|
||||
try_remove_file "${AUTOINSTALL_MSI}"
|
||||
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "Печать НД с PDF417*.msi")"
|
||||
wine_run_install "${PRINT_INSTALLER}" "/q"
|
||||
|
||||
# Процедуры конвертации, индексация данных. По завершении процедур программа сама закроется. Признаком успешного завершения будет отсутствие в папке с программой файла setupmarker.ini. Если не принять процедуру, .exe файл обновления не установиться.
|
||||
wine_run_install "$DRIVE_C/npul/INPUTDOC/inputdoc.exe" go.ini
|
||||
#TODO: Сделать запуск процедуры в тихом режиме.
|
||||
# Версия программы (3 цифры, приоритет MSI)
|
||||
if [[ -n "${VERSIONS[3_msi]}" ]]; then
|
||||
PROG_VER="${VERSIONS[3_msi]}"
|
||||
PROG_EXT="msi"
|
||||
elif [[ -n "${VERSIONS[3_exe]}" ]]; then
|
||||
PROG_VER="${VERSIONS[3_exe]}"
|
||||
PROG_EXT="exe"
|
||||
else
|
||||
print_error "Не найдена установочная версия программы"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$VER_EXE" ]] \
|
||||
&& try_download "https://data.nalog.ru/files/nalul/${VER_EXE_URL}/NalogUL${VER_EXE}.exe" "${AUTOINSTALL_EXE}"
|
||||
then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" "/SILENT"
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
# Версия обновления (4 цифры, приоритет EXE)
|
||||
if [[ -n "${VERSIONS[4_exe]}" ]]; then
|
||||
UPDATE_VER="${VERSIONS[4_exe]}"
|
||||
UPDATE_EXT="exe"
|
||||
elif [[ -n "${VERSIONS[4_msi]}" ]]; then
|
||||
UPDATE_VER="${VERSIONS[4_msi]}"
|
||||
UPDATE_EXT="msi"
|
||||
else
|
||||
UPDATE_VER=""
|
||||
UPDATE_EXT=""
|
||||
fi
|
||||
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "Печать НД с PDF417*.msi" | tail -n 1)"
|
||||
# Формируем URL пути
|
||||
PROG_URL_PATH="${PROG_VER:0:1}.${PROG_VER:1}"
|
||||
AUTOINSTALL_PROG="${WH_TMP_DIR}/NalogUL${PROG_VER}.${PROG_EXT}"
|
||||
|
||||
if [[ -n "$UPDATE_VER" ]]; then
|
||||
UPDATE_URL_PATH="${UPDATE_VER:0:1}.${UPDATE_VER:1:2}.${UPDATE_VER:3}"
|
||||
AUTOINSTALL_UPDATE="${WH_TMP_DIR}/NalogUL${UPDATE_VER}.${UPDATE_EXT}"
|
||||
fi
|
||||
|
||||
prepair_wine
|
||||
|
||||
# Устанавливаем основную программу
|
||||
if [[ "$PROG_EXT" == "msi" ]]; then
|
||||
if try_download "https://data.nalog.ru/files/nalul/${PROG_URL_PATH}/NalogUL${PROG_VER}.msi" "${AUTOINSTALL_PROG}"; then
|
||||
wine_run_install "${AUTOINSTALL_PROG}" /quiet /norestart INSTALLDIR="c:\npul"
|
||||
try_remove_file "${AUTOINSTALL_PROG}"
|
||||
else
|
||||
print_error "Не удалось скачать установочный файл MSI"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if try_download "https://data.nalog.ru/files/nalul/${PROG_URL_PATH}/NalogUL${PROG_VER}.exe" "${AUTOINSTALL_PROG}"; then
|
||||
wine_run_install "${AUTOINSTALL_PROG}" /VERYSILENT /NORESTART /DIR="c:\npul"
|
||||
try_remove_file "${AUTOINSTALL_PROG}"
|
||||
else
|
||||
print_error "Не удалось скачать установочный файл EXE"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Устанавливаем печать PDF417
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "Печать НД с PDF417*.msi" | tail -n 1)"
|
||||
if [[ -n "$PRINT_INSTALLER" ]]; then
|
||||
wine_run_install "${PRINT_INSTALLER}" "/q"
|
||||
fi
|
||||
|
||||
# Процедуры конвертации, индексация данных
|
||||
wine_run_install "$DRIVE_C/npul/INPUTDOC/inputdoc.exe" go.ini
|
||||
|
||||
# Устанавливаем обновление (если есть)
|
||||
if [[ -n "$UPDATE_VER" ]]; then
|
||||
if [[ "$UPDATE_EXT" == "msi" ]]; then
|
||||
if try_download "https://data.nalog.ru/files/nalul/${UPDATE_URL_PATH}/NalogUL${UPDATE_VER}.msi" "${AUTOINSTALL_UPDATE}"; then
|
||||
wine_run_install "${AUTOINSTALL_UPDATE}" /quiet /norestart
|
||||
try_remove_file "${AUTOINSTALL_UPDATE}"
|
||||
|
||||
# После обновления может появиться новая версия печати
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "Печать НД с PDF417*.msi" | tail -n 1)"
|
||||
if [[ -n "$PRINT_INSTALLER" ]]; then
|
||||
wine_run_install "${PRINT_INSTALLER}" /quiet /norestart
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if try_download "https://data.nalog.ru/files/nalul/${UPDATE_URL_PATH}/NalogUL${UPDATE_VER}.exe" "${AUTOINSTALL_UPDATE}"; then
|
||||
wine_run_install "${AUTOINSTALL_UPDATE}" /VERYSILENT /NORESTART
|
||||
try_remove_file "${AUTOINSTALL_UPDATE}"
|
||||
|
||||
# После обновления может появиться новая версия печати
|
||||
PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "Печать НД с PDF417*.msi" | tail -n 1)"
|
||||
if [[ -n "$PRINT_INSTALLER" ]]; then
|
||||
wine_run_install "${PRINT_INSTALLER}" /quiet /norestart
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
print_info "Дополнительных обновлений не требуется."
|
||||
fi
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Подготовка документов для государственной регистрации (ППДГР)
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="ppdgr2"
|
||||
export PROG_NAME="ППДГР-2"
|
||||
export PROG_ICON="ppdgr"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Цифровая платформа для обучения и оценки специалистов нефтегазовой отрасли.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export PROG_NAME="РТСИМ.Карьера"
|
||||
export WINEPREFIX="rtsim"
|
||||
export PROG_ICON="rtsim"
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
# info_ru: SCAD Office — это программный комплекс для расчёта строительных конструкций.
|
||||
########################################################################
|
||||
export PROG_URL="https://scadoffice.ru"
|
||||
export WH_WINE_USE="wine-8.8-staging-amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-scadoffice-wow64"
|
||||
export WINEPREFIX="scadoffice"
|
||||
export PROG_NAME="SCAD Office"
|
||||
export PROG_ICON="scadoffice"
|
||||
export BASE_PFX="none"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export BASE_PFX="scadoffice_pfx_x64_v06"
|
||||
export WH_WINDOWS_VER="7"
|
||||
export WINEARCH="win64"
|
||||
export INSTALL_DLL="dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6" #dotnet20
|
||||
export WH_XDG_OPEN="rtf"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Справочник кодов обозначения налоговых органов для целей учета налогоплательщиков
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="soun"
|
||||
export PROG_NAME="СОУН"
|
||||
export PROG_ICON="soun"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Программный комплекс для энергетики.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine-9.0.14-alt1-amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-amd64"
|
||||
export WINEPREFIX="swmanmodus"
|
||||
export BASE_PFX="none"
|
||||
export WH_WINDOWS_VER="10"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Программный комплекс СуперОкна для фабрик по изготовлению окон и дверей.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="swnd"
|
||||
export PROG_NAME="СуперОкна 8"
|
||||
export PROG_ICON="swnd"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Бесплатная версия программы СуперОкна для небольших предприятий.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-i586"
|
||||
export WINEPREFIX="swnd"
|
||||
export PROG_NAME="СуперОкна 8 бесплатная"
|
||||
export PROG_ICON="swnd"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: Программа проверки файлов на соответствие форматам представления в электронном виде налоговых деклараций, бухгалтерской отчетности.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.nalog.gov.ru"
|
||||
export WH_WINE_USE="wine-10.18.1-alt1-wow64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-wow64"
|
||||
export WINEPREFIX="nalog"
|
||||
export PROG_NAME="Тестер"
|
||||
export PROG_ICON="tester"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# info_ru: ZuluGIS 2021 Инженерные расчёты (Полный) 64-бит. Включает ZuluGIS, пакеты расчетов ZuluThermo, ZuluHydro, ZuluDrain, ZuluGaz, ZuluSteam, библиотеки ZuluXTools и ZuluNetTools. Дополнительно в состав пакета входит Microsoft SQL Server Express LocalDB 2012.
|
||||
########################################################################
|
||||
export PROG_URL="https://www.politerm.com"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WH_WINE_USE="wine-10.0-alt-tkg-amd64"
|
||||
export PROG_NAME="ZuluGIS 2021"
|
||||
export WINEPREFIX="zulugis"
|
||||
export PROG_ICON="zulugis"
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
"""
|
||||
GUI пакет для winehelper.
|
||||
|
||||
Модульная структура:
|
||||
- dialogs: Диалоги (выбор версий, настройки и т.д.)
|
||||
- widgets: Кастомные виджеты
|
||||
- services: Бизнес-логика (кэширование, установка и т.д.)
|
||||
- parsers: Парсеры (sha256sum.list, winetricks output)
|
||||
- utils: Утилиты (обработчики логов и т.д.)
|
||||
"""
|
||||
|
||||
# Parsers
|
||||
from winehelperqt.dialogs.noexec_warning import NoExecWarningDialog
|
||||
|
||||
# Dialogs
|
||||
from winehelperqt.dialogs.winetricks_manager import WinetricksManagerDialog
|
||||
from winehelperqt.parsers.script_parser import ScriptParser
|
||||
from winehelperqt.parsers.sha256_parser import Sha256Parser
|
||||
from winehelperqt.parsers.winetricks_parser import WinetricksOutputParser
|
||||
from winehelperqt.services.app_launcher import AppLauncher
|
||||
from winehelperqt.services.desktop_file_manager import DesktopFileManager
|
||||
from winehelperqt.services.prefix_manager import PrefixManager
|
||||
from winehelperqt.services.script_manager import ScriptInfo, ScriptManager
|
||||
from winehelperqt.services.settings_manager import SettingsManager
|
||||
|
||||
# Services
|
||||
from winehelperqt.services.winetricks_service import WinetricksCacheService, WinetricksLogReader
|
||||
from winehelperqt.utils.cache_service import CacheService, FileCacheService
|
||||
|
||||
# Utils
|
||||
from winehelperqt.utils.log_handler import LogProgressHandler, MultiLogHandler
|
||||
|
||||
# Widgets
|
||||
from winehelperqt.widgets.icon_manager import IconManager
|
||||
|
||||
__all__ = [
|
||||
# Parsers
|
||||
"Sha256Parser",
|
||||
"WinetricksOutputParser",
|
||||
"ScriptParser",
|
||||
# Utils
|
||||
"LogProgressHandler",
|
||||
"MultiLogHandler",
|
||||
"CacheService",
|
||||
"FileCacheService",
|
||||
# Services
|
||||
"WinetricksCacheService",
|
||||
"WinetricksLogReader",
|
||||
"PrefixManager",
|
||||
"DesktopFileManager",
|
||||
"ScriptManager",
|
||||
"ScriptInfo",
|
||||
"AppLauncher",
|
||||
"SettingsManager",
|
||||
# Widgets
|
||||
"IconManager",
|
||||
# Dialogs
|
||||
"WinetricksManagerDialog",
|
||||
"NoExecWarningDialog",
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
"""
|
||||
Диалоги для winehelper GUI.
|
||||
"""
|
||||
|
||||
from winehelperqt.dialogs.base_version_dialog import (
|
||||
BaseVersionSelectionDialog,
|
||||
ComponentVersionSelectionDialogBase,
|
||||
WineVersionSelectionDialogBase,
|
||||
)
|
||||
from winehelperqt.dialogs.command_dialog import CommandDialog
|
||||
from winehelperqt.dialogs.component_version import ComponentVersionSelectionDialog
|
||||
from winehelperqt.dialogs.create_log import CreateLogDialog
|
||||
from winehelperqt.dialogs.create_prefix import CreatePrefixDialog
|
||||
from winehelperqt.dialogs.file_associations import FileAssociationsDialog
|
||||
from winehelperqt.dialogs.noexec_warning import NoExecWarningDialog
|
||||
from winehelperqt.dialogs.settings import AdditionalSettingsDialog, AppAdditionalSettingsDialog
|
||||
from winehelperqt.dialogs.windows_version import WindowsVersionSelectionDialog
|
||||
from winehelperqt.dialogs.wine_version import WineVersionSelectionDialog
|
||||
from winehelperqt.dialogs.winetricks_manager import WinetricksManagerDialog
|
||||
|
||||
__all__ = [
|
||||
# Base classes
|
||||
"BaseVersionSelectionDialog",
|
||||
"WineVersionSelectionDialogBase",
|
||||
"ComponentVersionSelectionDialogBase",
|
||||
# Dialogs
|
||||
"CommandDialog",
|
||||
"WinetricksManagerDialog",
|
||||
"WineVersionSelectionDialog",
|
||||
"ComponentVersionSelectionDialog",
|
||||
"CreatePrefixDialog",
|
||||
"FileAssociationsDialog",
|
||||
"AdditionalSettingsDialog",
|
||||
"AppAdditionalSettingsDialog",
|
||||
"WindowsVersionSelectionDialog",
|
||||
"NoExecWarningDialog",
|
||||
"CreateLogDialog",
|
||||
]
|
||||
@@ -0,0 +1,307 @@
|
||||
"""
|
||||
Базовые классы для диалогов выбора версий.
|
||||
Устраняет дублирование кода между WineVersionSelectionDialog и ComponentVersionSelectionDialog.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from PyQt5.QtCore import Qt, pyqtSignal
|
||||
from PyQt5.QtWidgets import (
|
||||
QDialog,
|
||||
QGridLayout,
|
||||
QHBoxLayout,
|
||||
QLabel,
|
||||
QLineEdit,
|
||||
QMessageBox,
|
||||
QPushButton,
|
||||
QScrollArea,
|
||||
QTabWidget,
|
||||
QVBoxLayout,
|
||||
QWidget,
|
||||
)
|
||||
|
||||
from winehelperqt.logger import get_logger
|
||||
from winehelperqt.parsers.sha256_parser import Sha256Parser
|
||||
from winehelperqt.utils.environment import EnvironmentConfig
|
||||
from winehelperqt.utils.grid_utils import GridUtils
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
class BaseVersionSelectionDialog(QDialog):
|
||||
"""
|
||||
Базовый класс для диалогов выбора версий.
|
||||
|
||||
Предоставляет общую функциональность:
|
||||
- Поле поиска с фильтрацией
|
||||
- Сетка кнопок с версиями
|
||||
- Базовая логика выбора версии
|
||||
"""
|
||||
|
||||
NUM_COLUMNS = 3
|
||||
|
||||
# Кэш версии системного Wine на время сессии (не меняется между открытиями диалога)
|
||||
_system_wine_version_cache = None
|
||||
|
||||
version_selected = pyqtSignal(str)
|
||||
|
||||
def __init__(self, title, parent=None, min_width=600, min_height=400):
|
||||
"""
|
||||
Инициализирует базовый диалог выбора версий.
|
||||
"""
|
||||
super().__init__(parent)
|
||||
|
||||
self.setWindowTitle(title)
|
||||
self.setMinimumSize(min_width, min_height)
|
||||
self.setModal(True)
|
||||
|
||||
self.selected_version = None
|
||||
self.buttons = []
|
||||
self.search_edit = None
|
||||
self.main_layout = None
|
||||
|
||||
self._setup_ui()
|
||||
|
||||
def _get_sha256_path(self):
|
||||
"""Возвращает путь к файлу sha256sum.list."""
|
||||
data_path = EnvironmentConfig.DATA_PATH
|
||||
if data_path:
|
||||
return os.path.join(data_path, "sha256sum.list")
|
||||
# Фолбэк: явно разрешаем путь из расположения пакета
|
||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "sha256sum.list"))
|
||||
|
||||
def _setup_ui(self):
|
||||
"""Создает базовый UI диалога."""
|
||||
self.main_layout = QVBoxLayout(self)
|
||||
|
||||
self.search_edit = QLineEdit()
|
||||
self.search_edit.setPlaceholderText("Поиск версии...")
|
||||
self.search_edit.textChanged.connect(self.filter_versions)
|
||||
self.main_layout.addWidget(self.search_edit)
|
||||
|
||||
self._create_version_container()
|
||||
|
||||
def _create_version_container(self):
|
||||
"""Создает контейнер для отображения версий."""
|
||||
raise NotImplementedError("Подкласс должен реализовать _create_version_container")
|
||||
|
||||
def load_versions(self):
|
||||
"""Загружает список версий."""
|
||||
raise NotImplementedError("Подкласс должен реализовать load_versions")
|
||||
|
||||
def filter_versions(self):
|
||||
"""Фильтрует версии по тексту поиска."""
|
||||
grid_layout = getattr(self, "grid_layout", None)
|
||||
GridUtils.filter_buttons(self.buttons, self.search_edit.text(), grid_layout, self.NUM_COLUMNS)
|
||||
|
||||
def on_version_selected(self, version_name):
|
||||
"""Обрабатывает выбор версии."""
|
||||
self.selected_version = version_name
|
||||
self.version_selected.emit(version_name)
|
||||
self.accept()
|
||||
|
||||
def get_selected_version(self):
|
||||
"""Возвращает выбранную версию."""
|
||||
return self.selected_version
|
||||
|
||||
@staticmethod
|
||||
def create_grid_buttons(
|
||||
grid_layout,
|
||||
versions_list,
|
||||
on_click_callback,
|
||||
start_row=0,
|
||||
num_columns=3,
|
||||
is_download_tab=False,
|
||||
version_filter=None,
|
||||
):
|
||||
"""Создает сетку кнопок для версий."""
|
||||
buttons = []
|
||||
row, col = start_row, 0
|
||||
|
||||
for version_data in versions_list:
|
||||
if isinstance(version_data, tuple):
|
||||
display_name, value_name = version_data
|
||||
else:
|
||||
display_name = value_name = version_data
|
||||
|
||||
btn = QPushButton(display_name)
|
||||
btn.clicked.connect(lambda checked, vn=value_name: on_click_callback(vn))
|
||||
|
||||
if version_filter and not is_download_tab:
|
||||
should_disable = version_filter(value_name)
|
||||
if should_disable:
|
||||
btn.setEnabled(False)
|
||||
btn.setToolTip("Эта версия несовместима с выбранной архитектурой.")
|
||||
|
||||
grid_layout.addWidget(btn, row, col)
|
||||
buttons.append(btn)
|
||||
|
||||
col += 1
|
||||
if col >= num_columns:
|
||||
col = 0
|
||||
row += 1
|
||||
|
||||
return buttons
|
||||
|
||||
|
||||
class WineVersionSelectionDialogBase(BaseVersionSelectionDialog):
|
||||
"""
|
||||
Базовый класс для диалога выбора версии Wine.
|
||||
"""
|
||||
|
||||
def __init__(self, architecture, parent=None):
|
||||
"""
|
||||
Инициализирует диалог выбора версии Wine.
|
||||
"""
|
||||
self.architecture = architecture
|
||||
self.wine_versions_data = {}
|
||||
self.system_wine_display_name = "Системная версия"
|
||||
self.selected_display_text = None
|
||||
|
||||
super().__init__(
|
||||
title=f"Выбор версии Wine для {architecture} префикса", parent=parent, min_width=900, min_height=500
|
||||
)
|
||||
|
||||
def _create_version_container(self):
|
||||
"""Создает контейнер с вкладками для версий Wine."""
|
||||
self.main_tabs = QTabWidget()
|
||||
self.main_layout.addWidget(self.main_tabs)
|
||||
self.load_versions()
|
||||
|
||||
def load_versions(self):
|
||||
"""Загружает и отображает версии Wine."""
|
||||
self.main_tabs.clear()
|
||||
|
||||
loading_widget = QWidget()
|
||||
loading_layout = QVBoxLayout(loading_widget)
|
||||
status_label = QLabel("Загрузка, пожалуйста, подождите...")
|
||||
status_label.setAlignment(Qt.AlignCenter)
|
||||
loading_layout.addWidget(status_label)
|
||||
self.main_tabs.addTab(loading_widget, "Загрузка...")
|
||||
self.main_tabs.setEnabled(False)
|
||||
|
||||
self._parse_sha256_list()
|
||||
self.populate_ui()
|
||||
|
||||
self.main_tabs.setEnabled(True)
|
||||
|
||||
def _parse_sha256_list(self):
|
||||
"""Парсит sha256sum.list для получения списка версий Wine."""
|
||||
sha256_path = self._get_sha256_path()
|
||||
self.wine_versions_data = Sha256Parser.parse_wine_versions(sha256_path)
|
||||
|
||||
if not self.wine_versions_data:
|
||||
QMessageBox.warning(self, "Ошибка", f"Файл с версиями не найден или пуст:\n{sha256_path}")
|
||||
|
||||
def _get_installed_versions(self):
|
||||
"""Возвращает список локально установленных версий Wine."""
|
||||
dist_path = EnvironmentConfig.WH_DIST_DIR
|
||||
if not dist_path:
|
||||
return []
|
||||
return Sha256Parser.get_installed_versions(dist_path)
|
||||
|
||||
def _get_system_wine_version(self):
|
||||
"""Получает версию системного Wine (с кэшированием на время сессии)."""
|
||||
if BaseVersionSelectionDialog._system_wine_version_cache is not None:
|
||||
return BaseVersionSelectionDialog._system_wine_version_cache
|
||||
|
||||
version = "Системная версия"
|
||||
if shutil.which("wine"):
|
||||
try:
|
||||
result = subprocess.run(
|
||||
["wine", "--version"], capture_output=True, text=True, check=True, encoding="utf-8"
|
||||
)
|
||||
version = result.stdout.strip()
|
||||
logger.debug("Системный wine: %s", version)
|
||||
except (FileNotFoundError, subprocess.CalledProcessError) as e:
|
||||
logger.warning("Не удалось получить версию системного wine: %s", e)
|
||||
|
||||
BaseVersionSelectionDialog._system_wine_version_cache = version
|
||||
return version
|
||||
|
||||
def _is_version_compatible(self, version_name):
|
||||
"""Проверяет совместимость версии с выбранной архитектурой."""
|
||||
is_win64_prefix = self.architecture == "win64"
|
||||
is_win32_prefix = self.architecture == "win32"
|
||||
re_32bit_version = re.compile(r"i[3-6]86|i586")
|
||||
|
||||
if is_win64_prefix and re_32bit_version.search(version_name):
|
||||
return False
|
||||
|
||||
if is_win32_prefix:
|
||||
if version_name == "system" or "wow64" in version_name:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def populate_ui(self):
|
||||
"""Заполняет UI версиями Wine."""
|
||||
raise NotImplementedError("Подкласс должен реализовать populate_ui")
|
||||
|
||||
|
||||
class ComponentVersionSelectionDialogBase(BaseVersionSelectionDialog):
|
||||
"""
|
||||
Базовый класс для диалога выбора версии компонента (DXVK, VKD3D).
|
||||
"""
|
||||
|
||||
def __init__(self, component_group, title, parent=None, add_extra_options=True):
|
||||
"""
|
||||
Инициализирует диалог выбора версии компонента.
|
||||
"""
|
||||
self.component_group = component_group
|
||||
self.versions_data = []
|
||||
self.add_extra_options = add_extra_options
|
||||
|
||||
super().__init__(title=title, parent=parent, min_width=700, min_height=400)
|
||||
|
||||
def _create_version_container(self):
|
||||
"""Создает контейнер для версий компонента."""
|
||||
self.scroll_area = QScrollArea()
|
||||
self.scroll_area.setWidgetResizable(True)
|
||||
self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||
self.main_layout.addWidget(self.scroll_area)
|
||||
|
||||
scroll_content = QWidget()
|
||||
self.scroll_area.setWidget(scroll_content)
|
||||
|
||||
self.grid_layout = QGridLayout(scroll_content)
|
||||
self.grid_layout.setAlignment(Qt.AlignTop)
|
||||
|
||||
self.load_versions(start_row=0)
|
||||
|
||||
if self.add_extra_options:
|
||||
self._create_action_buttons()
|
||||
|
||||
def _create_action_buttons(self):
|
||||
"""Создает кнопки действий (Удалить, Отмена)."""
|
||||
button_layout = QHBoxLayout()
|
||||
|
||||
uninstall_btn = QPushButton("Удалить из префикса")
|
||||
uninstall_btn.setToolTip("Удаляет текущую установленную версию компонента из префикса.")
|
||||
uninstall_btn.clicked.connect(lambda: self.on_version_selected("none"))
|
||||
button_layout.addWidget(uninstall_btn)
|
||||
|
||||
button_layout.addStretch(1)
|
||||
|
||||
cancel_button = QPushButton("Отмена")
|
||||
cancel_button.clicked.connect(self.reject)
|
||||
button_layout.addWidget(cancel_button)
|
||||
|
||||
self.main_layout.addLayout(button_layout)
|
||||
|
||||
def load_versions(self, start_row=0):
|
||||
"""Загружает и отображает версии компонента."""
|
||||
self._parse_sha256_list()
|
||||
self.populate_ui(start_row)
|
||||
|
||||
def _parse_sha256_list(self):
|
||||
"""Парсит sha256sum.list для получения списка версий компонента."""
|
||||
sha256_path = self._get_sha256_path()
|
||||
self.versions_data = Sha256Parser.parse_component_versions(sha256_path, self.component_group)
|
||||
|
||||
def populate_ui(self, start_row):
|
||||
"""Заполняет UI версиями компонента."""
|
||||
raise NotImplementedError("Подкласс должен реализовать populate_ui")
|
||||
@@ -0,0 +1,47 @@
|
||||
from PyQt5.QtCore import QProcess
|
||||
from PyQt5.QtWidgets import QDialog
|
||||
|
||||
from winehelperqt.utils.dialog_utils import DialogUtils
|
||||
|
||||
|
||||
class CommandDialog(QDialog):
|
||||
"""Модальный диалог для выполнения команд winehelper с защитой от случайного закрытия."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self._process = None
|
||||
|
||||
def set_process(self, process):
|
||||
self._process = process
|
||||
|
||||
def closeEvent(self, event):
|
||||
running = False
|
||||
if self._process is not None:
|
||||
try:
|
||||
running = self._process.state() == QProcess.Running
|
||||
except RuntimeError:
|
||||
running = False
|
||||
if running:
|
||||
proc = self._process
|
||||
if not DialogUtils.confirm(
|
||||
self,
|
||||
"Прервать выполнение?",
|
||||
"Процесс ещё выполняется.\nВы действительно хотите прервать его?",
|
||||
yes_text="Да, прервать",
|
||||
no_text="Нет",
|
||||
):
|
||||
event.ignore()
|
||||
return
|
||||
if proc is None:
|
||||
event.accept()
|
||||
return
|
||||
try:
|
||||
proc.terminate()
|
||||
if not proc.waitForFinished(10000):
|
||||
proc.kill()
|
||||
proc.waitForFinished(5000)
|
||||
except RuntimeError:
|
||||
pass
|
||||
event.accept()
|
||||
else:
|
||||
event.accept()
|
||||