forked from CastroFidel/winehelper
Compare commits
5 Commits
463306d0cf
...
0.5.4.7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
151b6d6e30 | ||
|
|
c8049efd37 | ||
|
|
8eb5a0aa86 | ||
|
|
7edc205b66 | ||
|
|
b36cadd54d |
@@ -6,10 +6,10 @@ export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
|||||||
export WINEPREFIX="scadoffice"
|
export WINEPREFIX="scadoffice"
|
||||||
export PROG_NAME="SCAD Office"
|
export PROG_NAME="SCAD Office"
|
||||||
export PROG_ICON="scadoffice"
|
export PROG_ICON="scadoffice"
|
||||||
export BASE_PFX="scadaoffice_pfx_x64_v03"
|
export BASE_PFX="scadaoffice_pfx_x64_v04"
|
||||||
export WH_WINDOWS_VER="10"
|
export WH_WINDOWS_VER="10"
|
||||||
export WINEARCH="win64"
|
export WINEARCH="win64"
|
||||||
export INSTALL_DLL="dotnet20 dotnet472 dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6"
|
export INSTALL_DLL="dotnet20 dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6"
|
||||||
export WH_XDG_OPEN="rtf"
|
export WH_XDG_OPEN="rtf"
|
||||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/SCADOffice_installer.exe"
|
AUTOINSTALL_EXE="${WH_TMP_DIR}/SCADOffice_installer.exe"
|
||||||
SCADOFFICE_ADDONS_URL="https://cloud.linux-gaming.ru/portproton/scadoffice_addons_v02.tar.xz"
|
SCADOFFICE_ADDONS_URL="https://cloud.linux-gaming.ru/portproton/scadoffice_addons_v02.tar.xz"
|
||||||
|
|||||||
BIN
image/nettest_client.png
Normal file
BIN
image/nettest_client.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
BIN
image/nettest_server.png
Normal file
BIN
image/nettest_server.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
34
manualinstall/nettest
Normal file
34
manualinstall/nettest
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 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 WINEPREFIX="nettest"
|
||||||
|
export PROG_NAME="NetTest"
|
||||||
|
export PROG_ICON="nettest"
|
||||||
|
export BASE_PFX="none"
|
||||||
|
export WINEARCH="win64"
|
||||||
|
export INSTALL_DLL=""
|
||||||
|
export WH_WINDOWS_VER="10"
|
||||||
|
|
||||||
|
ZIP_FILE="$2"
|
||||||
|
|
||||||
|
if [[ -f "$ZIP_FILE" ]] \
|
||||||
|
&& [[ $ZIP_FILE =~ ".zip" ]]
|
||||||
|
then
|
||||||
|
prepair_wine
|
||||||
|
PROG_PATH="$DRIVE_C/nettest"
|
||||||
|
unpack "$2" "$PROG_PATH"
|
||||||
|
|
||||||
|
cp -fr "$PROG_PATH/fonts/"* "$DRIVE_C/windows/Fonts/"
|
||||||
|
|
||||||
|
create_desktop "$PROG_NAME (Сервер)" "$PROG_PATH/testser.exe" "nettest_server"
|
||||||
|
create_desktop "$PROG_NAME (Клиент)" "$PROG_PATH/testcli.exe" "nettest_client"
|
||||||
|
else
|
||||||
|
fatal "Не найден файл архива для $PROG_NAME. Перезапустите по примеру:
|
||||||
|
winehelper install $1 \"/путь/до/архива\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193 wine-9.0.14-alt1-i586-spravkibk.tar.xz
|
fb7fdfde96de10a1b3b051bdf2727b6a7c1768b878483726454dd6726e9e0193 wine-9.0.14-alt1-i586-spravkibk.tar.xz
|
||||||
e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183 wine-9.0.14-alt1-amd64.tar.xz
|
e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183 wine-9.0.14-alt1-amd64.tar.xz
|
||||||
6f86d2220b65b709bf88c6f829a4998de3b929cc2091cd1333a51c32e1491b79 wine-9.0.9-alt1-i586.tar.xz
|
6f86d2220b65b709bf88c6f829a4998de3b929cc2091cd1333a51c32e1491b79 wine-9.0.9-alt1-i586.tar.xz
|
||||||
|
f1bf1261550ca2928cefacdb724926d3d6d103433d0ff6882ee9783a50d8f4e4 wine-8.8-staging-amd64.tar.xz
|
||||||
61bec1230b37b8fcc69fd45f848b44fd88cc41fcdd5dc3080336d7da63660f40 wine-7.16.1-alt1-amd64.tar.xz
|
61bec1230b37b8fcc69fd45f848b44fd88cc41fcdd5dc3080336d7da63660f40 wine-7.16.1-alt1-amd64.tar.xz
|
||||||
6fea17fd131f57c2ebf7ca4c60d3c5a9e819afe16e5d0b77ecb750da99ae0e38 wine-7.16.1-alt1-i586.tar.xz
|
6fea17fd131f57c2ebf7ca4c60d3c5a9e819afe16e5d0b77ecb750da99ae0e38 wine-7.16.1-alt1-i586.tar.xz
|
||||||
|
|
||||||
@@ -211,8 +212,8 @@ dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e audiorecstatio
|
|||||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
||||||
# winetricks arial dotnet7 dotnetdesktop7 renderer=gdi
|
# winetricks arial dotnet7 dotnetdesktop7 renderer=gdi
|
||||||
|
|
||||||
25e277c7afa4a9afc5f013cb05f872c12a7f381c4f0503a423dcacccca9a14c6 scadaoffice_pfx_x64_v03.tar.xz
|
4fa93434c5c15440014357323257ddcee7d28b94ad6a56bd6f5a08b33ae4c3cb scadaoffice_pfx_x64_v04.tar.xz
|
||||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
# create with wine-8.8-staging-amd64
|
||||||
# winetricks dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20
|
# winetricks dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20
|
||||||
# + addons with ODBC, SSH, *.reg
|
# + addons with ODBC, SSH, *.reg
|
||||||
0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb scadoffice_addons_v02.tar.xz
|
0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb scadoffice_addons_v02.tar.xz
|
||||||
|
|||||||
@@ -1111,6 +1111,11 @@ init_wineprefix () {
|
|||||||
export DRIVE_C="$WINEPREFIX/drive_c"
|
export DRIVE_C="$WINEPREFIX/drive_c"
|
||||||
export XUSER_PATH="$DRIVE_C/users/xuser"
|
export XUSER_PATH="$DRIVE_C/users/xuser"
|
||||||
|
|
||||||
|
if [[ -d "$XUSER_PATH" ]] \
|
||||||
|
&& [[ ! -d "$DRIVE_C/users/$USER" ]]
|
||||||
|
then try_force_link_dir "$XUSER_PATH" "$DRIVE_C/users/$USER"
|
||||||
|
fi
|
||||||
|
|
||||||
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" ]]
|
||||||
@@ -1813,9 +1818,9 @@ create_base_pfx () {
|
|||||||
&& [[ ! -L "$users_dir/$USER" ]]
|
&& [[ ! -L "$users_dir/$USER" ]]
|
||||||
then
|
then
|
||||||
if [[ -L "$users_dir/xuser" ]]
|
if [[ -L "$users_dir/xuser" ]]
|
||||||
then try_remove_dir "$users_dir/xuser/"
|
then try_remove_dir "$users_dir/xuser"
|
||||||
fi
|
fi
|
||||||
create_new_dir "$users_dir/xuser/"
|
create_new_dir "$users_dir/xuser"
|
||||||
cp -fr "$users_dir/$USER"/* "$users_dir/xuser/"
|
cp -fr "$users_dir/$USER"/* "$users_dir/xuser/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -474,9 +474,10 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
self.log_output.setText(self.INFO_TEXT)
|
self.log_output.setText(self.INFO_TEXT)
|
||||||
main_layout.addWidget(self.log_output)
|
main_layout.addWidget(self.log_output)
|
||||||
|
|
||||||
# Кнопки управления, выровненные по правому краю
|
# Кнопки управления
|
||||||
button_layout = QHBoxLayout()
|
button_layout = QHBoxLayout()
|
||||||
button_layout.addStretch(1)
|
self.status_label = QLabel("Загрузка компонентов...")
|
||||||
|
button_layout.addWidget(self.status_label, 1)
|
||||||
|
|
||||||
self.apply_button = QPushButton("Применить")
|
self.apply_button = QPushButton("Применить")
|
||||||
self.apply_button.setEnabled(False)
|
self.apply_button.setEnabled(False)
|
||||||
@@ -547,6 +548,7 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
def load_all_categories(self):
|
def load_all_categories(self):
|
||||||
"""Запускает загрузку всех категорий."""
|
"""Запускает загрузку всех категорий."""
|
||||||
self.loading_count = len(self.categories)
|
self.loading_count = len(self.categories)
|
||||||
|
self.category_statuses = {name: "загрузка..." for name in self.categories.keys()}
|
||||||
for internal_name in self.categories.values():
|
for internal_name in self.categories.values():
|
||||||
self._start_load_process(internal_name)
|
self._start_load_process(internal_name)
|
||||||
|
|
||||||
@@ -600,6 +602,13 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
process.finished.connect(partial(self._on_load_finished, category))
|
process.finished.connect(partial(self._on_load_finished, category))
|
||||||
process.start(self.winetricks_path, [category, "list"])
|
process.start(self.winetricks_path, [category, "list"])
|
||||||
|
|
||||||
|
def _update_status_label(self):
|
||||||
|
"""Обновляет текстовую метку состояния загрузки."""
|
||||||
|
status_parts = []
|
||||||
|
for name, status in self.category_statuses.items():
|
||||||
|
status_parts.append(f"{name}: {status}")
|
||||||
|
self.status_label.setText(" | ".join(status_parts))
|
||||||
|
|
||||||
def _parse_winetricks_log(self):
|
def _parse_winetricks_log(self):
|
||||||
"""Читает winetricks.log и возвращает множество установленных компонентов."""
|
"""Читает winetricks.log и возвращает множество установленных компонентов."""
|
||||||
installed_verbs = set()
|
installed_verbs = set()
|
||||||
@@ -672,15 +681,22 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
|
|
||||||
if exit_code != 0 or exit_status != QProcess.NormalExit:
|
if exit_code != 0 or exit_status != QProcess.NormalExit:
|
||||||
error_string = process.errorString() if process else "N/A"
|
error_string = process.errorString() if process else "N/A"
|
||||||
self._log(f"--- Ошибка загрузки категории '{category_display_name}' (код: {exit_code}) ---", "red")
|
self._log(f"--- Ошибка загрузки категории '{category}' (код: {exit_code}) ---", "red")
|
||||||
|
self.category_statuses[category_display_name] = "ошибка"
|
||||||
|
self._update_status_label() # Показываем ошибку в статусе
|
||||||
if exit_status == QProcess.CrashExit:
|
if exit_status == QProcess.CrashExit:
|
||||||
self._log("--- Процесс winetricks завершился аварийно. ---", "red")
|
self._log("--- Процесс winetricks завершился аварийно. ---", "red")
|
||||||
|
# По умолчанию используется "Неизвестная ошибка", которая не очень полезна.
|
||||||
if error_string != "Неизвестная ошибка":
|
if error_string != "Неизвестная ошибка":
|
||||||
self._log(f"--- Системная ошибка: {error_string} ---", "red")
|
self._log(f"--- Системная ошибка: {error_string} ---", "red")
|
||||||
self._log(output if output.strip() else "Winetricks не вернул вывод. Проверьте, что он работает корректно.")
|
self._log(output if output.strip() else "Winetricks не вернул вывод. Проверьте, что он работает корректно.")
|
||||||
self._log("--------------------------------------------------", "red")
|
self._log("--------------------------------------------------", "red")
|
||||||
else:
|
else:
|
||||||
|
self.category_statuses[category_display_name] = "готово"
|
||||||
installed_verbs = self._parse_winetricks_log()
|
installed_verbs = self._parse_winetricks_log()
|
||||||
|
# Обновляем статус только если это была сетевая загрузка
|
||||||
|
if from_cache is None:
|
||||||
|
self._update_status_label()
|
||||||
found_items = self._parse_winetricks_list_output(output, installed_verbs, list_widget)
|
found_items = self._parse_winetricks_list_output(output, installed_verbs, list_widget)
|
||||||
|
|
||||||
if from_cache is None: # Только если мы не читали из кэша
|
if from_cache is None: # Только если мы не читали из кэша
|
||||||
@@ -705,6 +721,7 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
|
|
||||||
self.loading_count -= 1
|
self.loading_count -= 1
|
||||||
if self.loading_count == 0:
|
if self.loading_count == 0:
|
||||||
|
self.status_label.setText("Готово.")
|
||||||
self._update_ui_state()
|
self._update_ui_state()
|
||||||
|
|
||||||
def _on_item_changed(self, item):
|
def _on_item_changed(self, item):
|
||||||
@@ -845,6 +862,11 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
|
|
||||||
# 3. Обрабатываем успех
|
# 3. Обрабатываем успех
|
||||||
self._log("\n=== Все операции успешно завершены ===")
|
self._log("\n=== Все операции успешно завершены ===")
|
||||||
|
self._show_message_box("Успех",
|
||||||
|
"Операции с компонентами были успешно выполнены.",
|
||||||
|
QMessageBox.Information,
|
||||||
|
{"buttons": {"Да": QMessageBox.AcceptRole}})
|
||||||
|
|
||||||
self.apply_button.setEnabled(True)
|
self.apply_button.setEnabled(True)
|
||||||
self.reinstall_button.setEnabled(False) # Сбрасываем в неактивное состояние
|
self.reinstall_button.setEnabled(False) # Сбрасываем в неактивное состояние
|
||||||
self.close_button.setEnabled(True)
|
self.close_button.setEnabled(True)
|
||||||
@@ -854,6 +876,7 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
search_edit.clear()
|
search_edit.clear()
|
||||||
|
|
||||||
# Перезагружаем данные, чтобы обновить состояние
|
# Перезагружаем данные, чтобы обновить состояние
|
||||||
|
self.status_label.setText("Обновление данных...")
|
||||||
self.initial_states.clear()
|
self.initial_states.clear()
|
||||||
self.load_all_categories()
|
self.load_all_categories()
|
||||||
self.installation_finished = True
|
self.installation_finished = True
|
||||||
|
|||||||
Reference in New Issue
Block a user