fixed create and repair base pfx

This commit is contained in:
Mikhail Tergoev
2026-01-20 20:18:34 +03:00
parent 41232f2315
commit b146b01a82

View File

@@ -149,7 +149,7 @@ check_variables WH_USE_EXTRA_FONTS "0"
check_variables EXTRA_FONTS_VER "01"
check_variables WH_FONT_MSS_REPLACE "0"
check_variables WH_FONT_SMOOTHING "0"
check_variables FREETYPE_PROPERTIES "truetype:interpreter-version=35"
# check_variables FREETYPE_PROPERTIES "truetype:interpreter-version=35"
check_variables STAGING_SHARED_MEMORY "1"
check_variables WINE_LARGE_ADDRESS_AWARE "1"
@@ -1159,37 +1159,25 @@ init_wineprefix () {
export DRIVE_C="$WINEPREFIX/drive_c"
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 [[ ! -d "$WINEPREFIX" ]] ; then
create_new_dir "$WINEPREFIX"
if [[ "$CLEAR_PREFIX" == "1" ]]
then print_warning "Используется переменная \"CLEAR_PREFIX=1\", которая принудительно создает чистый префикс с установкой компонентов с помощью winetricks."
elif [[ "$BASE_PFX" != "none" ]]
then get_base_pfx "$BASE_PFX"
fi
print_info "Обновление префикса $WINEPREFIX."
if [[ -d "$WINEPREFIX/drive_c/windows" ]]
then "$WINELOADER" wineboot -u
else "$WINELOADER" wineboot -i
fi
touch "$WINEPREFIX/.firstboot"
wait_wineserver
fi
if [[ -f "$WINEPREFIX/system.reg" ]] \
&& [[ -z $(grep "Windows $WH_WINDOWS_VER" "$WINEPREFIX/system.reg") ]]
then
if [[ $(echo "$WH_WINDOWS_VER" | sed 's/.*/\L&/') == "xp" ]] \
&& [[ "$WINEARCH" != "win32" ]]
then export WH_WINDOWS_VER="xp64"
fi
"$WINELOADER" winecfg -v $(echo "win${WH_WINDOWS_VER}" | sed 's/.*/\L&/')
if [[ ! -d "$WINEPREFIX/drive_c/windows" ]] ; then
print_info "Создание префикса $WINEPREFIX."
"$WINELOADER" wineboot -i
wait_wineserver
elif [[ ! -f "$WINEPREFIX/.update-timestamp" ]] \
|| [[ ! -d "$WINEPREFIX/drive_c/users" ]]
then
print_info "Обновление префикса $WINEPREFIX."
"$WINELOADER" wineboot -u
wait_wineserver
print_info "Windows версия изменена на win${WH_WINDOWS_VER}"
fi
if [[ -d "$XUSER_PATH" ]] && [[ ! -d "$DRIVE_C/users/$USER" ]]
@@ -1198,19 +1186,47 @@ init_wineprefix () {
then try_force_link_dir "$DRIVE_C/users/$USER" "$XUSER_PATH"
fi
if [[ ! -f "$WINEPREFIX/.update-timestamp" ]] ; then
print_info "Обновление префикса $WINEPREFIX."
"$WINELOADER" wineboot -u
wait_wineserver
fi
if [[ -L "$XUSER_PATH/Desktop" ]]
then rm -f "$XUSER_PATH/Desktop"
fi
create_new_dir "$XUSER_PATH/Desktop"
if [[ ! -L "$WINEPREFIX/dosdevices/h:" ]]
then try_force_link_dir "$HOME" "$WINEPREFIX/dosdevices/h:"
create_new_dir "$XUSER_PATH/Desktop"
create_new_dir "$XUSER_PATH/AppData/Local/Temp"
create_new_dir "$DRIVE_C/ProgramData/Package Cache"
create_new_dir "$DRIVE_C/windows/temp"
create_new_dir "$DRIVE_C/windows/Installer"
if [[ ! -d "$WINEPREFIX/dosdevices" ]] ; then
create_new_dir "$WINEPREFIX/dosdevices"
local run_wbr="1"
fi
if [[ ! -d "${WINEPREFIX}/dosdevices/c:" ]] ; then
try_force_link_dir "${WINEPREFIX}/drive_c/" "${WINEPREFIX}/dosdevices/c:"
fi
if [[ ! -d "${WINEPREFIX}/dosdevices/z:" ]] ; then
try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:"
fi
if [[ ! -d "${WINEPREFIX}/dosdevices/h:" ]] ; then
try_force_link_dir "$HOME" "${WINEPREFIX}/dosdevices/h:"
fi
if [[ $run_wbr == "1" ]] ; then
"$WINELOADER" wineboot -r
wait_wineserver
unset run_wbr
fi
if [[ -f "$WINEPREFIX/system.reg" ]] \
&& ! grep -iq "Microsoft Windows $WH_WINDOWS_VER" "$WINEPREFIX/system.reg"
then
if [[ $(echo "$WH_WINDOWS_VER" | sed 's/.*/\L&/') == "xp" ]] \
&& [[ "$WINEARCH" != "win32" ]]
then export WH_WINDOWS_VER="xp64"
fi
"$WINELOADER" winecfg -v $(echo "win${WH_WINDOWS_VER}" | sed 's/.*/\L&/')
wait_wineserver
print_info "Windows версия изменена на win${WH_WINDOWS_VER}"
fi
if [[ $WH_USE_MESA_GL_OVERRIDE == "1" ]] \
@@ -2124,8 +2140,6 @@ create_base_pfx () {
fi
# удаляем всё ненужное для переноса префикса
try_remove_file "$prefix_dir/.update-timestamp"
try_remove_file "$prefix_dir/.firstboot"
try_remove_file "$prefix_dir/last.conf"
try_remove_dir "$prefix_dir/dosdevices/"
try_remove_dir "$users_dir/$USER"
@@ -2142,7 +2156,7 @@ create_base_pfx () {
cd "$prefix_dir"
# запускаем сжатие префикса
if tar --no-xattrs -c -I 'xz --memlimit=8000MiB -9 -T0' -f "$archive_path" ./* ; then
if tar --no-xattrs -c -I 'xz --memlimit=8000MiB -9 -T0' -f "$archive_path" . ; then
print_ok "Архив создан по пути: $archive_path"
xdg-open "$(dirname "$archive_path")" &
cd -
@@ -2174,7 +2188,6 @@ backup_prefix() {
print_info "Подготовка префикса к упаковке..."
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