From b44fcdb63e9bb2556be048260bd0d48af7db7f46 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sun, 3 Aug 2025 11:32:41 +0600 Subject: [PATCH] the license agreement has been placed in a separate file --- LICENSE_AGREEMENT | 14 ++++++++++++++ winehelper | 24 ++++++++++-------------- winehelper_gui.py | 44 ++++++++++++++++++-------------------------- 3 files changed, 42 insertions(+), 40 deletions(-) create mode 100644 LICENSE_AGREEMENT diff --git a/LICENSE_AGREEMENT b/LICENSE_AGREEMENT new file mode 100644 index 0000000..b42c2c1 --- /dev/null +++ b/LICENSE_AGREEMENT @@ -0,0 +1,14 @@ +Лицензионные соглашения использования сторонних компонентов: + +Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, +могут быть защищены авторским правом или лицензионными соглашениями. Вы обязаны +самостоятельно убедиться в законности использования этих компонентов в вашей +юрисдикции. + +Мы не несём ответственности за нарушение лицензионных соглашений, связанное с +использованием подготовленного префикса, а так же за программное обеспечение, +поставляемое из сторонних источников. + +Подтверждая продолжение установки, вы соглашаетесь, что ознакомились с данным +отказом от ответственности и принимаете все риски, связанные с использованием +программного обеспечения. diff --git a/winehelper b/winehelper index 725145c..8cf7d98 100755 --- a/winehelper +++ b/winehelper @@ -7,7 +7,7 @@ if [[ $(id -u) -eq 0 ]] ; then fi ##### DEFAULT PATH ##### -export SCRIPT_NAME USER_WORK_PATH RUN_SCRIPT DATA_PATH CHANGELOG_FILE WH_ICON_PATH LICENSE_FILE +export SCRIPT_NAME USER_WORK_PATH RUN_SCRIPT DATA_PATH CHANGELOG_FILE WH_ICON_PATH LICENSE_FILE AGREEMENT SCRIPT_NAME="$(basename "$0")" if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then @@ -18,6 +18,7 @@ if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then CHANGELOG_FILE="$(realpath "/usr/share/doc/winehelper"-*/CHANGELOG)" WH_ICON_PATH="$DATA_PATH/image/gui/winehelper.svg" LICENSE_FILE="$(realpath "/usr/share/doc/winehelper"-*/LICENSE)" + AGREEMENT="$(realpath "/usr/share/doc/winehelper"-*/LICENSE_AGREEMENT)" else # переменные для тестового запуска WineHelper из репозитория USER_WORK_PATH="$HOME/test-$SCRIPT_NAME" @@ -26,6 +27,7 @@ else CHANGELOG_FILE="$DATA_PATH/CHANGELOG" WH_ICON_PATH="$DATA_PATH/image/gui/winehelper-devel.svg" LICENSE_FILE="$DATA_PATH/LICENSE" + AGREEMENT="$DATA_PATH/LICENSE_AGREEMENT" # минимальная проверка синтаксиса скриптов for self_check_script in "$RUN_SCRIPT" \ @@ -367,20 +369,14 @@ print_license_agreement () { then return 0 fi + if [[ -f "$AGREEMENT" ]]; then + echo + print_warning "$(cat "$AGREEMENT")" + else + fatal "Файл лицензионного соглашения не найден: $AGREEMENT" + fi + echo - print_warning "Лицензионные соглашения использования сторонних компонентов: - -Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, могут -быть защищены авторским правом или лицензионными соглашениями. Вы обязаны самостоятельно -убедиться в законности использования этих компонентов в вашей юрисдикции. - -Мы не несём ответственности за нарушение лицензионных соглашений, связанное с использованием -подготовленного префикса, а так же за программное обеспечение поставляемого из сторонних источников. - -Подтверждая продолжение установки, вы соглашаетесь что ознакомились с данным отказом от -ответственности и принимаете все риски, связанные с использованием программного обеспечения. -" - if print_confirmation "Подтвердите продолжение установки" ; then touch "$license_agreement_file" chmod 600 "$license_agreement_file" diff --git a/winehelper_gui.py b/winehelper_gui.py index 2d9132c..f6d7dc7 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -4,6 +4,7 @@ import subprocess import sys import shlex import shutil +import html from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,QPushButton, QLabel, QTabWidget, QTextEdit, QFileDialog, QMessageBox, QLineEdit, QCheckBox, QStackedWidget, QScrollArea, QGridLayout, QFrame, QDialog, QTextBrowser) @@ -20,6 +21,7 @@ class Var: CHANGELOG_FILE = os.environ.get("CHANGELOG_FILE") WH_ICON_PATH = os.environ.get("WH_ICON_PATH") LICENSE_FILE = os.environ.get("LICENSE_FILE") + LICENSE_AGREEMENT_FILE = os.environ.get("AGREEMENT") class WineHelperGUI(QMainWindow): def __init__(self): @@ -604,7 +606,6 @@ class WineHelperGUI(QMainWindow): # Подвкладка "Лицензия" license_tab = QWidget() license_layout = QVBoxLayout(license_tab) - import html license_text = QTextBrowser() license_text.setOpenExternalLinks(True) @@ -1255,38 +1256,29 @@ class WineHelperGUI(QMainWindow): license_page = QWidget() license_layout = QVBoxLayout(license_page) - license_text = QTextEdit() - license_text.setReadOnly(True) + license_text = QTextBrowser() - # Получаем текст лицензии из скрипта winehelper - script_path = os.path.join(Var.DATA_PATH, "winehelper") - license_content = "" + # Получаем текст лицензионного соглашения из файла try: - with open(script_path, 'r', encoding='utf-8') as f: - capturing = False - for line in f: - if 'print_warning "Лицензионные соглашения использования сторонних компонентов:' in line: - capturing = True - continue + license_file_path = Var.LICENSE_AGREEMENT_FILE + if not license_file_path or not os.path.exists(license_file_path): + raise FileNotFoundError - if capturing: - if 'Подтверждая продолжение установки' in line: - break - # Очищаем строку от лишних символов - clean_line = line.strip() - clean_line = clean_line.replace('print_warning "', '').replace('\\n', '\n') - clean_line = clean_line.rstrip('"') - license_content += clean_line + '\n' + with open(license_file_path, 'r', encoding='utf-8') as f: + license_content = f.read() + + escaped_license_content = html.escape(license_content) license_text.setHtml(f""" -

Лицензионные соглашения использования сторонних компонентов:

-

{license_content}

+
{escaped_license_content}
""") + except (FileNotFoundError, TypeError): + license_text.setHtml(f'

Лицензионные соглашения

Не удалось загрузить файл лицензионного соглашения по пути:
{Var.LICENSE_AGREEMENT_FILE}

') except Exception as e: - print(f"Ошибка чтения файла для извлечения лицензии: {str(e)}") - license_text.setHtml(""" + print(f"Ошибка чтения файла лицензии: {str(e)}") + license_text.setHtml(f"""

Лицензионные соглашения

-

Не удалось загрузить текст лицензионного соглашения.

+

Произошла ошибка при чтении файла лицензии:
{str(e)}

""") license_layout.addWidget(license_text) @@ -1385,7 +1377,7 @@ class WineHelperGUI(QMainWindow): self.install_process.start(winehelper_path, args) if not self.install_process.waitForStarted(3000): raise RuntimeError("Не удалось запустить процесс установки") - self.append_log("Процесс установки успешно запущен...") + self.append_log("Процесс установки запущен...") except Exception as e: self.append_log(f"\n=== ОШИБКА: {str(e)} ===", is_error=True) QMessageBox.critical(self.install_dialog, "Ошибка", f"Не удалось запустить установку:\n{str(e)}")