forked from CastroFidel/winehelper
fixed create and repair base pfx
This commit is contained in:
85
winehelper
85
winehelper
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user