Compare commits
8 Commits
f7d189fa53
...
0.4.3
Author | SHA1 | Date | |
---|---|---|---|
aca10b71fe | |||
9c332106c3 | |||
fe8f384681 | |||
b46728e2e2 | |||
8ba7c99b45 | |||
37f4f26495 | |||
499260b5dc | |||
3033f6022a |
13
CHANGELOG
13
CHANGELOG
@ -1,5 +1,18 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
|
0.4.3:
|
||||||
|
* исправлено обновление префикса при первом запуске
|
||||||
|
|
||||||
|
0.4.2:
|
||||||
|
* исправлено создание и восстановление резервных копий с разными именами пользователей
|
||||||
|
|
||||||
|
0.4.1:
|
||||||
|
* добавлена возможность создания резервной копии префикса:
|
||||||
|
winehelper backup-prefix [имя_префикса]
|
||||||
|
* добавлена возможность восстановления резервной копии префикса:
|
||||||
|
winehelper restore-prefix "путь/до/резервной_копии.whpack"
|
||||||
|
* создание и восстановление резервной копии префикса включает в себя требуемую версиею WINE и информацию для создания .desktop файлов (ярлыков), что дает возможность переноса префикса на ПК без доступа к интернету
|
||||||
|
|
||||||
0.4.0:
|
0.4.0:
|
||||||
* добавлена автоматическая установка и настройка wine-cpcsp_proxy при
|
* добавлена автоматическая установка и настройка wine-cpcsp_proxy при
|
||||||
использовании переменной WH_USE_CPCSP_PROXY=1
|
использовании переменной WH_USE_CPCSP_PROXY=1
|
||||||
|
@ -19,11 +19,11 @@ apt-repo | grep -q "x86_64-i586" || fatal "Репозиторий x86_64-i586 н
|
|||||||
windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch"
|
windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch"
|
||||||
|
|
||||||
##### INSTALL DEPENDENCIES #####
|
##### INSTALL DEPENDENCIES #####
|
||||||
|
# fonts-ttf-ms
|
||||||
|
|
||||||
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
||||||
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
||||||
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
||||||
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
||||||
|
|
||||||
apt-get install {i586-,}wine
|
apt-get install {i586-,}wine
|
||||||
|
|
||||||
# yad zenity
|
|
||||||
|
83
winehelper
83
winehelper
@ -131,6 +131,8 @@ su_run () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
##### CHECK DEPENDENCIES #####
|
##### CHECK DEPENDENCIES #####
|
||||||
|
# fonts-ttf-ms
|
||||||
|
|
||||||
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
||||||
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
||||||
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
||||||
@ -865,14 +867,14 @@ check_prefix_var () {
|
|||||||
else
|
else
|
||||||
fatal "Неверный выбор."
|
fatal "Неверный выбор."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Выбран префикс: $WINEPREFIX"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
||||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PREFIX_NAME="$(basename "$WINEPREFIX")"
|
export PREFIX_NAME="$(basename "$WINEPREFIX")"
|
||||||
|
print_info "Выбран префикс: $PREFIX_NAME"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@ -921,6 +923,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
|
||||||
@ -1216,25 +1224,18 @@ run_autoinstall () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remove_prefix() {
|
remove_prefix() {
|
||||||
local prefix_name="$1"
|
export WINEPREFIX="$1"
|
||||||
local prefix_path="$WH_PREFIXES_DIR/$prefix_name"
|
if [[ -z "$WINEPREFIX" ]]
|
||||||
|
then print_error "Не указано имя префикса для удаления!"
|
||||||
if [[ -z "$prefix_name" ]]; then
|
|
||||||
print_error "Не указано имя префикса для удаления."
|
|
||||||
echo "Использование: $SCRIPT_NAME remove-prefix [имя_префикса]"
|
|
||||||
echo "Доступные префиксы:"
|
|
||||||
ls -1 "$WH_PREFIXES_DIR"
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
check_prefix_var
|
||||||
if [[ ! -d "$prefix_path" ]]; then
|
if [[ ! -d "$WINEPREFIX" ]]
|
||||||
print_error "Префикс "$prefix_name" не найден."
|
then fatal "Префикса \"$PREFIX_NAME\" не существует!"
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! $2 =~ --force|-y ]] ; then
|
if [[ ! $2 =~ --force|-y ]] ; then
|
||||||
echo "======================================================"
|
echo "======================================================"
|
||||||
print_warning "Вы собираетесь удалить префикс "$prefix_name"."
|
print_warning "Вы собираетесь удалить префикс "$PREFIX_NAME"."
|
||||||
echo "Это приведёт к:"
|
echo "Это приведёт к:"
|
||||||
echo " - Полному удалению всех данных префикса"
|
echo " - Полному удалению всех данных префикса"
|
||||||
echo " - Удалению всех программ, установленных в этом префиксе"
|
echo " - Удалению всех программ, установленных в этом префиксе"
|
||||||
@ -1247,13 +1248,12 @@ remove_prefix() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
try_remove_dir "$prefix_path"
|
|
||||||
|
|
||||||
if [[ $? -eq 0 ]]; then
|
if try_remove_dir "$WINEPREFIX" ; then
|
||||||
print_ok "Префикс "$prefix_name" успешно удален."
|
print_ok "Префикс "$PREFIX_NAME" успешно удален."
|
||||||
|
|
||||||
for desktop_file in "$WH_MENU_DIR"/*.desktop; do
|
for desktop_file in "$WH_MENU_DIR"/*.desktop; do
|
||||||
if grep -q "$prefix_path" "$desktop_file"; then
|
if grep -q "$WINEPREFIX" "$desktop_file"; then
|
||||||
desktop_name=$(basename "$desktop_file")
|
desktop_name=$(basename "$desktop_file")
|
||||||
remove_desktop "${desktop_name%.*}"
|
remove_desktop "${desktop_name%.*}"
|
||||||
fi
|
fi
|
||||||
@ -1261,7 +1261,7 @@ remove_prefix() {
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
print_error "Не удалось удалить префикс "$prefix_name"."
|
print_error "Не удалось удалить префикс "$PREFIX_NAME"."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -1330,6 +1330,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"
|
||||||
@ -1337,7 +1339,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 "Не удалось подготовить директорию префикса."
|
||||||
@ -1363,6 +1377,7 @@ backup_prefix() {
|
|||||||
|
|
||||||
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."
|
||||||
@ -1377,22 +1392,31 @@ backup_prefix() {
|
|||||||
|
|
||||||
restore_prefix() {
|
restore_prefix() {
|
||||||
local backup_archive_path="$1"
|
local backup_archive_path="$1"
|
||||||
local temp_extract_dir
|
local temp_extract_dir prefix_name
|
||||||
|
|
||||||
|
|
||||||
if [[ -z "$backup_archive_path" ]] ; then
|
if [[ -z "$backup_archive_path" ]] ; then
|
||||||
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
||||||
|
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
||||||
if [[ -z "$backup_archive_path" ]] ; then
|
if [[ -z "$backup_archive_path" ]] ; then
|
||||||
fatal "Путь к архиву не указан. Восстановление отменено."
|
fatal "Путь к архиву не указан. Восстановление отменено."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
|
||||||
if [[ ! -f "$backup_archive_path" ]]
|
if [[ ! -f "$backup_archive_path" ]]
|
||||||
then fatal "Файл архива не найден: $backup_archive_path"
|
then fatal "Файл архива не найден: $backup_archive_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Восстановление из резервной копии: $backup_archive_path"
|
print_info "Восстановление из резервной копии: $backup_archive_path"
|
||||||
|
|
||||||
|
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||||
|
|
||||||
|
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)"
|
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
||||||
create_new_dir "$temp_extract_dir"
|
create_new_dir "$temp_extract_dir"
|
||||||
|
|
||||||
@ -1405,19 +1429,12 @@ restore_prefix() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
||||||
local prefix_name prefix_dir
|
local prefix_name
|
||||||
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
||||||
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"
|
||||||
|
|
||||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
|
||||||
fatal "Префикс $prefix_name уже существует!
|
|
||||||
Удалите его если действительно желаете востановить префикс заново.
|
|
||||||
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/dist" ]] ; then
|
if [[ -d "$temp_extract_dir/dist" ]] ; then
|
||||||
print_info "Восстановление версий WINE"
|
print_info "Восстановление версий WINE"
|
||||||
if cp -fr "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"
|
if cp -fr "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"
|
||||||
|
Reference in New Issue
Block a user