Compare commits

...

12 Commits

Author SHA1 Message Date
Sergey Palcheh
92a682ba8a added a more explicit error message when installing dependencies 2025-09-02 10:44:37 +06:00
Sergey Palcheh
3381054c21 added a winehelper launch button when dependencies are successfully installed 2025-09-02 10:23:44 +06:00
Sergey Palcheh
76b7d4f046 removed the dependency installation success window 2025-09-02 10:11:47 +06:00
Sergey Palcheh
aeae544640 added 64bit versions of wine/proton to the 32bit prefix 2025-09-02 09:50:27 +06:00
Sergey Palcheh
eeb94523b3 the refresh list button has been removed 2025-09-02 09:33:35 +06:00
Sergey Palcheh
a2186b63cb renaming Proton/Wine Lg buttons to LG 2025-09-02 09:25:01 +06:00
Mikhail Tergoev
839b480c39 updated sha256sum.list 2025-09-01 12:06:10 +03:00
Mikhail Tergoev
83fe362b37 added all WINE, DXVK and VKD3D to sha256 list 2025-08-28 13:50:48 +03:00
Mikhail Tergoev
f7fdfca743 fixed typos and updated LICENSE_AGREEMENT 2025-08-26 12:01:35 +03:00
Mikhail Tergoev
ffc7098aba Merge branch 'minergenon-devel' 2025-08-26 11:13:21 +03:00
Mikhail Tergoev
50de9bdb14 Merge branch 'minergenon-tflex_wineprefix' 2025-08-26 11:12:30 +03:00
Sergey Palcheh
ddea68c11c renaming tflex prefixes 2025-08-13 10:01:18 +06:00
12 changed files with 47 additions and 53 deletions

View File

@@ -1,14 +1,14 @@
Лицензионные соглашения использования сторонних компонентов: Отказ от ответственности:
Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, Некоторые компоненты, устанавливаемые в префикс и необходимые для запуска
могут быть защищены авторским правом или лицензионными соглашениями. Вы обязаны приложений, могут быть защищены авторским правом или лицензионными
самостоятельно убедиться в законности использования этих компонентов в вашей соглашениями. Вы обязаны самостоятельно убедиться в законности использования
юрисдикции. этих компонентов в вашей юрисдикции.
Мы не несём ответственности за нарушение лицензионных соглашений, связанное с Мы не несём ответственности за нарушение лицензионных соглашений, связанное с
использованием подготовленного префикса, а так же за программное обеспечение, использованием подготовленного префикса, а также за программное обеспечение,
поставляемое из сторонних источников. полученное из сторонних источников.
Подтверждая продолжение установки, вы соглашаетесь, что ознакомились с данным Продолжая установку, вы подтверждаете, что ознакомились с данным отказом от
отказом от ответственности и принимаете все риски, связанные с использованием ответственности и принимаете все риски, связанные с использованием программного
программного обеспечения. обеспечения.

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -7,7 +7,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02" export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64" export WINEARCH="win64"
export WH_WINDOWS_VER="10" export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17" export WINEPREFIX="tflex"
export WH_XDG_OPEN="log" export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1" export WH_USE_MESA_GL_OVERRIDE="1"

0
sha256sum.list Executable file → Normal file
View File

View File

@@ -177,7 +177,7 @@ fi
##### CHECK NOEXEC FOR /HOME ##### ##### CHECK NOEXEC FOR /HOME #####
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога." fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine невозможен из домашнего каталога."
fi fi
##### ROOT ##### ##### ROOT #####
@@ -259,13 +259,13 @@ try_copy_dir () {
try_force_link_file () { try_force_link_file () {
if [[ ! -f "$1" ]] ; then if [[ ! -f "$1" ]] ; then
print_warning "нет файла для создания символьной ссылки: $1" print_warning "нет файла для создания символической ссылки: $1"
if [[ -f "$2" ]] ; then if [[ -f "$2" ]] ; then
try_remove_file "$2" try_remove_file "$2"
print_warning "удаляем символьную ссылку: $2" print_warning "удаляем символическую ссылку: $2"
fi fi
return 1 return 1
elif [[ -z "$2" ]] ; then fatal "нет пути для создания символьной ссылки на файл $1" elif [[ -z "$2" ]] ; then fatal "нет пути для создания символической ссылки на файл $1"
else else
try_remove_file "$2" try_remove_file "$2"
ln -s -f -r "$1" "$2" ln -s -f -r "$1" "$2"
@@ -275,11 +275,11 @@ try_force_link_file () {
} }
try_force_link_dir () { try_force_link_dir () {
if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для создания символьной сссылки" if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для создания символической сссылки"
elif [[ -z "$2" ]] ; then fatal "не указан путь для создания символьной ссылки на каталог $1" elif [[ -z "$2" ]] ; then fatal "не указан путь для создания символической ссылки на каталог $1"
else else
ln -s -f -r "$1" "$2" ln -s -f -r "$1" "$2"
[[ "$?" != 0 ]] && print_error "не удалось сделать символьную ссылку на каталог $1 по пути $2" || return 0 [[ "$?" != 0 ]] && print_error "не удалось сделать символическую ссылку на каталог $1 по пути $2" || return 0
fi fi
return 1 return 1
} }
@@ -328,7 +328,7 @@ try_get_page () {
|| grep -q "Forbidden" "$OUT_PAGE_TMP" || grep -q "Forbidden" "$OUT_PAGE_TMP"
then then
try_remove_file "$OUT_PAGE_TMP" try_remove_file "$OUT_PAGE_TMP"
fatal "Страница сайта $1 не доступна, или превышено количество запросов к странице." fatal "Страница сайта $1 не доступна или превышено количество запросов к странице."
else else
return 0 return 0
fi fi
@@ -1074,7 +1074,7 @@ init_wineprefix () {
if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then
create_new_dir "$WINEPREFIX" create_new_dir "$WINEPREFIX"
if [[ "$CLEAR_PREFIX" == "1" ]] if [[ "$CLEAR_PREFIX" == "1" ]]
then print_warning "Используется переменная \"CLEAR_PREFIX=1\" что принудительно создает чистый префикс с установкой компонентов с помощью winetricks." then print_warning "Используется переменная \"CLEAR_PREFIX=1\", которая принудительно создает чистый префикс с установкой компонентов с помощью winetricks."
elif [[ "$BASE_PFX" != "none" ]] elif [[ "$BASE_PFX" != "none" ]]
then get_base_pfx "$BASE_PFX" then get_base_pfx "$BASE_PFX"
fi fi
@@ -1165,7 +1165,7 @@ init_wineprefix () {
for ext in $WH_XDG_OPEN ; do for ext in $WH_XDG_OPEN ; do
get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system" get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system"
done done
print_info "Используется ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\"" print_info "Используются ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
else else
# удаление команды xdg-open из реестра # удаление команды xdg-open из реестра
get_and_set_reg_file --delete "$XDG_OPEN_REG" '@=' get_and_set_reg_file --delete "$XDG_OPEN_REG" '@='
@@ -1193,7 +1193,7 @@ init_wineprefix () {
"${cpcsp_proxy_cmd[@]}" | tee "$WINEPREFIX/cpcsp_setup.log" "${cpcsp_proxy_cmd[@]}" | tee "$WINEPREFIX/cpcsp_setup.log"
local CPCSP_EXIT_STATUS="${PIPESTATUS[0]}" local CPCSP_EXIT_STATUS="${PIPESTATUS[0]}"
if grep -q "failed to load /opt/cprocsp/" "$WINEPREFIX/cpcsp_setup.log" ; then if grep -q "failed to load /opt/cprocsp/" "$WINEPREFIX/cpcsp_setup.log" ; then
fatal "Проверьте правильность установки CryptoPro в системе.\n Инструкция: https://www.altlinux.org/CryptoPro" fatal "Проверьте правильность установки КриптоПро в системе.\n Инструкция: https://www.altlinux.org/CryptoPro"
fi fi
if [[ $CPCSP_EXIT_STATUS == "0" ]] ; then if [[ $CPCSP_EXIT_STATUS == "0" ]] ; then
@@ -1535,9 +1535,7 @@ select_wine_version() {
group_versions+=("$version_name") group_versions+=("$version_name")
fi fi
else # win32 else # win32
if [[ "$version_name" =~ i[3-6]86 ]]; then group_versions+=("$version_name")
group_versions+=("$version_name")
fi
fi fi
fi fi
done < "$sha256_file" done < "$sha256_file"
@@ -1717,7 +1715,7 @@ remove_winehelper () {
echo " Это удалит:" echo " Это удалит:"
echo " - Все настройки WineHelper" echo " - Все настройки WineHelper"
echo " - Все приложения/программы, установленные через WineHelper" echo " - Все приложения/программы, установленные через WineHelper"
echo " - Все ярлыки из меню и с рабочего стола созданные с помощью WineHelper" echo " - Все ярлыки из меню и с рабочего стола, созданные с помощью WineHelper"
echo "======================================================" echo "======================================================"
if print_confirmation "Продолжить?" ; then if print_confirmation "Продолжить?" ; then
echo "----------------------------------------------" echo "----------------------------------------------"

View File

@@ -340,13 +340,8 @@ class DependencyManager:
still_missing = missing_packages still_missing = missing_packages
if not still_missing: if not still_missing:
info_box = QMessageBox(dialog)
info_box.setWindowIcon(self.app_icon)
info_box.setIcon(QMessageBox.Information)
info_box.setWindowTitle("Успех")
info_box.setText("Все необходимые зависимости были успешно установлены.")
info_box.exec_()
installation_successful = True installation_successful = True
close_button.setText("Запустить WineHelper")
else: else:
warn_box = QMessageBox(dialog) warn_box = QMessageBox(dialog)
warn_box.setWindowIcon(self.app_icon) warn_box.setWindowIcon(self.app_icon)
@@ -359,8 +354,16 @@ class DependencyManager:
) )
warn_box.exec_() warn_box.exec_()
else: else:
log_tag = "ПРЕРВАНО" if exit_status == QProcess.CrashExit else "ОШИБКА" if exit_code == 127: # pkexec: пользователь отменил аутентификацию
log_output.append(f"\n<b><font color='red'>=== {log_tag} (код: {exit_code}) ===</font></b>") log_output.append("\n<b><font color='orange'>=== УСТАНОВКА ОТМЕНЕНА ПОЛЬЗОВАТЕЛЕМ ===</font></b>")
log_output.append("Вы отменили ввод пароля. Установка зависимостей не была выполнена.")
elif exit_code == 126: # pkexec: у пользователя нет прав
log_output.append("\n<b><font color='red'>=== ОШИБКА: НЕДОСТАТОЧНО ПРАВ ===</font></b>")
log_output.append("У вашего пользователя нет прав для выполнения этой операции.")
else:
log_tag = "ПРЕРВАНО" if exit_status == QProcess.CrashExit else "ОШИБКА"
log_output.append(f"\n<b><font color='red'>=== {log_tag} (код: {exit_code}) ===</font></b>")
log_output.append("Произошла непредвиденная ошибка во время установки.")
log_output.ensureCursorVisible() log_output.ensureCursorVisible()
close_button.setEnabled(True) close_button.setEnabled(True)
@@ -1035,13 +1038,6 @@ class WineVersionSelectionDialog(QDialog):
self.version_tabs = QTabWidget() self.version_tabs = QTabWidget()
main_layout.addWidget(self.version_tabs) main_layout.addWidget(self.version_tabs)
button_layout = QHBoxLayout()
self.refresh_button = QPushButton("Обновить список")
self.refresh_button.setIcon(QIcon.fromTheme("view-refresh"))
self.refresh_button.clicked.connect(self.load_versions)
button_layout.addStretch()
button_layout.addWidget(self.refresh_button)
main_layout.addLayout(button_layout)
self.load_versions() self.load_versions()
@@ -1055,14 +1051,12 @@ class WineVersionSelectionDialog(QDialog):
loading_layout.addWidget(status_label) loading_layout.addWidget(status_label)
self.version_tabs.addTab(loading_widget, "Загрузка...") self.version_tabs.addTab(loading_widget, "Загрузка...")
self.version_tabs.setEnabled(False) self.version_tabs.setEnabled(False)
self.refresh_button.setEnabled(False)
QApplication.processEvents() QApplication.processEvents()
self._parse_sha256_list() self._parse_sha256_list()
self.populate_ui() self.populate_ui()
self.refresh_button.setEnabled(True)
self.version_tabs.setEnabled(True) self.version_tabs.setEnabled(True)
def _parse_sha256_list(self): def _parse_sha256_list(self):
@@ -1150,14 +1144,16 @@ class WineVersionSelectionDialog(QDialog):
if is_win64: if is_win64:
if re_64bit.search(name) or not re_32bit.search(name): if re_64bit.search(name) or not re_32bit.search(name):
filtered_versions.append(name) filtered_versions.append(name)
else: # win32 else:
if re_32bit.search(name): filtered_versions.append(name)
filtered_versions.append(name)
if not filtered_versions: if not filtered_versions:
continue continue
pretty_key = key.replace('_', ' ').title() pretty_key = key.replace('_', ' ').title()
if key.endswith('_LG'):
pretty_key = pretty_key.replace(' Lg', ' LG')
self._create_version_tab(pretty_key, filtered_versions) self._create_version_tab(pretty_key, filtered_versions)
self.filter_versions() self.filter_versions()