Compare commits
13 Commits
0.6.3
...
95b189f5a2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95b189f5a2 | ||
|
|
371553277a | ||
|
|
dabf50103d | ||
|
|
590b37f1a3 | ||
|
|
1f9b4a9146 | ||
|
|
39f21373f1 | ||
|
|
e984ffdb8c | ||
|
|
48834dc078 | ||
|
|
b62d06ed71 | ||
|
|
9a1b78276e | ||
|
|
f788307f05 | ||
|
|
14273f723b | ||
|
|
a8e0fdce0a |
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Сервис обновления ПО
|
||||
# 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"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: «Справки БК» — специальное программное обеспечение, предназначенное для заполнения справок о доходах, расходах, об имуществе и обязательствах имущественного характера.
|
||||
# info_ru: «Справки БК» (Windows версия 2.5.5) от 31.01.2024 — специальное программное обеспечение, предназначенное для заполнения справок о доходах, расходах, об имуществе и обязательствах имущественного характера.
|
||||
########################################################################
|
||||
export PROG_URL="https://spravki-bk.ru"
|
||||
export WH_WINE_USE="wine-9.0.14-alt1-i586-spravkibk"
|
||||
|
||||
85
winehelper
85
winehelper
@@ -31,6 +31,7 @@ else
|
||||
LICENSE_FILE="$DATA_PATH/LICENSE"
|
||||
AGREEMENT="$DATA_PATH/LICENSE_AGREEMENT"
|
||||
THIRD_PARTY_FILE="$DATA_PATH/THIRD-PARTY"
|
||||
WH_DEVEL="1"
|
||||
|
||||
# минимальная проверка синтаксиса скриптов
|
||||
for self_check_script in "$RUN_SCRIPT" \
|
||||
@@ -1281,7 +1282,8 @@ init_wineprefix () {
|
||||
echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf"
|
||||
for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \
|
||||
STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \
|
||||
WINE_CPU_TOPOLOGY DXVK_VER VKD3D_VER WH_XDG_OPEN WH_USE_MESA_GL_OVERRIDE
|
||||
WINE_CPU_TOPOLOGY DXVK_VER VKD3D_VER WH_XDG_OPEN WH_USE_MESA_GL_OVERRIDE \
|
||||
WH_USE_CPCSP_PROXY
|
||||
do
|
||||
echo "export $var=\"${!var}\"" >> "$WINEPREFIX/last.conf"
|
||||
done
|
||||
@@ -1386,14 +1388,14 @@ prepair_wine () {
|
||||
}
|
||||
|
||||
wine_run () {
|
||||
local wh_add_args win_file_exec
|
||||
local wh_add_args win_file_exec win_file_path win_file_name
|
||||
|
||||
if [[ $1 =~ (winecfg|regedit|winefile|wineconsole) ]] ; then
|
||||
win_file_exec="$1"
|
||||
win_file_name="$win_file_exec"
|
||||
win_file_path="$DRIVE_C"
|
||||
wh_add_args=""
|
||||
elif [[ -f "$1" ]] ; then
|
||||
local win_file_path win_file_name
|
||||
win_file_exec="$(readlink -f "$1")"
|
||||
win_file_path="$(dirname "$win_file_exec")"
|
||||
win_file_name="$(basename "$win_file_exec")"
|
||||
@@ -1409,13 +1411,12 @@ wine_run () {
|
||||
&& file "$win_file_exec" | grep -q "x86-64"
|
||||
then fatal "Нельзя запустить 64-битное приложение в 32-битном префиксе!"
|
||||
fi
|
||||
|
||||
cd "$win_file_path"
|
||||
else
|
||||
fatal "Команда введена не правильно или не найден исполняемый файл $1"
|
||||
fi
|
||||
|
||||
shift
|
||||
cd "$win_file_path"
|
||||
|
||||
if [[ $WINEDEBUG != "-all" ]] ; then
|
||||
local log_dir log_file
|
||||
@@ -1429,23 +1430,25 @@ wine_run () {
|
||||
|
||||
echo "##### Основные переменные #####" | tee -a "$log_file"
|
||||
env | grep -e "WH_" -e "WINE" -e "DXVK" -e "VKD3D" | tee -a "$log_file"
|
||||
|
||||
echo "##### Лог WINE #####" | tee -a "$log_file"
|
||||
|
||||
$MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$log_file"
|
||||
else
|
||||
$MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS
|
||||
fi
|
||||
|
||||
wait_wineserver
|
||||
cd "$DRIVE_C"
|
||||
}
|
||||
|
||||
wine_run_install () {
|
||||
print_info "Запускаем установку: $1."
|
||||
if [[ "$INSTALL_MODE" == "manual" ]]
|
||||
then print_warning "Рекомендуется не менять пути для установки приложения!"
|
||||
fi
|
||||
case "$WH_INSTALL_MODE" in
|
||||
"manual") print_warning "Рекомендуется не менять пути для установки приложения!" ;;
|
||||
"test") print_warning "Установка приложения из списка экспериментальных скриптов." ;;
|
||||
esac
|
||||
|
||||
if [[ ! -f "$1" ]] ;
|
||||
if [[ ! -f "$1" ]]
|
||||
then fatal "Нет файла для установки: $1"
|
||||
else wine_run "$@"
|
||||
fi
|
||||
@@ -1466,46 +1469,49 @@ run_autoinstall () {
|
||||
elif [[ -f "$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then
|
||||
INSTALL_SCRIPT="$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME"
|
||||
WH_INSTALL_MODE="manual"
|
||||
elif [[ -d "$WH_TESTINSTALL_DIR" ]] \
|
||||
&& [[ -f "$WH_TESTINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]]
|
||||
then
|
||||
elif [[ -f "$WH_TESTINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then
|
||||
INSTALL_SCRIPT="$WH_TESTINSTALL_DIR/$INSTALL_SCRIPT_NAME"
|
||||
WH_INSTALL_MODE="test"
|
||||
else
|
||||
INSTALL_SCRIPT="0"
|
||||
fi
|
||||
export INSTALL_SCRIPT INSTALL_MODE
|
||||
export INSTALL_SCRIPT WH_INSTALL_MODE
|
||||
|
||||
if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then
|
||||
|
||||
list_install_scripts() {
|
||||
local dir="$1"
|
||||
local title="$2"
|
||||
[[ ! -d "$dir" ]] || [[ -z "$(ls -A "$dir" 2>/dev/null)" ]] && return
|
||||
print_install_list () {
|
||||
parse_install_scripts() {
|
||||
local parse_dir="$1"
|
||||
[[ ! -d "$parse_dir" ]] || [[ -z "$(ls -A "$parse_dir" 2>/dev/null)" ]] && return
|
||||
|
||||
print_info "$title"
|
||||
|
||||
awk '
|
||||
FNR==1 {
|
||||
if (progname) {
|
||||
printf "\n%s - %s\n%s\n", filename, progname, info
|
||||
awk '
|
||||
FNR==1 {
|
||||
if (progname) {
|
||||
printf "\n%s - %s\n%s\n", filename, progname, info
|
||||
}
|
||||
progname=""; info=""; filename=FILENAME
|
||||
sub(".*/", "", filename)
|
||||
}
|
||||
progname=""; info=""; filename=FILENAME
|
||||
sub(".*/", "", filename)
|
||||
}
|
||||
/info_ru:/ { sub(/.*info_ru: /, ""); info=$0 }
|
||||
/PROG_NAME=/ { sub(/.*PROG_NAME=/, ""); progname=$0 }
|
||||
END {
|
||||
if (progname) {
|
||||
printf "\n%s - %s\n%s\n", filename, progname, info
|
||||
/info_ru:/ { sub(/.*info_ru: /, ""); info=$0 }
|
||||
/PROG_NAME=/ { sub(/.*PROG_NAME=/, ""); progname=$0 }
|
||||
END {
|
||||
if (progname) {
|
||||
printf "\n%s - %s\n%s\n", filename, progname, info
|
||||
}
|
||||
}
|
||||
}
|
||||
' "$dir"/*
|
||||
' "$parse_dir"/*
|
||||
echo
|
||||
}
|
||||
print_info "Список программ с возможностью автоматической установки:"
|
||||
parse_install_scripts "$WH_AUTOINSTALL_DIR"
|
||||
print_info "Список программ с возможностью установки из существующего дистрибутива:"
|
||||
parse_install_scripts "$WH_MANUALINSTALL_DIR"
|
||||
print_warning "Программы из списка экспериментальных скриптов:"
|
||||
parse_install_scripts "$WH_TESTINSTALL_DIR"
|
||||
}
|
||||
|
||||
list_install_scripts "$WH_AUTOINSTALL_DIR" "Список программ с возможностью автоматической установки:"
|
||||
echo
|
||||
list_install_scripts "$WH_MANUALINSTALL_DIR" "Список программ с возможностью установки из существующего дистрибутива:"
|
||||
print_install_list | less -R --use-color
|
||||
|
||||
elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then
|
||||
if [[ $WH_USE_GUI == "1" ]] \
|
||||
&& [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]]
|
||||
@@ -2177,7 +2183,7 @@ select_component_version() {
|
||||
}
|
||||
|
||||
run_install_to_prefix() {
|
||||
if [[ -z "$1" ]] || [[ -z "$2" ]] || [[ -f "$2" ]]; then
|
||||
if [[ -z "$1" ]] || [[ -z "$2" ]] || [[ ! -f "$2" ]] ; then
|
||||
fatal "Использование: $SCRIPT_NAME install-to-prefix <имя_префикса> <путь_к_установщику>"
|
||||
fi
|
||||
|
||||
@@ -2299,7 +2305,8 @@ create_new_dir "$WH_DIST_DIR"
|
||||
create_new_dir "$WH_PREFIXES_DIR"
|
||||
create_new_dir "$WH_VULKAN_LIBDIR"
|
||||
|
||||
if [[ -d "$HOME/.local/share/$SCRIPT_NAME" ]] \
|
||||
if [[ $WH_DEVEL != "1" ]] \
|
||||
&& [[ -d "$HOME/.local/share/$SCRIPT_NAME" ]] \
|
||||
&& [[ ! -L "$HOME/.winehelper" ]]
|
||||
then try_force_link_dir "$HOME/.local/share/$SCRIPT_NAME" "$HOME/.winehelper"
|
||||
fi
|
||||
|
||||
@@ -1626,6 +1626,17 @@ class WineHelperGUI(QMainWindow):
|
||||
self.FRAME_STYLE_DEFAULT = "QFrame { border: 2px solid transparent; border-radius: 8px; padding: 0px; }"
|
||||
self.FRAME_STYLE_SELECTED = "QFrame { border: 2px solid #0078d7; border-radius: 8px; padding: 0px; }"
|
||||
|
||||
# Стили для кнопок Запустить/Остановить
|
||||
self.RUN_BUTTON_STYLE = """
|
||||
QPushButton {
|
||||
background-color: #4CAF50; color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
"""
|
||||
self.STOP_BUTTON_STYLE = """
|
||||
QPushButton { background-color: #d32f2f; color: white; font-weight: bold; }
|
||||
"""
|
||||
|
||||
# Основные переменные
|
||||
self.winehelper_path = Var.RUN_SCRIPT
|
||||
self.process = None
|
||||
@@ -1889,6 +1900,7 @@ class WineHelperGUI(QMainWindow):
|
||||
# --- Верхний ряд кнопок ---
|
||||
top_buttons_layout = QHBoxLayout()
|
||||
self.run_button = QPushButton("Запустить")
|
||||
self.run_button.setStyleSheet(self.RUN_BUTTON_STYLE)
|
||||
self.run_button.clicked.connect(self.toggle_run_stop_app)
|
||||
top_buttons_layout.addWidget(self.run_button)
|
||||
installed_action_layout.addLayout(top_buttons_layout)
|
||||
@@ -3468,11 +3480,7 @@ class WineHelperGUI(QMainWindow):
|
||||
self.current_selected_app['name'] = name
|
||||
self.current_selected_app['exec'] = exec_cmd
|
||||
|
||||
# Состояния кнопки
|
||||
if desktop_path in self.running_apps:
|
||||
self.run_button.setText("Остановить")
|
||||
else:
|
||||
self.run_button.setText("Запустить")
|
||||
self._set_run_button_state(desktop_path in self.running_apps)
|
||||
|
||||
# Показываем панель информации
|
||||
self.info_panel.setVisible(True)
|
||||
@@ -3660,7 +3668,8 @@ class WineHelperGUI(QMainWindow):
|
||||
msg_box.setText(
|
||||
"Приложение будет запущено в режиме отладки.\n\n"
|
||||
"После закрытия приложения лог будет сохранен в папке 'winehelper_backup_log' "
|
||||
"в вашем домашнем каталоге под именем программы (например, 'program.log')."
|
||||
"в вашем домашнем каталоге под именем (пример: prefix_program.log).\n\n"
|
||||
"Продолжить?"
|
||||
)
|
||||
msg_box.addButton(yes_button, QMessageBox.YesRole)
|
||||
msg_box.addButton(no_button, QMessageBox.NoRole)
|
||||
@@ -3865,10 +3874,27 @@ class WineHelperGUI(QMainWindow):
|
||||
|
||||
# Если текущее выбранное приложение - то, что только что завершилось, обновляем кнопку
|
||||
if self.current_selected_app and self.current_selected_app.get('desktop_path') == desktop_path:
|
||||
self.run_button.setText("Запустить")
|
||||
self._set_run_button_state(False)
|
||||
else:
|
||||
print(f"Предупреждение: получен сигнал finished для неизвестного процесса {desktop_path}")
|
||||
|
||||
def _set_run_button_state(self, is_running):
|
||||
"""Устанавливает текст и стиль для кнопки Запустить/Остановить."""
|
||||
if is_running:
|
||||
self.run_button.setText("Остановить")
|
||||
self.run_button.setStyleSheet(self.STOP_BUTTON_STYLE)
|
||||
self.create_log_button.setEnabled(False)
|
||||
self.backup_button.setEnabled(False)
|
||||
self.uninstall_button.setEnabled(False)
|
||||
self.restore_prefix_button_panel.setEnabled(False)
|
||||
else:
|
||||
self.run_button.setText("Запустить")
|
||||
self.run_button.setStyleSheet(self.RUN_BUTTON_STYLE)
|
||||
self.create_log_button.setEnabled(True)
|
||||
self.backup_button.setEnabled(True)
|
||||
self.uninstall_button.setEnabled(True)
|
||||
self.restore_prefix_button_panel.setEnabled(True)
|
||||
|
||||
def _run_app_launcher(self, debug=False):
|
||||
"""Внутренний метод для запуска приложения (с отладкой или без) с использованием QProcess."""
|
||||
if not self.current_selected_app or 'exec' not in self.current_selected_app:
|
||||
@@ -3935,7 +3961,7 @@ class WineHelperGUI(QMainWindow):
|
||||
raise RuntimeError(f"Не удалось запустить процесс: {process.errorString()}")
|
||||
|
||||
self.running_apps[desktop_path] = process
|
||||
self.run_button.setText("Остановить")
|
||||
self._set_run_button_state(True)
|
||||
print(f"Запущено: {program} {' '.join(arguments)}")
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self, "Ошибка запуска",
|
||||
|
||||
Reference in New Issue
Block a user