forked from CastroFidel/winehelper
Compare commits
12 Commits
add_prog_u
...
0.5.2
Author | SHA1 | Date | |
---|---|---|---|
a18c4684a7 | |||
0cca7b441d | |||
bda170017c | |||
42e822217b | |||
79d45b6f51 | |||
ae2d47b641 | |||
576f939ceb | |||
c9e4cb23b7 | |||
f17b354ca3 | |||
3d28dc2758 | |||
b403934966 | |||
ea621f0402 |
13
CHANGELOG
13
CHANGELOG
@ -1,5 +1,18 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
|
0.5.2:
|
||||||
|
* исправлен запуск winehelper.desktop для winehelper-qt
|
||||||
|
|
||||||
|
0.5.1:
|
||||||
|
* добавлена функция извлечения иконки из .exe файлов
|
||||||
|
* добавлен вывод истории изменений командой: winehelper --changelog
|
||||||
|
* добавлен графический режим Qt5 (альфа версия)
|
||||||
|
* обновлены скрипты для совместной работы с графическим режимом
|
||||||
|
* обновлены скрипты установок для t-flex-* (добавлена поддержка grdcontrol)
|
||||||
|
* добавлены ссылки на официальные сайты устанавливаемых приложений
|
||||||
|
* обновлены функции создания и восстановления резервных копий префиков
|
||||||
|
* добавлены иконки для приложения WineHelper
|
||||||
|
|
||||||
0.5.0:
|
0.5.0:
|
||||||
* добавлен явный вывод отказа от ответственности и соглашения с ним
|
* добавлен явный вывод отказа от ответственности и соглашения с ним
|
||||||
* обновлены все скрипты для установки t-flex-*
|
* обновлены все скрипты для установки t-flex-*
|
||||||
|
@ -11,12 +11,13 @@ export WH_XDG_OPEN="log"
|
|||||||
export INSTALL_DLL="corefonts d3dcompiler_47 dotnet48 vcrun2022 ucrtbase2019 msxml6 fontsmooth=rgb baekmuk droid eufonts ipamona liberation lucida opensymbol sourcehansans tahoma takao uff unifont vlgothic wenquanyi wenquanyizenhei"
|
export INSTALL_DLL="corefonts d3dcompiler_47 dotnet48 vcrun2022 ucrtbase2019 msxml6 fontsmooth=rgb baekmuk droid eufonts ipamona liberation lucida opensymbol sourcehansans tahoma takao uff unifont vlgothic wenquanyi wenquanyizenhei"
|
||||||
export WH_USE_MESA_GL_OVERRIDE="1"
|
export WH_USE_MESA_GL_OVERRIDE="1"
|
||||||
|
|
||||||
# Компоненты поддержки T-FLEX PLM 17 (Linux)
|
# Компоненты поддержки T-FLEX PLM (Linux)
|
||||||
AUTOINSTALL_ZIP_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux.zip"
|
GRDCONTROL_VER="4.3.0-0"
|
||||||
AUTOINSTALL_DIR_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux"
|
AUTOINSTALL_ZIP_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_Linux.zip"
|
||||||
|
AUTOINSTALL_DIR_LIN="$WH_TMP_DIR/Prerequisites_T-FLEX_Linux"
|
||||||
AUTOINSTALL_REG_LIN="$AUTOINSTALL_DIR_LIN/Components/fake_hasp.reg"
|
AUTOINSTALL_REG_LIN="$AUTOINSTALL_DIR_LIN/Components/fake_hasp.reg"
|
||||||
|
|
||||||
# Компоненты поддержки T-FLEX PLM 17 (Windows)
|
# Компоненты поддержки T-FLEX PLM (Windows)
|
||||||
AUTOINSTALL_ZIP_WIN="$WH_TMP_DIR/T-FLEX 17 Prerequisites.zip"
|
AUTOINSTALL_ZIP_WIN="$WH_TMP_DIR/T-FLEX 17 Prerequisites.zip"
|
||||||
AUTOINSTALL_DIR_WIN="$WH_TMP_DIR/Компоненты поддержки T-FLEX 17"
|
AUTOINSTALL_DIR_WIN="$WH_TMP_DIR/Компоненты поддержки T-FLEX 17"
|
||||||
AUTOINSTALL_EXE_WIN1="$AUTOINSTALL_DIR_WIN/Access Database Engine 2007/AccessDatabaseEngine.exe"
|
AUTOINSTALL_EXE_WIN1="$AUTOINSTALL_DIR_WIN/Access Database Engine 2007/AccessDatabaseEngine.exe"
|
||||||
@ -26,28 +27,35 @@ AUTOINSTALL_EXE_WIN2="$AUTOINSTALL_DIR_WIN/TSC2/Setup_TSC2.msi"
|
|||||||
prepair_wine
|
prepair_wine
|
||||||
|
|
||||||
if [[ -d "$WINEPREFIX" ]] \
|
if [[ -d "$WINEPREFIX" ]] \
|
||||||
&& grep -q "t-flex-cad17-prepair" "$WINEPREFIX/winetricks.log" \
|
&& grep -q "t-flex-cad" "$WINEPREFIX/winetricks.log" \
|
||||||
&& systemctl list-units --type service --state running | grep aksusbd \
|
&& systemctl list-units --type service --state running | grep aksusbd \
|
||||||
&& systemctl list-units --type service --state running | grep hasplmd
|
&& systemctl list-units --type service --state running | grep hasplmd \
|
||||||
|
&& rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
|
||||||
then
|
then
|
||||||
print_info "Префикс $PREFIX_NAME готов к установке ПО."
|
print_info "Префикс $PREFIX_NAME готов к установке ПО."
|
||||||
print_info "Сервисы: aksusbd и hasplmd уже запущены."
|
print_info "Сервисы: aksusbd и hasplmd уже запущены. grdcontrol-$GRDCONTROL_VER установлен."
|
||||||
else
|
else
|
||||||
print_warning "Службы aksusbd и hasplmd не запущены, или префикс не подготовлен"
|
print_warning "Службы aksusbd и hasplmd не запущены, или grdcontrol-$GRDCONTROL_VER не установлен."
|
||||||
print_info "Запускаем подготовку префикса скриптом: t-flex-cad17-prepair"
|
|
||||||
|
|
||||||
if [[ "$BASE_PFX" == "none" ]] \
|
if [[ "$BASE_PFX" == "none" ]] \
|
||||||
|| ! systemctl list-units --type service --state running | grep aksusbd \
|
|| ! systemctl list-units --type service --state running | grep aksusbd \
|
||||||
|| ! systemctl list-units --type service --state running | grep hasplmd
|
|| ! systemctl list-units --type service --state running | grep hasplmd \
|
||||||
|
|| ! rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
|
||||||
then
|
then
|
||||||
# Компоненты поддержки T-FLEX PLM 17 (Linux)
|
# Компоненты поддержки T-FLEX PLM (Linux)
|
||||||
if try_download "https://www.tflex.ru/downloads/Prerequisites_T-FLEX_17_Linux.zip" "${AUTOINSTALL_ZIP_LIN}" ; then
|
if try_download "https://www.tflex.ru/downloads/Prerequisites_T-FLEX_Linux.zip" "${AUTOINSTALL_ZIP_LIN}" ; then
|
||||||
unpack "$AUTOINSTALL_ZIP_LIN" "$AUTOINSTALL_DIR_LIN"
|
unpack "$AUTOINSTALL_ZIP_LIN" "$AUTOINSTALL_DIR_LIN"
|
||||||
"$WINELOADER" regedit "$AUTOINSTALL_REG_LIN"
|
"$WINELOADER" regedit "$AUTOINSTALL_REG_LIN"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
|
||||||
|
then print_info "grdcontrol-$GRDCONTROL_VER уже установлен в системе."
|
||||||
|
else su_run rpm -iv "$AUTOINSTALL_DIR_LIN/Guardant_Linux/grdcontrol.x86_64.rpm"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$BASE_PFX" == "none" ]] ; then
|
if [[ "$BASE_PFX" == "none" ]] ; then
|
||||||
# Компоненты поддержки T-FLEX PLM 17 (Windows)
|
print_info "Запускаем подготовку префикса."
|
||||||
|
# Компоненты поддержки T-FLEX PLM (Windows)
|
||||||
if try_download "https://www.tflex.ru/downloads/T-FLEX%2017%20Prerequisites.zip" "${AUTOINSTALL_ZIP_WIN}" ; then
|
if try_download "https://www.tflex.ru/downloads/T-FLEX%2017%20Prerequisites.zip" "${AUTOINSTALL_ZIP_WIN}" ; then
|
||||||
unpack "$AUTOINSTALL_ZIP_WIN" "$WH_TMP_DIR"
|
unpack "$AUTOINSTALL_ZIP_WIN" "$WH_TMP_DIR"
|
||||||
unpack "$AUTOINSTALL_EXE_WIN1" "$AUTOINSTALL_EXE_WIN_MSI"
|
unpack "$AUTOINSTALL_EXE_WIN1" "$AUTOINSTALL_EXE_WIN_MSI"
|
||||||
@ -57,13 +65,18 @@ else
|
|||||||
fi
|
fi
|
||||||
rm -fR "$DRIVE_C/Program Files/Common Files/System"
|
rm -fR "$DRIVE_C/Program Files/Common Files/System"
|
||||||
rm -fR "$DRIVE_C/Program Files (x86)/Common Files/System"
|
rm -fR "$DRIVE_C/Program Files (x86)/Common Files/System"
|
||||||
cp -r "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/Program Files/Common Files/System" "$DRIVE_C/Program Files/Common Files"
|
|
||||||
cp -r "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/Program Files (x86)/Common Files/System" "$DRIVE_C/Program Files (x86)/Common Files"
|
|
||||||
mv -f "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/Windows/System32/"*.dll "$DRIVE_C/windows/system32"
|
|
||||||
|
|
||||||
"$WINELOADER" regedit "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/ado-32.reg"
|
cp -r "$AUTOINSTALL_DIR_LIN/Components/Program Files/Common Files/System" \
|
||||||
"$WINELOADER"64 regedit "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/ado-64.reg"
|
"$DRIVE_C/Program Files/Common Files"
|
||||||
"$WINELOADER" regedit "$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/Components/tflex.reg"
|
cp -r "$AUTOINSTALL_DIR_LIN/Components/Program Files (x86)/Common Files/System" \
|
||||||
|
"$DRIVE_C/Program Files (x86)/Common Files"
|
||||||
|
|
||||||
|
mv -f "$AUTOINSTALL_DIR_LIN/Components/Windows/System32/"*.dll \
|
||||||
|
"$DRIVE_C/windows/system32"
|
||||||
|
|
||||||
|
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/ado-32.reg"
|
||||||
|
"$WINELOADER"64 regedit "$AUTOINSTALL_DIR_LIN/Components/ado-64.reg"
|
||||||
|
"$WINELOADER" regedit "$AUTOINSTALL_DIR_LIN/Components/tflex.reg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if systemctl list-units --type service --state running | grep aksusbd \
|
if systemctl list-units --type service --state running | grep aksusbd \
|
||||||
@ -72,15 +85,15 @@ else
|
|||||||
print_info "Службы aksusbd и hasplmd уже запущены. Пропускаем..."
|
print_info "Службы aksusbd и hasplmd уже запущены. Пропускаем..."
|
||||||
else
|
else
|
||||||
echo "#!/usr/bin/env bash
|
echo "#!/usr/bin/env bash
|
||||||
cd \"$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/HASP_Linux/aksusbd/\"
|
cd \"$AUTOINSTALL_DIR_LIN/HASP_Linux/aksusbd/\"
|
||||||
bash ./dinst
|
bash ./dinst
|
||||||
mv -f \"$WH_TMP_DIR/Prerequisites_T-FLEX_17_Linux/HASP_Linux/\"*.so /var/hasplm/
|
mv -f \"$AUTOINSTALL_DIR_LIN/HASP_Linux/\"*.so /var/hasplm/
|
||||||
systemctl restart hasplmd.service" > "$WH_TMP_DIR/tflex17_aksusbd.sh"
|
systemctl restart hasplmd.service" > "$WH_TMP_DIR/tflex_aksusbd.sh"
|
||||||
chmod +x $WH_TMP_DIR/tflex17_aksusbd.sh
|
chmod +x "$WH_TMP_DIR/tflex_aksusbd.sh"
|
||||||
unset TFLEX_ERROR
|
unset TFLEX_ERROR
|
||||||
print_info "Будут установлены и запущены службы aksusbd и hasplmd."
|
print_info "Будут установлены и запущены службы aksusbd и hasplmd."
|
||||||
su_run "$WH_TMP_DIR/tflex17_aksusbd.sh" || TFLEX_ERROR=1
|
su_run "$WH_TMP_DIR/tflex_aksusbd.sh" || TFLEX_ERROR=1
|
||||||
try_remove_file "$WH_TMP_DIR/tflex17_aksusbd.sh"
|
try_remove_file "$WH_TMP_DIR/tflex_aksusbd.sh"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -90,7 +103,7 @@ else
|
|||||||
if [[ $TFLEX_ERROR == "1" ]] ; then
|
if [[ $TFLEX_ERROR == "1" ]] ; then
|
||||||
fatal "Произошла ошибка во время подготовки префикса, или установки компонентов ПО."
|
fatal "Произошла ошибка во время подготовки префикса, или установки компонентов ПО."
|
||||||
else
|
else
|
||||||
echo "t-flex-cad17-prepair" >> "$WINEPREFIX/winetricks.log"
|
echo "t-flex-cad-prepair" >> "$WINEPREFIX/winetricks.log"
|
||||||
try_remove_file "$AUTOINSTALL_ZIP_LIN"
|
try_remove_file "$AUTOINSTALL_ZIP_LIN"
|
||||||
try_remove_file "$AUTOINSTALL_ZIP_WIN"
|
try_remove_file "$AUTOINSTALL_ZIP_WIN"
|
||||||
print_info "Подготовка префикса и установка компонентов завершены."
|
print_info "Подготовка префикса и установка компонентов завершены."
|
||||||
|
76
winehelper
76
winehelper
@ -180,13 +180,17 @@ fi
|
|||||||
|
|
||||||
##### ROOT #####
|
##### ROOT #####
|
||||||
su_run () {
|
su_run () {
|
||||||
local i="1"
|
if [[ $WH_USE_GUI != "1" ]] ; then
|
||||||
while [[ $i -le "3" ]] ; do
|
local i="1"
|
||||||
print_info "Для продолжения установки введите root пароль (попытка $i из 3)..."
|
while [[ $i -le "3" ]] ; do
|
||||||
su - -c "$@" && return 0
|
print_info "Для продолжения установки введите root пароль (попытка $i из 3)..."
|
||||||
((i++))
|
su - -c "$@" && return 0
|
||||||
done
|
((i++))
|
||||||
return 1
|
done
|
||||||
|
else
|
||||||
|
pkexec "$@" && return 0
|
||||||
|
fi
|
||||||
|
fatal "Не удалось установить необходимые компоненты!"
|
||||||
}
|
}
|
||||||
|
|
||||||
##### CHECK DEPENDENCIES #####
|
##### CHECK DEPENDENCIES #####
|
||||||
@ -1568,12 +1572,13 @@ backup_prefix() {
|
|||||||
export WINEPREFIX="$1"
|
export WINEPREFIX="$1"
|
||||||
check_prefix_var
|
check_prefix_var
|
||||||
|
|
||||||
local backup_base_dir="$(xdg-user-dir DESKTOP)"
|
local backup_base_dir backup_archive_name backup_dest_path temp_backup_dir temp_prefix_dir temp_users_dir
|
||||||
local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack"
|
backup_base_dir="$(xdg-user-dir DESKTOP)"
|
||||||
local backup_dest_path="$backup_base_dir/$backup_archive_name"
|
backup_archive_name="backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S).whpack"
|
||||||
local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)"
|
backup_dest_path="$backup_base_dir/$backup_archive_name"
|
||||||
local temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S)"
|
||||||
local temp_users_dir="$temp_prefix_dir/drive_c/users"
|
temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
||||||
|
temp_users_dir="$temp_prefix_dir/drive_c/users"
|
||||||
|
|
||||||
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
||||||
create_new_dir "$temp_backup_dir"
|
create_new_dir "$temp_backup_dir"
|
||||||
@ -1617,9 +1622,11 @@ backup_prefix() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Сохраняем метаданные внутри временной директории
|
||||||
|
echo "$PREFIX_NAME" > "$temp_backup_dir/prefix_name.whmeta"
|
||||||
|
|
||||||
print_info "Создание squashfs архива..."
|
print_info "Создание squashfs архива..."
|
||||||
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
||||||
echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path"
|
|
||||||
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
||||||
else
|
else
|
||||||
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
||||||
@ -1651,15 +1658,7 @@ restore_prefix() {
|
|||||||
|
|
||||||
print_info "Восстановление из резервной копии: $backup_archive_path"
|
print_info "Восстановление из резервной копии: $backup_archive_path"
|
||||||
|
|
||||||
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)_$$"
|
||||||
|
|
||||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
|
||||||
fatal "Префикс $prefix_name уже существует!
|
|
||||||
Удалите его, если действительно желаете восстановить префикс заново.
|
|
||||||
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
|
||||||
fi
|
|
||||||
|
|
||||||
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
|
||||||
create_new_dir "$temp_extract_dir"
|
create_new_dir "$temp_extract_dir"
|
||||||
|
|
||||||
print_info "Распаковка архива..."
|
print_info "Распаковка архива..."
|
||||||
@ -1670,9 +1669,32 @@ restore_prefix() {
|
|||||||
fatal "Не удалось распаковать архив."
|
fatal "Не удалось распаковать архив."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
# Определяем имя префикса
|
||||||
local prefix_name
|
if [[ -f "$temp_extract_dir/prefix_name.whmeta" ]]; then
|
||||||
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
prefix_name="$(cat "$temp_extract_dir/prefix_name.whmeta")"
|
||||||
|
try_remove_file "$temp_extract_dir/prefix_name.whmeta"
|
||||||
|
elif grep -q "PREFIX_NAME=" "$backup_archive_path" ; then
|
||||||
|
# Обратная совместимость со старыми бэкапами (с приписанной строкой)
|
||||||
|
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||||
|
elif [[ -d "$temp_extract_dir/prefixes" ]] && [[ $(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d | wc -l) -eq 1 ]]; then
|
||||||
|
# Обратная совместимость со старыми бэкапами (по имени каталога)
|
||||||
|
prefix_name="$(basename "$(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d)")"
|
||||||
|
else
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Не удалось определить имя префикса в архиве (метаданные не найдены)."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$prefix_name" ]]; then
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Не удалось определить имя префикса в архиве."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Префикс $prefix_name уже существует!\n Удалите его, если действительно желаете восстановить префикс заново.\n Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d "$temp_extract_dir/prefixes/$prefix_name" ]] ; then
|
||||||
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||||
|
|
||||||
print_info "Восстановление префикса: $prefix_name"
|
print_info "Восстановление префикса: $prefix_name"
|
||||||
@ -1711,7 +1733,7 @@ restore_prefix() {
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
fatal "Директория prefixes не найдена в архиве."
|
fatal "Директория префикса '$prefix_name' не найдена в архиве."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
9
winehelper.desktop
Normal file
9
winehelper.desktop
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=WineHelper
|
||||||
|
Exec=winehelper gui %F
|
||||||
|
Comment=Launching the graphics interface for Winehelper
|
||||||
|
Comment[ru]=Запуск графического интерфейса WineHelper
|
||||||
|
Type=Application
|
||||||
|
Categories=WineHelper;Utility;Emulator;
|
||||||
|
StartupNotify=true
|
||||||
|
Icon=winehelper
|
1530
winehelper_gui.py
Normal file
1530
winehelper_gui.py
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user