diff --git a/winehelper b/winehelper index c7fb8e3..e39de2f 100755 --- a/winehelper +++ b/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