diff --git a/auto_completion/bash_completion/winehelper b/auto_completion/bash_completion/winehelper index e27bf5be..a0a9a844 100644 --- a/auto_completion/bash_completion/winehelper +++ b/auto_completion/bash_completion/winehelper @@ -4,7 +4,7 @@ _winehelper_completions() { COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - opts="--help --version --debug install installed install-dxvk install-vkd3d -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog change-wine" + opts="--help --version --debug install installed install-dxvk install-vkd3d -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog change-wine clear-winetricks-cache" wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run" case "${prev}" in diff --git a/auto_completion/zsh_completion/_winehelper b/auto_completion/zsh_completion/_winehelper index 41a49dfc..95505453 100644 --- a/auto_completion/zsh_completion/_winehelper +++ b/auto_completion/zsh_completion/_winehelper @@ -21,6 +21,7 @@ _winehelper() { 'backup-prefix[Создать резерную копию префикса]' 'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]' 'change-wine[Изменить версию Wine/Proton для префикса]' + 'clear-winetricks-cache[Очистить кэш Winetricks]' ) wine_cmd=( diff --git a/autoinstall/t-flex-cad-edu17 b/autoinstall/t-flex-cad-edu17 index 8f6ab8ec..b2b7259a 100644 --- a/autoinstall/t-flex-cad-edu17 +++ b/autoinstall/t-flex-cad-edu17 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX CAD Учебная Версия 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -36,5 +36,5 @@ if try_download "https://www.tflexcad.ru/download/t-flex-cad-free/files/TFCAD_ST try_remove_dir "${WH_TMP_DIR}/Стандартные элементы 17" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX CAD Учебная Версия 17/Program/TFlexCad.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCadEDU" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCadEDU17" fi diff --git a/autoinstall/t-flex-cad17 b/autoinstall/t-flex-cad17 index e566eb44..f6dcfd0a 100644 --- a/autoinstall/t-flex-cad17 +++ b/autoinstall/t-flex-cad17 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX CAD 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -29,5 +29,5 @@ if try_download "https://www.tflex.ru/downloads/T-FLEX%20CAD%2017.zip" "${AUTOIN try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX CAD 17/Program/TFlexCad.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad17" fi diff --git a/autoinstall/t-flex-cad17-applications b/autoinstall/t-flex-cad17-applications index 542b405c..6dd7a669 100644 --- a/autoinstall/t-flex-cad17-applications +++ b/autoinstall/t-flex-cad17-applications @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="Приложения для T-FLEX CAD 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINDOWS_VER="10" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" diff --git a/autoinstall/t-flex-cad17-resources b/autoinstall/t-flex-cad17-resources index 72786ce3..66ec33b8 100644 --- a/autoinstall/t-flex-cad17-resources +++ b/autoinstall/t-flex-cad17-resources @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="Ресурсы для T-FLEX CAD 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINDOWS_VER="10" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" diff --git a/autoinstall/t-flex-cad18 b/autoinstall/t-flex-cad18 index ff5538c8..d3b73283 100644 --- a/autoinstall/t-flex-cad18 +++ b/autoinstall/t-flex-cad18 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX CAD 18" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad18" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -30,5 +30,5 @@ if try_download "https://www.tflex.ru/downloads/V18/T-FLEX%20CAD%2018.zip" "${AU try_remove_dir "${AUTOINSTALL_UNPACK}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX CAD 18/Program/TFlexCad.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad18" fi diff --git a/autoinstall/t-flex-cad18-applications b/autoinstall/t-flex-cad18-applications index 1c5b3673..a3c11956 100644 --- a/autoinstall/t-flex-cad18-applications +++ b/autoinstall/t-flex-cad18-applications @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="Приложения для T-FLEX CAD 18" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad18" export WH_WINDOWS_VER="10" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" diff --git a/autoinstall/t-flex-cad18-resources b/autoinstall/t-flex-cad18-resources index d5280ea7..34145f08 100644 --- a/autoinstall/t-flex-cad18-resources +++ b/autoinstall/t-flex-cad18-resources @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="Ресурсы для T-FLEX CAD 18" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad18" export WH_WINDOWS_VER="10" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" diff --git a/autoinstall/t-flex-cad2d+17 b/autoinstall/t-flex-cad2d+17 index f0aaecdd..59da204f 100644 --- a/autoinstall/t-flex-cad2d+17 +++ b/autoinstall/t-flex-cad2d+17 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX CAD 2D+ 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -29,5 +29,5 @@ if try_download "https://www.tflex.ru/downloads/T-FLEX%20CAD%202D+%2017.zip" "${ try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX CAD 2D+ 17/Program/TFlexCad.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad2D" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad2D17" fi diff --git a/autoinstall/t-flex-cad2d+18 b/autoinstall/t-flex-cad2d+18 index 83cff4ac..772bb35c 100644 --- a/autoinstall/t-flex-cad2d+18 +++ b/autoinstall/t-flex-cad2d+18 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX CAD 2D+ 18" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad18" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -30,5 +30,5 @@ if try_download "https://www.tflex.ru/downloads/V18/T-FLEX%20CAD%202D+%2018.zip" try_remove_dir "${AUTOINSTALL_UNPACK}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX CAD 2D+ 18/Program/TFlexCad.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad2D" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexCad2D18" fi diff --git a/autoinstall/t-flex-docs17 b/autoinstall/t-flex-docs17 index 268b905f..8991348e 100644 --- a/autoinstall/t-flex-docs17 +++ b/autoinstall/t-flex-docs17 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX DOCs 17" -export PROG_ICON="tflexdoc" +export PROG_ICON="tflexdoc17" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -29,5 +29,5 @@ if try_download "https://www.tflex.ru/downloads/DOCs/T-FLEX%20DOCs%2017%20Client try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/Program Files (x86)/T-FLEX DOCs 17/Program/TFlex.DOCs.Client.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlex.DOCs17" fi diff --git a/autoinstall/t-flex-viewer17 b/autoinstall/t-flex-viewer17 index 3acf1ae2..a92e0f13 100644 --- a/autoinstall/t-flex-viewer17 +++ b/autoinstall/t-flex-viewer17 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX Viewer 17" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad17" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -29,5 +29,5 @@ if try_download "https://www.tflex.ru/downloads/T-FLEX%20Viewer%2017.zip" "${AUT try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX Viewer 17/Program/TFlexViewer.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexViewer17" fi diff --git a/autoinstall/t-flex-viewer18 b/autoinstall/t-flex-viewer18 index 865bc7f2..cf783d50 100644 --- a/autoinstall/t-flex-viewer18 +++ b/autoinstall/t-flex-viewer18 @@ -3,7 +3,7 @@ ######################################################################## export PROG_URL="https://www.tflexcad.ru" export PROG_NAME="T-FLEX Viewer 18" -export PROG_ICON="tflexcad" +export PROG_ICON="tflexcad18" export WH_WINE_USE="wine_wh_tflex_10-9_amd64" export BASE_PFX="tflex_pfx_x64_v03" export WINEARCH="win64" @@ -30,5 +30,5 @@ if try_download "https://www.tflex.ru/downloads/V18/T-FLEX%20Viewer%2018.zip" "$ try_remove_dir "${AUTOINSTALL_UNPACK}" WIN_FILE_EXEC="$DRIVE_C/Program Files/T-FLEX Viewer 18/Program/TFlexViewer.exe" - create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" + create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" "TFlexViewer18" fi diff --git a/image/tflexcad.png b/image/tflexcad17.png similarity index 100% rename from image/tflexcad.png rename to image/tflexcad17.png diff --git a/image/tflexcad18.png b/image/tflexcad18.png new file mode 100644 index 00000000..cab99b50 Binary files /dev/null and b/image/tflexcad18.png differ diff --git a/image/tflexdoc.png b/image/tflexdoc17.png similarity index 100% rename from image/tflexdoc.png rename to image/tflexdoc17.png diff --git a/testinstall/declaration b/testinstall/declaration index 5f4af172..e40c79e5 100644 --- a/testinstall/declaration +++ b/testinstall/declaration @@ -3,37 +3,33 @@ ######################################################################## export PROG_URL="https://www.nalog.gov.ru" export WH_WINE_USE="wine_x_tkg_10-0_amd64" -export WINEPREFIX="declaration" +export WINEPREFIX="nalog" export PROG_NAME="Декларация" export PROG_ICON="declarac" -export BASE_PFX="defpfx_x86_v01" +export BASE_PFX="none" export WINEARCH="win32" -export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus" export WH_WINDOWS_VER="10" +export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48" -DECL_FILE="${WH_TMP_DIR}/decl.html" -curl -o "$DECL_FILE" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "https://www.nalog.gov.ru/rn77/program/5961249/" - -if [[ ! -f "$DECL_FILE" ]] \ -|| grep -q "Forbidden" "$DECL_FILE" -then - fatal "The site page is unavailable or the request limit has been exceeded." -fi - -VER_YEAR=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF-2)}' | head -n 1) +try_get_page "https://www.nalog.gov.ru/rn77/program/5961249/" +VER_YEAR=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-2)}' | head -n 1) YEAR="${VER_YEAR//decl/}" -VER_MSI_SLASH=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF-1)}' | head -n 1) -VER_MSI=$(grep -oP 'href="\K[^"]*.msi[^"]*' "$DECL_FILE" | awk -F'/' '{print $(NF)}' | head -n 1) - +VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1) +VER_MSI=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF)}' | head -n 1) AUTOINSTALL_MSI="${WH_TMP_DIR}/${VER_MSI}" prepair_wine -if try_download "https://data.nalog.ru/files/${VER_YEAR}/${VER_MSI_SLASH}/$VER_MSI" "${AUTOINSTALL_MSI}" ; then - wine_run_install "${AUTOINSTALL_MSI}" "/q" +if try_download "https://data.nalog.ru/files/${VER_YEAR}/${VER_MSI_SLASH}/${VER_MSI}" "${AUTOINSTALL_MSI}" ; then + wine_run_install "${AUTOINSTALL_MSI}" /q try_remove_file "${AUTOINSTALL_MSI}" WIN_FILE_EXEC="$DRIVE_C/АО ГНИВЦ/Декларация ${YEAR}/Decl${YEAR}.exe" create_desktop "$PROG_NAME $YEAR" "$WIN_FILE_EXEC" "$PROG_ICON" - remove_desktop "Декларация $((YEAR - 1))" -fi + # Удаляем ярлык предыдущей версии + remove_desktop "Декларация $((YEAR - 1))" + + print_info "Программа Декларация $YEAR успешно установлена" +else + fatal "Не удалось скачать установочный файл" +fi diff --git a/testinstall/npul b/testinstall/npul index 898677f1..c36c1bae 100644 --- a/testinstall/npul +++ b/testinstall/npul @@ -6,32 +6,24 @@ export WH_WINE_USE="wine_x_tkg_10-0_amd64" export WINEPREFIX="nalog" export PROG_NAME="Налогоплательщик ЮЛ" export PROG_ICON="npul" -export BASE_PFX="defpfx_x86_v01" +export BASE_PFX="none" export WINEARCH="win32" -export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus" export WH_WINDOWS_VER="10" +export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48" -NPUL_FILE="${WH_TMP_DIR}/npul.html" -curl -o "$NPUL_FILE" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "https://www.nalog.gov.ru/rn77/program/5961229/" - -if [[ ! -f "$NPUL_FILE" ]] \ -|| grep -q "Forbidden" "$NPUL_FILE" -then - fatal "Страница сайта не доступна, или превышено количество запросов к странице." -fi - -VER_MSI=$(grep -oP 'NalogUL\K[0-9.]+(?=\.msi)' "$NPUL_FILE" | tail -n 1) -VER_MSI_SLASH=$(grep -oP '[0-9]+\.[0-9]+/NalogUL[0-9]+\.msi' "$NPUL_FILE" | tail -n 1) -VER_EXE=$(grep -oP 'NalogUL\K[0-9.]+(?=\.exe)' "$NPUL_FILE" | tail -n 1) -VER_EXE_SLASH=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+/NalogUL[0-9]+\.exe' "$NPUL_FILE" | tail -n 1) +try_get_page "https://data.nalog.ru/rn77/program/5961229/" +VER_MSI=$(read_page | grep -oP 'NalogUL\d+\.msi' | tail -1 | grep -oP '\d+') +VER_MSI_URL="${VER_MSI:0:1}.${VER_MSI:1}" # 492 → 4.92 +VER_EXE=$(read_page | grep -oP 'NalogUL\d+\.exe' | tail -1 | grep -oP '\d+') +VER_EXE_URL="${VER_EXE:0:1}.${VER_EXE:1:2}.${VER_EXE:3}" # 4924 → 4.92.4 AUTOINSTALL_MSI="${WH_TMP_DIR}/NalogUL${VER_MSI}.msi" AUTOINSTALL_EXE="${WH_TMP_DIR}/NalogUL${VER_EXE}.exe" prepair_wine -if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_SLASH}" "${AUTOINSTALL_MSI}" ; then +if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_URL}/NalogUL${VER_MSI}.msi" "${AUTOINSTALL_MSI}" ; then wine_run_install "${AUTOINSTALL_MSI}" /quiet INSTALLDIR="c:\npul" - try_remove_file "${AUTOINSTALL_MSI}" + try_remove_file "${AUTOINSTALL_MSI}" PRINT_INSTALLER="$(find "$DRIVE_C/npul/INPUTDOC" -name "*.msi")" wine_run_install "${PRINT_INSTALLER}" "/q" @@ -42,7 +34,7 @@ if try_download "https://data.nalog.ru/files/nalul/${VER_MSI_SLASH}" "${AUTOINST fi if [[ -n "$VER_EXE" ]] \ -&& try_download "https://data.nalog.ru/files/nalul/${VER_EXE_SLASH}" "${AUTOINSTALL_EXE}" +&& try_download "https://data.nalog.ru/files/nalul/${VER_EXE_URL}/NalogUL${VER_EXE}.exe" "${AUTOINSTALL_EXE}" then wine_run_install "${AUTOINSTALL_EXE}" "/SILENT" try_remove_file "${AUTOINSTALL_EXE}" @@ -53,4 +45,3 @@ fi touch "$DRIVE_C/npul/INPUTDOC/linux.txt" WIN_FILE_EXEC="$DRIVE_C/npul/INPUTDOC/inputdoc.exe" create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" -try_remove_file "$NPUL_FILE" diff --git a/testinstall/ppdgr2 b/testinstall/ppdgr2 index 3bf87eba..dd6b5ceb 100644 --- a/testinstall/ppdgr2 +++ b/testinstall/ppdgr2 @@ -2,24 +2,26 @@ # info_ru: Подготовка документов для государственной регистрации (ППДГР) ######################################################################## export PROG_URL="https://www.nalog.gov.ru" -export AUTOINSTALL_EXE="${WH_TMP_DIR}/SetupPPDGR2.msi" export WH_WINE_USE="wine_x_tkg_10-0_amd64" -export WINEPREFIX="ppdgr2" +export WINEPREFIX="nalog" export PROG_NAME="ППДГР-2" -# export PROG_VERSION="" export PROG_ICON="ppdgr" -# export ADD_MIME_TYPE="" -export BASE_PFX="defpfx_dn48_x86_v01" +export BASE_PFX="none" export WINEARCH="win32" -export INSTALL_DLL="dotnet48 msxml3 msxml4 msxml6 corefonts lucida wsh57 vcrun6 jet40 gdiplus" export WH_WINDOWS_VER="10" var_winedlloverride_update "msxml4=b,wininet=b" +export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48" + +try_get_page "https://www.nalog.gov.ru/rn77/program/5961277/" +VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.msi[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1) +AUTOINSTALL_EXE="${WH_TMP_DIR}/SetupPPDGR2.msi" prepair_wine -if try_download "https://data.nalog.ru/files/ppdgr/2.7.0/SetupPPDGR2.msi" "${AUTOINSTALL_EXE}" ; then +if try_download "https://data.nalog.ru/files/ppdgr/${VER_MSI_SLASH}/SetupPPDGR2.msi" "${AUTOINSTALL_EXE}" ; then wine_run_install "${AUTOINSTALL_EXE}" /q try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/АО ГНИВЦ/ППДГР-2/PPDGR2.exe" create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" fi +https://data.nalog.ru/files/ppdgr/2.7.3/SetupPPDGR2.msi diff --git a/testinstall/soun b/testinstall/soun index 8f9e1828..8b62629a 100644 --- a/testinstall/soun +++ b/testinstall/soun @@ -2,20 +2,21 @@ # info_ru: Справочник кодов обозначения налоговых органов для целей учета налогоплательщиков ######################################################################## export PROG_URL="https://www.nalog.gov.ru" -export AUTOINSTALL_EXE="${WH_TMP_DIR}/soun_ins.exe" export WH_WINE_USE="wine_x_tkg_10-0_amd64" -export WINEPREFIX="soun" +export WINEPREFIX="nalog" export PROG_NAME="СОУН" -# export PROG_VERSION="" export PROG_ICON="soun" -# export ADD_MIME_TYPE="" -export BASE_PFX="defpfx_x86_v01" +export BASE_PFX="none" export WINEARCH="win32" -export INSTALL_DLL="corefonts" export WH_WINDOWS_VER="10" +export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48" + +try_get_page "https://www.nalog.gov.ru/rn77/program/5961268/" +VER_MSI_SLASH=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF-1)}' | head -n 1) +AUTOINSTALL_EXE="${WH_TMP_DIR}/soun_ins.exe" prepair_wine -if try_download "https://data.nalog.ru/files/Soun/2.6.2/soun_ins.exe" "${AUTOINSTALL_EXE}" ; then +if try_download "https://data.nalog.ru/files/Soun/${VER_MSI_SLASH}/soun_ins.exe" "${AUTOINSTALL_EXE}" ; then # TODO: Тихий режим или предупреждение wine_run_install "${AUTOINSTALL_EXE}" try_remove_file "${AUTOINSTALL_EXE}" diff --git a/testinstall/tester_n b/testinstall/tester_n index d64145ee..d85cb3b4 100644 --- a/testinstall/tester_n +++ b/testinstall/tester_n @@ -2,22 +2,23 @@ # info_ru: Программа проверки файлов на соответствие форматам представления в электронном виде налоговых деклараций, бухгалтерской отчетности. ######################################################################## export PROG_URL="https://www.nalog.gov.ru" -export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-" -export AUTOINSTALL_EXE="${WH_TMP_DIR}/tester2269.exe" export WH_WINE_USE="wine_x_tkg_10-0_amd64" export WINEPREFIX="nalog" export PROG_NAME="Тестер" -# export PROG_VERSION="" export PROG_ICON="tester" -# export ADD_MIME_TYPE="" -export BASE_PFX="defpfx_x86_v01" +export BASE_PFX="none" export WINEARCH="win32" -export INSTALL_DLL="msxml3 msxml4 msxml6 corefonts wsh57 vcrun6 jet40 gdiplus" export WH_WINDOWS_VER="10" +export INSTALL_DLL="corefonts micross tahoma lucida riched20 comctl32 msxml3 msxml4 msxml6 mdac28 wsh57 vcrun6 vb6run jet40 gdiplus vcrun2019 dotnet20sp2 dotnet40 dotnet48" + +try_get_page "https://www.nalog.gov.ru/rn77/program/5961279/" +VER_EXE_SLASH=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF-1)}' | tail -n 1) +VER_EXE=$(read_page | grep -oP 'href="\K[^"]*.exe[^"]*' | awk -F'/' '{print $(NF)}' | tail -n 1) +AUTOINSTALL_EXE="${WH_TMP_DIR}/${VER_EXE}" prepair_wine -if try_download "https://data.nalog.ru/files/tester/2.269/tester2269.exe" "${AUTOINSTALL_EXE}" ; then - wine_run_install "${AUTOINSTALL_EXE}" +if try_download "https://data.nalog.ru/files/tester/${VER_EXE_SLASH}/${VER_EXE}" "${AUTOINSTALL_EXE}" ; then + wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- try_remove_file "${AUTOINSTALL_EXE}" WIN_FILE_EXEC="$DRIVE_C/Tester/tester.exe" diff --git a/winehelper b/winehelper index e67dbd48..a53220f8 100755 --- a/winehelper +++ b/winehelper @@ -2293,6 +2293,30 @@ run_change_wine_version() { print_ok "Версия Wine для префикса $PREFIX_NAME успешно изменена на $WH_WINE_USE." } +clear_winetricks_cache() { + local winetricks_cache_dir="$HOME/.cache/winetricks" + local winehelper_wt_cache_dir="$HOME/.cache/winehelper/winetricks" + + if [[ ! -d "$winetricks_cache_dir" ]] && [[ ! -d "$winehelper_wt_cache_dir" ]]; then + print_info "Кэш Winetricks не найден. Очистка не требуется." + return 0 + fi + + if [[ ! $1 =~ --force|-y ]] ; then + print_warning "Вы собираетесь очистить кэш Winetricks." + echo "Будут удалены все скачанные установщики Winetricks и списки компонентов." + if ! print_confirmation "Продолжить?" + then + print_info "Операция отменена." + exit 1 + fi + fi + print_info "Очистка кэша Winetricks..." + try_remove_dir "$winetricks_cache_dir" + try_remove_dir "$winehelper_wt_cache_dir" + print_ok "Кэш Winetricks успешно очищен." +} + wh_info () { echo "Использование: $SCRIPT_NAME [команда] @@ -2312,6 +2336,7 @@ wh_info () { remove-prefix [имя_префикса] удалить префикс и все связанные данные backup-prefix [имя_префикса] создать резервную копию префикса restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии + clear-winetricks-cache очистить кэш Winetricks Параметры: --help показать эту справку и выйти @@ -2370,6 +2395,7 @@ case "$arg1" in remove-prefix) remove_prefix "$@" ;; create-base-pfx) create_base_pfx "$@" ;; init-prefix) prepair_wine ; wait_wineserver ;; + clear-winetricks-cache) clear_winetricks_cache "$@" ;; *) if [[ -f "$arg1" ]] ; then WIN_FILE_EXEC="$(readlink -f "$arg1")" diff --git a/winehelper_gui.py b/winehelper_gui.py index d946ad3e..5d5b7d97 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -446,6 +446,7 @@ class WinetricksManagerDialog(QDialog): self.previous_tab_widget = None self.cache_dir = os.path.join(os.path.expanduser("~"), ".cache", "winehelper", "winetricks") os.makedirs(self.cache_dir, exist_ok=True) + self.is_reloading_after_cache_clear = False self.setWindowTitle(f"Менеджер компонентов для префикса: {os.path.basename(prefix_path)}") self.setMinimumSize(800, 500) @@ -478,8 +479,14 @@ class WinetricksManagerDialog(QDialog): self.log_output.setText(self.INFO_TEXT) main_layout.addWidget(self.log_output) - # Кнопки управления, выровненные по правому краю + # Кнопки управления button_layout = QHBoxLayout() + + self.clear_cache_button = QPushButton("Очистить кеш") + self.clear_cache_button.setStyleSheet("background-color: red; color: white;") + self.clear_cache_button.clicked.connect(self.clear_winetricks_cache) + button_layout.addWidget(self.clear_cache_button) + button_layout.addStretch(1) self.apply_button = QPushButton("Применить") @@ -736,9 +743,18 @@ class WinetricksManagerDialog(QDialog): self._log(output) self._log("--------------------------------------------------") + # Проверяем, были ли ошибки во время загрузки какой-либо из категорий + has_errors = any(status == 'error' for status in self.category_statuses.values()) + self.loading_count -= 1 if self.loading_count == 0: self._update_ui_state() + if self.is_reloading_after_cache_clear: + if has_errors: + self._log("\n=== Ошибка при обновлении списков. Проверьте лог выше. ===", "red") + else: + self._log("\n=== Списки успешно обновлены ===") + self.is_reloading_after_cache_clear = False # Сбрасываем флаг def _on_item_changed(self, item): """Обрабатывает изменение состояния чекбокса, предотвращая снятие галочки с установленных.""" @@ -895,6 +911,64 @@ class WinetricksManagerDialog(QDialog): self.installation_complete.emit() self.installation_finished = True + def clear_winetricks_cache(self): + """Запускает очистку кэша Winetricks.""" + reply = self._show_message_box( + "Очистка кэша Winetricks", + "Вы собираетесь удалить все скачанные установщики и списки компонентов Winetricks.\n\n" + "Это действие может потребоваться, если у вас возникают проблемы со скачиванием или установкой компонентов.\n\n" + "Продолжить?", + QMessageBox.Question, + {"buttons": {"Да": QMessageBox.YesRole, "Нет": QMessageBox.NoRole}, "default": "Нет"} + ) + + if reply != "Да": + return + + # Блокируем UI на время выполнения + self.tabs.setEnabled(False) + self.clear_cache_button.setEnabled(False) + self.apply_button.setEnabled(False) + self.reinstall_button.setEnabled(False) + self.close_button.setEnabled(False) + + self.log_output.clear() + + self.cache_clear_process = QProcess(self) + self.cache_clear_process.setProcessChannelMode(QProcess.MergedChannels) + + def handle_output(): + output = self.cache_clear_process.readAll().data().decode('utf-8', 'ignore').strip() + if output: + self._log(output) + + def handle_finish(exit_code, exit_status): + if exit_code == 0: + self.is_reloading_after_cache_clear = True # Устанавливаем флаг перед перезагрузкой + self.category_statuses.clear() # Очищаем статусы перед новой загрузкой + # Воссоздаем директорию кэша, так как скрипт ее полностью удалил + os.makedirs(self.cache_dir, exist_ok=True) + self._log("Обновление списков...") + self.initial_states.clear() + self.load_all_categories() + else: + self._log(f"\n=== Ошибка (код: {exit_code}) ===", "red") + + # Восстанавливаем UI + self.tabs.setEnabled(True) + self.clear_cache_button.setEnabled(True) + self.close_button.setEnabled(True) + self._update_ui_state() # Обновляем состояние кнопок Применить/Переустановить + + self.cache_clear_process.readyRead.connect(handle_output) + self.cache_clear_process.finished.connect(handle_finish) + + winehelper_path = self.parent().winehelper_path if hasattr(self.parent(), 'winehelper_path') else Var.RUN_SCRIPT + args = ["clear-winetricks-cache", "--force"] + + self._log(f"Выполнение: {shlex.quote(winehelper_path)} {' '.join(args)}\n") + self.cache_clear_process.start(winehelper_path, args) + def closeEvent(self, event): """Обрабатывает закрытие окна, чтобы предотвратить выход во время установки.""" # Проверяем, запущен ли процесс установки/переустановки @@ -938,6 +1012,8 @@ class WinetricksManagerDialog(QDialog): """Добавляет сообщение в лог с возможностью указания цвета.""" if color: self.log_output.append(f'{message}') + # Сбрасываем формат, чтобы следующий текст не наследовал цвет + self.log_output.setCurrentCharFormat(QTextCharFormat()) else: self.log_output.append(message) self.log_output.moveCursor(QTextCursor.End) @@ -2291,6 +2367,11 @@ class WineHelperGUI(QMainWindow): # Если нужно скрыть тестовые версии и они были добавлены elif not is_checked and test_buttons: + # Если текущая активная кнопка находится среди удаляемых, сбрасываем ее + if self.current_active_button in test_buttons: + self._reset_info_panel_to_default("Автоматическая установка") + self.current_active_button = None + # Останавливаем анимацию и удаляем виджеты тестовых кнопок for btn in test_buttons: if btn in self.icon_animators: