Compare commits

...

8 Commits

4 changed files with 189 additions and 19 deletions

View File

@ -1,5 +1,11 @@
История изменений: История изменений:
0.4.3:
* исправлено обновление префикса при первом запуске
0.4.2:
* исправлено создание и восстановление резервных копий с разными именами пользователей
0.4.1: 0.4.1:
* добавлена возможность создания резервной копии префикса: * добавлена возможность создания резервной копии префикса:
winehelper backup-prefix [имя_префикса] winehelper backup-prefix [имя_префикса]

View File

@ -0,0 +1,67 @@
#!/usr/bin/env bash
# info_ru: Приложения для T-FLEX CAD 17 (T-FLEX Анализ 17, T-FLEX Динамика 17, T-FLEX Зубчатые передачи 17, T-FLEX ЧПУ 17, T-FLEX Раскрой 17, T-FLEX Электротехника 17, T-FLEX VR 17, T-FLEX Печатные платы 17)
########################################################################
export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
export BASE_PFX="tflex17_pfx_x64_v01"
export WINEARCH="win64"
export WINEPREFIX="tflex17"
BASE_URL="https://www.tflex.ru/downloads"
FILES=(
"T-FLEX Analysis 17.zip"
"T-FLEX Dynamics 17.zip"
"T-FLEX Gears 17.zip"
"T-FLEX CAM 17.zip"
"T-FLEX Nesting 17.zip"
"T-FLEX Electrical 17.zip"
"T-FLEX VR 17.zip"
"T-FLEX Circuits 17.zip"
)
UNPACK_APP="${WH_TMP_DIR}/unpack_applications"
prepair_wine
# Функция для распаковки файла
unpack_file() {
local archive="$1"
7z x -y "$archive" -o"${UNPACK_APP}"
}
# Функция для установки .msi файлов
install_msi_files() {
for msi_file in "${UNPACK_APP}"/*/*.msi; do
if [[ -f "$msi_file" ]]; then
echo "Установка $msi_file ..."
wine_run_install "$msi_file" /q
else
echo "Нет .msi файлов для установки в ${UNPACK_APP}/*."
fi
done
}
# Функция для кодирования URL
encode_url() {
local file_name="$1"
echo "${file_name// /%20}" # Заменяем пробелы на %20
}
# Скачивание всех файлов
download_all() {
for file_name in "${FILES[@]}"; do
local file_url="$(encode_url "$file_name")"
local output="${WH_TMP_DIR}/${file_name// /_}"
echo "Скачивание $file_name..."
if try_download "$BASE_URL/$file_url" "$output"; then
unpack_file "$output"
fi
done
}
# Автоматически скачиваем и устанавливаем все файлы
download_all
install_msi_files
rm -f ${WH_TMP_DIR}/*.zip
try_remove_dir "${UNPACK_APP}"

View File

@ -0,0 +1,65 @@
#!/usr/bin/env bash
# info_ru: Обучающие материалы, примеры, бесплатные библиотеки для T-FLEX CAD 17 (Учебное пособие 17, Стандартные элементы 17, Элементы уплотнительной техники 17, Станочные приспособления 17, Детали штампов листовой штамповки 17, Детали пресс-форм 17, Примеры 17)
########################################################################
export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
export BASE_PFX="tflex17_pfx_x64_v01"
export WINEARCH="win64"
export WINEPREFIX="tflex17"
BASE_URL="https://www.tflex.ru/downloads"
FILES=(
"T-FLEX Tutorial 17.zip"
"Standard parts 17.zip"
"Elements of sealing technology 17.zip"
"Machine tools 17.zip"
"Standard parts for sheet metal dies 17.zip"
"Standard Mold Parts 17.zip"
"Examples 17.zip"
)
UNPACK_RESOURCES="${WH_TMP_DIR}/unpack_resources"
prepair_wine
# Функция для распаковки файла
unpack_file() {
local archive="$1"
7z x -y "$archive" -o"${UNPACK_RESOURCES}"
}
# Функция для установки .msi файлов
install_msi_files() {
for msi_file in "${UNPACK_RESOURCES}"/*/*.msi; do
if [[ -f "$msi_file" ]]; then
echo "Установка $msi_file ..."
wine_run_install "$msi_file" /q
else
echo "Нет .msi файлов для установки в ${UNPACK_RESOURCES}/unpack_dop/*."
fi
done
}
# Функция для кодирования URL
encode_url() {
local file_name="$1"
echo "${file_name// /%20}" # Заменяем пробелы на %20
}
# Скачивание всех файлов
download_all() {
for file_name in "${FILES[@]}"; do
local file_url="$(encode_url "$file_name")"
local output="${WH_TMP_DIR}/${file_name// /_}"
echo "Скачивание $file_name..."
if try_download "$BASE_URL/$file_url" "$output"; then
unpack_file "$output"
fi
done
}
# Автоматически скачиваем и устанавливаем все файлы
download_all
install_msi_files
rm -f ${WH_TMP_DIR}/*.zip
try_remove_dir "${UNPACK_RESOURCES}"

View File

@ -6,6 +6,27 @@ if [[ $(id -u) -eq 0 ]] ; then
exit 1 exit 1
fi fi
##### DEFAULT PATH #####
SCRIPT_NAME="$(basename "$0")"
if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
# переменные для установленного WineHelper в систему
USER_WORK_PATH="$HOME/.local/share/$SCRIPT_NAME"
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
DATA_PATH="/usr/share/$SCRIPT_NAME"
else
# переменные для тестового запуска WineHelper из репозитория
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
RUN_SCRIPT="$(realpath "$0")"
DATA_PATH="$(dirname "$RUN_SCRIPT")"
# минимальная проверка синтаксиса скриптов
for self_check_script in "$RUN_SCRIPT" \
"$DATA_PATH/dependencies.sh" "$DATA_PATH/autoinstall"/* \
"$DATA_PATH/manualinstall"/* "$DATA_PATH/database"/*
do /usr/bin/bash -n "$self_check_script" || exit 1
done
fi
##### MESSAGES FUNCTIONS ##### ##### MESSAGES FUNCTIONS #####
print_error () { printf "\E[31m%s Ошибка: $@ %s\e[0m\n" ;} print_error () { printf "\E[31m%s Ошибка: $@ %s\e[0m\n" ;}
print_warning () { printf "\E[33m%s Предупреждение: $@ %s\e[0m\n" ;} print_warning () { printf "\E[33m%s Предупреждение: $@ %s\e[0m\n" ;}
@ -53,17 +74,6 @@ fi
WINETRICKS_VERSION="20250102" WINETRICKS_VERSION="20250102"
##### DEFAULT VARIABLES ##### ##### DEFAULT VARIABLES #####
SCRIPT_NAME="$(basename "$0")"
if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
USER_WORK_PATH="$HOME/.local/share/$SCRIPT_NAME"
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
DATA_PATH="/usr/share/$SCRIPT_NAME"
else
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
RUN_SCRIPT="$(realpath "$0")"
DATA_PATH="$(dirname "$RUN_SCRIPT")"
fi
WH_VULKAN_LIBDIR="$USER_WORK_PATH/vulkan" WH_VULKAN_LIBDIR="$USER_WORK_PATH/vulkan"
WH_PREFIXES_DIR="$USER_WORK_PATH/prefixes" WH_PREFIXES_DIR="$USER_WORK_PATH/prefixes"
WH_DIST_DIR="$USER_WORK_PATH/dist" WH_DIST_DIR="$USER_WORK_PATH/dist"
@ -228,18 +238,20 @@ create_new_dir () {
unpack () { unpack () {
print_info "Запуск распаковки архива $1" print_info "Запуск распаковки архива $1"
local command outarg
case $1 in case $1 in
*.tar.xz) local command="tar -Jxhf";; *.tar.xz) command="tar -Jxhf" ; outarg="-C " ;;
*.tar.gz) local command="tar -xhzf" ;; *.tar.gz) command="tar -xhzf" ; outarg="-C " ;;
*.tar.zst) local command="tar -I zstd -xhf" ;; *.tar.zst) command="tar -I zstd -xhf" ; outarg="-C " ;;
*.tar) local command="tar -xhf" ;; *.tar) command="tar -xhf" ; outarg="-C " ;;
*.zip|*.exe) command="7z x -y" ; outarg="-o" ;;
esac esac
create_new_dir "$2" create_new_dir "$2"
if $command "$1" -C "$2" ; then if $command "$1" ${outarg}"$2" ; then
print_ok "Архив $1 распакован." print_ok "Файл $1 распакован."
return 0 return 0
else else
print_error "Распаковать архив $1 не удалось!" print_error "Распаковать файл $1 не удалось!"
return 1 return 1
fi fi
} }
@ -923,6 +935,12 @@ init_wineprefix () {
then try_force_link_dir "$DRIVE_C/users/$USER" "$DRIVE_C/users/xuser" then try_force_link_dir "$DRIVE_C/users/$USER" "$DRIVE_C/users/xuser"
fi fi
if [[ ! -f "$WINEPREFIX/.update-timestamp" ]] ; then
print_info "Обновление префикса $WINEPREFIX."
"$WINELOADER" wineboot -u
wait_wineserver
fi
if [[ ! -L "$WINEPREFIX/dosdevices/h:" ]] if [[ ! -L "$WINEPREFIX/dosdevices/h:" ]]
then try_force_link_dir "$HOME" "$WINEPREFIX/dosdevices/h:" then try_force_link_dir "$HOME" "$WINEPREFIX/dosdevices/h:"
fi fi
@ -1324,6 +1342,8 @@ backup_prefix() {
local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack" local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack"
local backup_dest_path="$backup_base_dir/$backup_archive_name" local backup_dest_path="$backup_base_dir/$backup_archive_name"
local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)" local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)"
local temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
local 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"
@ -1331,7 +1351,19 @@ backup_prefix() {
create_new_dir "$temp_backup_dir/dist/" create_new_dir "$temp_backup_dir/dist/"
print_info "Подготовка префикса к упаковке..." print_info "Подготовка префикса к упаковке..."
if cp -a "$WINEPREFIX" "$temp_backup_dir/prefixes/$PREFIX_NAME" ; then if cp -a "$WINEPREFIX" "$temp_prefix_dir" ; then
try_remove_dir "$temp_prefix_dir/dosdevices"
try_remove_file "$temp_prefix_dir/.update-timestamp"
if [[ -d "$temp_users_dir/$USER" ]] \
&& [[ ! -L "$temp_users_dir/$USER" ]]
then
if [[ -L "$temp_users_dir/xuser" ]]
then try_remove_dir "$temp_users_dir/xuser"
fi
create_new_dir "$temp_users_dir/xuser"
cp -fr "$temp_users_dir/$USER"/* "$temp_users_dir/xuser/"
fi
try_remove_dir "$temp_users_dir/$USER"
print_ok "Директория префикса подготовлена." print_ok "Директория префикса подготовлена."
else else
print_error "Не удалось подготовить директорию префикса." print_error "Не удалось подготовить директорию префикса."