68 Commits
0.5.1 ... 0.5.4

Author SHA1 Message Date
Mikhail Tergoev
a15b2621b6 updated changelog to 0.5.4 2025-09-04 16:03:30 +03:00
Mikhail Tergoev
fd00b61c71 added function: find_prefix 2025-09-04 15:53:40 +03:00
Mikhail Tergoev
74eaf34c00 Merge branch 'minergenon-devel' 2025-09-04 12:27:48 +03:00
Sergey Palcheh
a69493df73 database: changed WINEPREFIX=tflex17 to WINEPREFIX=tflex 2025-09-03 10:22:11 +06:00
Sergey Palcheh
6b958dd7f1 added a bash-c call to improve script compatibility 2025-09-03 10:18:52 +06:00
Mikhail Tergoev
2483f4c66c Merge branch 'minergenon-devel' 2025-09-02 17:28:44 +03:00
Sergey Palcheh
ab0e23952e added a button to create a program shortcut
the function of extracting an icon from an exe file is combined with the creation of a desktop file
added the function of automatic prefix detection if it is not specified
2025-09-02 16:23:39 +06:00
Sergey Palcheh
92a682ba8a added a more explicit error message when installing dependencies 2025-09-02 10:44:37 +06:00
Sergey Palcheh
3381054c21 added a winehelper launch button when dependencies are successfully installed 2025-09-02 10:23:44 +06:00
Sergey Palcheh
76b7d4f046 removed the dependency installation success window 2025-09-02 10:11:47 +06:00
Sergey Palcheh
aeae544640 added 64bit versions of wine/proton to the 32bit prefix 2025-09-02 09:50:27 +06:00
Sergey Palcheh
eeb94523b3 the refresh list button has been removed 2025-09-02 09:33:35 +06:00
Sergey Palcheh
a2186b63cb renaming Proton/Wine Lg buttons to LG 2025-09-02 09:25:01 +06:00
Mikhail Tergoev
839b480c39 updated sha256sum.list 2025-09-01 12:06:10 +03:00
Sergey Palcheh
504be8ea5b fixed typos 2025-08-29 10:21:26 +06:00
Sergey Palcheh
662a62267c changed the download and selection of wine/proton versions on the cloud 2025-08-28 21:15:39 +06:00
Mikhail Tergoev
83fe362b37 added all WINE, DXVK and VKD3D to sha256 list 2025-08-28 13:50:48 +03:00
Mikhail Tergoev
f7fdfca743 fixed typos and updated LICENSE_AGREEMENT 2025-08-26 12:01:35 +03:00
Mikhail Tergoev
ffc7098aba Merge branch 'minergenon-devel' 2025-08-26 11:13:21 +03:00
Mikhail Tergoev
50de9bdb14 Merge branch 'minergenon-tflex_wineprefix' 2025-08-26 11:12:30 +03:00
Sergey Palcheh
b4d663f2a7 added a more precise definition of the wine version for the prefix being created 2025-08-26 11:42:10 +06:00
Sergey Palcheh
c5db176ca4 the component manager has been restored 2025-08-26 11:16:50 +06:00
Sergey Palcheh
d73c0a47ab code block removed from _handle_prefix_creation_output method 2025-08-26 10:43:11 +06:00
Sergey Palcheh
aadd579cdc added the ability to install the application in the created prefix 2025-08-25 16:58:42 +06:00
Sergey Palcheh
0608a3f250 the Management header has been deleted 2025-08-25 15:56:47 +06:00
Sergey Palcheh
274a21941d added deletion of the created prefix 2025-08-25 15:43:34 +06:00
Sergey Palcheh
d499147bdc added the choice of a prefix to be created for management 2025-08-25 15:20:57 +06:00
Sergey Palcheh
dd5d8bb657 changes to the default fill button 2025-08-25 14:41:40 +06:00
Sergey Palcheh
f73f717d0e the prefix control unit has been added to the Create prefix tab 2025-08-25 14:19:45 +06:00
Sergey Palcheh
cefb3c8d5a changing the tab display in the main window 2025-08-25 13:03:36 +06:00
Sergey Palcheh
a4f01e7340 refactoring the install_current_script() method 2025-08-25 11:33:45 +06:00
Sergey Palcheh
70f2976a70 fixed the display in the wine version selection bar 2025-08-25 11:13:24 +06:00
Sergey Palcheh
34713bb61a added a prefix creation tab 2025-08-24 20:56:34 +06:00
Sergey Palcheh
eea04f0d91 added separation of wine/proton display by groups 2025-08-23 22:04:29 +06:00
Sergey Palcheh
45bc97d796 added wine/proton separation by prefix bit depth 2025-08-23 20:00:47 +06:00
Sergey Palcheh
88f1febf54 added the function of selecting the wine version with improved downloads 2025-08-23 16:07:26 +06:00
Sergey Palcheh
c756459993 added generation of wine metadata 2025-08-22 18:09:12 +06:00
Sergey Palcheh
b97b2169ab added prefix creation 2025-08-22 13:14:48 +06:00
Sergey Palcheh
6b8909902c determining the version of Wine used 2025-08-20 11:55:33 +06:00
Sergey Palcheh
3bfdf5c01a encapsulation of script parsing logic 2025-08-15 10:48:43 +06:00
Sergey Palcheh
4e1c3e787d simplifying logic in WinetricksManagerDialog 2025-08-15 10:36:11 +06:00
Sergey Palcheh
c1e58bb8a1 the notification window for canceling the installation of dependencies has been changed 2025-08-15 09:58:22 +06:00
Sergey Palcheh
658816a84d correction of typos 2025-08-14 16:22:32 +06:00
Sergey Palcheh
3e13cdf8f0 re-launching the program is disabled 2025-08-14 16:00:58 +06:00
Sergey Palcheh
95dd7ae598 added tooltips for winetricks buttons 2025-08-14 13:55:16 +06:00
Sergey Palcheh
16b9a84191 added system dependency check 2025-08-14 13:15:40 +06:00
Sergey Palcheh
ddea68c11c renaming tflex prefixes 2025-08-13 10:01:18 +06:00
Sergey Palcheh
a27832329d optimization of icon animation in the _start_icon_fade_animation method 2025-08-11 17:40:04 +06:00
Sergey Palcheh
159fc26eca added clearing of the search field when switching tabs 2025-08-11 17:06:54 +06:00
Sergey Palcheh
2666ee33ad refactoring the filter_autoinstall_buttons and filter_manual_buttons functions 2025-08-11 16:59:08 +06:00
Sergey Palcheh
100ffa22ba added winetricks control buttons 2025-08-11 15:41:48 +06:00
Mikhail Tergoev
e766b4dba2 updated changelog to 0.5.3 2025-08-07 12:57:50 +03:00
Mikhail Tergoev
bad7e5780a t-flex-*: fixed install grdcontrol 2025-08-07 12:41:40 +03:00
Mikhail Tergoev
7fbe9ba31b Merge branch 'minergenon-border_radius' 2025-08-07 12:21:22 +03:00
Mikhail Tergoev
377b9e9059 Merge branch 'minergenon-quote_button' 2025-08-07 12:20:47 +03:00
Mikhail Tergoev
a815fa1c20 Merge branch 'minergenon-download_process' 2025-08-07 12:20:05 +03:00
Mikhail Tergoev
63f301d2de Merge branch 'minergenon-license_agreement' 2025-08-07 12:17:58 +03:00
Mikhail Tergoev
213035d868 Merge branch 'minergenon-fixing_panels' 2025-08-07 12:16:05 +03:00
Mikhail Tergoev
65bd514a1a Merge branch 'minergenon-selection_frame' 2025-08-07 12:15:51 +03:00
Sergey Palcheh
8912134827 increased rounding when selecting buttons 2025-08-06 11:52:50 +06:00
Sergey Palcheh
cb3fdc62dc added quotes in the install button 2025-08-05 17:09:13 +06:00
Sergey Palcheh
9611cc52fc the gui loading process has been fixed 2025-08-05 15:05:28 +06:00
Sergey Palcheh
5cdc4a8f4f added blocking of license agreement confirmation 2025-08-04 12:35:29 +06:00
Sergey Palcheh
32fa7f6278 fixing the minimum panel sizes 2025-08-03 13:50:55 +06:00
Sergey Palcheh
b44fcdb63e the license agreement has been placed in a separate file 2025-08-03 11:32:41 +06:00
Sergey Palcheh
3e2ed1cff5 fixed frame deletion 2025-08-02 19:08:45 +06:00
Mikhail Tergoev
a18c4684a7 updated changelog to 0.5.2 2025-08-01 13:29:33 +03:00
Mikhail Tergoev
0cca7b441d dropped patch from winehelper.desktop 2025-08-01 13:28:03 +03:00
17 changed files with 3048 additions and 398 deletions

View File

@@ -1,5 +1,21 @@
История изменений:
0.5.4:
* обновлен графический режим Qt5:
- добавлена возможность установки системных зависимостей
- исправлены/улучшены основные функции
- добавлено управление префиксами (в разработке)
- добавлена возможность создания ярлыка
* добавлено автоматическое создание иконки для ярлыков (desktop файлов)
* префикс tflex17 переименован в tflex (т.к. 18-я версия работает в том же префиксе)
0.5.3:
* исправлена установка grdcontrol для t-flex-*
* обновлен графический режим Qt5
0.5.2:
* исправлен запуск winehelper.desktop для winehelper-qt
0.5.1:
* добавлена функция извлечения иконки из .exe файлов
* добавлен вывод истории изменений командой: winehelper --changelog

14
LICENSE_AGREEMENT Normal file
View File

@@ -0,0 +1,14 @@
Отказ от ответственности:
Некоторые компоненты, устанавливаемые в префикс и необходимые для запуска
приложений, могут быть защищены авторским правом или лицензионными
соглашениями. Вы обязаны самостоятельно убедиться в законности использования
этих компонентов в вашей юрисдикции.
Мы не несём ответственности за нарушение лицензионных соглашений, связанное с
использованием подготовленного префикса, а также за программное обеспечение,
полученное из сторонних источников.
Продолжая установку, вы подтверждаете, что ознакомились с данным отказом от
ответственности и принимаете все риски, связанные с использованием программного
обеспечения.

View File

@@ -4,7 +4,7 @@ _winehelper_completions() {
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix --changelog changelog"
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog"
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
case "${prev}" in

View File

@@ -14,6 +14,7 @@ _winehelper() {
'remove-all[Удалить WineHelper и все связанные данные]'
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
'killall[Убить все процессы]'
'create-prefix[Создать новый префикс]'
'remove-prefix[Удалить префикс и все связанные данные]'
'backup-prefix[Создать резерную копию префикса]'
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
@@ -55,6 +56,8 @@ _winehelper() {
remove-prefix|backup-prefix)
_get_prefixes
;;
create-prefix)
;;
restore-prefix)
_files
;;

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -8,7 +8,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

View File

@@ -5,7 +5,7 @@ export WH_WINDOWS_VER="10"
export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export PROG_VERSION=""
export WH_XDG_OPEN="log"
export INSTALL_DLL="corefonts d3dcompiler_47 dotnet48 vcrun2022 ucrtbase2019 msxml6 fontsmooth=rgb baekmuk droid eufonts ipamona liberation lucida opensymbol sourcehansans tahoma takao uff unifont vlgothic wenquanyi wenquanyizenhei"
@@ -28,8 +28,8 @@ prepair_wine
if [[ -d "$WINEPREFIX" ]] \
&& grep -q "t-flex-cad" "$WINEPREFIX/winetricks.log" \
&& systemctl list-units --type service --state running | grep aksusbd \
&& systemctl list-units --type service --state running | grep hasplmd \
&& systemctl list-units --type service --state running | grep -q aksusbd \
&& systemctl list-units --type service --state running | grep -q hasplmd \
&& rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
then
print_info "Префикс $PREFIX_NAME готов к установке ПО."
@@ -50,7 +50,7 @@ else
if rpm -q grdcontrol | grep -q "$GRDCONTROL_VER"
then print_info "grdcontrol-$GRDCONTROL_VER уже установлен в системе."
else su_run rpm -iv "$AUTOINSTALL_DIR_LIN/Guardant_Linux/grdcontrol.x86_64.rpm"
else su_run "rpm -iv \"$AUTOINSTALL_DIR_LIN/Guardant_Linux/grdcontrol.x86_64.rpm\""
fi
if [[ "$BASE_PFX" == "none" ]] ; then

View File

@@ -7,7 +7,7 @@ export WH_WINE_USE="wine_wh_tflex_10-9_amd64"
export BASE_PFX="tflex17_pfx_x64_v02"
export WINEARCH="win64"
export WH_WINDOWS_VER="10"
export WINEPREFIX="tflex17"
export WINEPREFIX="tflex"
export WH_XDG_OPEN="log"
export WH_USE_MESA_GL_OVERRIDE="1"

137
sha256sum.list Executable file → Normal file
View File

@@ -1,5 +1,4 @@
##### WINE #####
009c95bfe2df3f9264c9c5092f3e30ea7a168dd7869046058a718a70739602d4 wine_wh_tflex_10-9_amd64.tar.xz
3571c40a787f0386e0160b5d471b1bf11fa2a235b497156cd38198b90bcb4a9f wine_x_tkg_10-0_i586.tar.xz
71d6fdfd23d7988471d345c68e81699b8af931352b03dd216424b398f63c7b12 wine_x_tkg_10-0_amd64.tar.xz
@@ -9,13 +8,144 @@ e0a84bb4908c3927954d7eef6b8ac7212e442b8c107d000c6890fec340f96183 wine-9.0.14-al
61bec1230b37b8fcc69fd45f848b44fd88cc41fcdd5dc3080336d7da63660f40 wine-7.16.1-alt1-amd64.tar.xz
6fea17fd131f57c2ebf7ca4c60d3c5a9e819afe16e5d0b77ecb750da99ae0e38 wine-7.16.1-alt1-i586.tar.xz
##### DXVK #####
##### WINE_LG #####
765e52484f06169909b179f4884d04ae4b440ff868e4b5722e64fc7d7a036ad9 WINE_LG_10-10-1.tar.xz
7a5128fcebbeed652ba36c5135821fd2c82493e87d715e8bc63e3210ba7ee849 WINE_LG_10-11.tar.xz
373beeb85c1c8163e752a32a453dcf575dd7ecf971726cecb3195e330d094925 WINE_LG_10-12.tar.xz
92f3c5a47a27644fde3ec1da810afcd5e6c9c5c2bc9c1f5f76a82b55894e745b WINE_LG_10-1.tar.xz
ef8a71c269f5a2a7012aec9c16f307ab49ed09fa85a91b42d6c6b954d40401a6 WINE_LG_10-5.tar.xz
7aca95bd921a102e0a4464f4a8945095e05587bffbb924fe1603d2deb8283ba5 WINE_LG_10-7.tar.xz
503a86e8b9446a4805da524ba5ec2bde591787b354df098135d65f2ed9d66dca WINE_LG_8-18-1.tar.xz
2714260a7f1f7d6427736aad2093dc17c1c10df9641b552e5ac4ac3fc73308ee WINE_LG_9-10.tar.xz
3c2dbb33da9eaa7f3afcbe366293f6abf601257fb782a06040710ec6f1def1ec WINE_LG_9-11.tar.xz
da79f89b1fc3175f113bf5ec35fc2755550159034736cff086f2165480dd6e0f WINE_LG_9-12-2.tar.xz
34a31802e50d6d70e1f4d23520c2d0047ae70d0cb4beb3e04046ee781e136a68 WINE_LG_9-12.tar.xz
6d6fd31ff71fd43f17182b466b6d499b61652775b7dbf25a18c3eaab7eacea2d WINE_LG_9-2.tar.xz
3f0cda10a1019c6a18d832dc547709e612d88297ce332f0835c2bffeae9215c3 WINE_LG_9-5.tar.xz
51ff56e435a90eeff13ffbbac543a820d1df14d65f2e3b760ad100bc946e4bfc WINE_LG_9-7.tar.xz
09901b17a7aaa13e5c1a1f99ab82c9f0d223aa2f5c9ac94938e5a9a0088bb244 WINE_LG_9-9.tar.xz
##### PROTON_LG #####
d0f5b42096bc5ed379a26e415d99963f849129d5cec1ba9134b1ee50100b049b PROTON_LG_10-10.tar.xz
d87eb914ce7e5cab47e6b480aa400f8c7840f39a22d585bf35092a033ac09201 PROTON_LG_10-13.tar.xz
05ca56607af7cee30b4797ad6c6a111d38a52c9d5c2184d30eec2650f1585b58 PROTON_LG_10-15.tar.xz
f8bfac3029bd79e211a6dc592c0959db239fb7807c410ed2a537c34467875c74 PROTON_LG_10-4.tar.xz
83d3cf60bbae6ca9d0508c2fdeaf3887bb72830eb52afc858d4afa009d0faa78 PROTON_LG_10-8.tar.xz
f70039931d644898bb0a44daa7e3d44fcafa9dca0881e2277b1062ecd2a5357a PROTON_LG_8-25-2.tar.xz
3e9202caf11d517406f82209e9e5385a4b0b1e4e16afa8b6f4fd517401537224 PROTON_LG_9-11.tar.xz
0481da38de07c71074c245624404994af164c9a6a584942c6d1f12966db2311a PROTON_LG_9-12.tar.xz
786d6415bb884d0ec80617e02004558634ac6bd99474cd63c25e2e5fd339b112 PROTON_LG_9-15.tar.xz
8f05ee518e1861a79b1830301c57a8d4422b6a9c24dfeec07fde474d283d4152 PROTON_LG_9-16.tar.xz
8bd409e4c56472429042555c1b2102bcd8313a4d40a80fe17a2caac8f4c8d4ed PROTON_LG_9-18.tar.xz
e88e7b076ad1d85d625407468515d6f41dcb20b721a6bd699bcd8818647d136c PROTON_LG_9-19.tar.xz
bd5dfe3a5187eb3583e5bc2fbc7debe40760802539c1317211415edeeeae851e PROTON_LG_9-27.tar.xz
63fde3b768a60cf736dcf3f9922cc2ab606cb7007e4cbe59f10cd038d3bdbee8 PROTON_LG_9-2.tar.xz
e09c5da9ddffc5d390de7689df1778f279cc84a946665cc76ce77861010b2604 PROTON_LG_9-4.tar.xz
03ccc15aa4adcaa49f3eeb52bf2a9127bacd8d578478f716b390e812dab74e21 PROTON_LG_9-5-1.tar.xz
56eae794a48aa7322ce5a636c490974d7f2516528d3153991fb033b0fa5fe3cf PROTON_LG_9-5.tar.xz
82263e1d0ab16130f15d419f2661fc5a7baf29193b9eeeb7eec3f01a3e54a1b3 PROTON_LG_9-7.tar.xz
##### PROTON_STEAM #####
09e6e386a87710996d634e08650bbc733365df65d3491a4372f06cf4e815a8b2 PROTON_STEAM_6.3-8.tar.xz
2f8bdfeb75e5427886aac7d2a599a1ee8900e50d5873a0e620d5703707bf4271 PROTON_STEAM_7.0-5.tar.xz
b33aca95664067c9eff06a2b4380992d43a5d31880ff970fb340e851671be625 PROTON_STEAM_8.0-4.tar.xz
9a20af28f4213e4f1c532b79a20e6a95ef872130784fc306510637342c6f58a1 PROTON_STEAM_8.0-5.tar.xz
##### DXVK #####
d1a86ca53ab7e156e1252d3cf7eed3c66fe0651699cfc9c4ba152024261d8258 dxvk-1.10.1-967.tar.xz
98411effbc1b3611b11c4ca3af2ad29400b08e1c8c380791d6351600a06fb3c7 dxvk-1.10.3-28.tar.xz
061568b51ce99d285ef2d0f1f31aab65b3e6fd34747073859c5a719bec2a7afd dxvk-1.6.1.tar.xz
37ed4a8cd4c2bff3abbf830e6d602c2e0a971eda7c69b3f45834539bc84b1431 dxvk-2.0-116.tar.xz
50269fc2e9a27ec15865ec370e48934d5036774a8da180deb599f481ef6d11c7 dxvk-2.0-26.tar.xz
a218072e6e750406b19602407201eb0e3cee80015d3b5b569373a830ac428c9e dxvk-2.0-34.tar.xz
3ea6e464339be82932d665331d6219021ea7e6f8a1b94972b89feeac0d79aa03 dxvk-2.0-36.tar.xz
526f92560c5a4b1aec81d243641315a8bd8d9d5de8e6b69cd92f4fe5f47cbd79 dxvk-2.1-48.tar.xz
ef7ef69e8c6e3036216cb1df4af33024995650bf956609a512d0e9644fb7c911 dxvk-2.1-51.tar.xz
7ebfc554ac0adeff2aea9c261eca029a921cce1e63bbc8989515f3f132c19130 dxvk-2.1-79.tar.xz
89ddc7f18c5b3066532a7a1b7fceaf0733406c0c03b0cd1d6b37287037670f0b dxvk-2.1-85.tar.xz
bb711363456acf7a5f4cad88e939ad0a9dd92b030ad4568d24a1c083cd9f31b1 dxvk-2.1.tar.xz
7b5d32da81897499b16fd0d630fe6e8faaa764f9671d992af77a380786bb78ff dxvk-2.2-116.tar.xz
e242eff8b1856d357ae8c9233bfd6e13a3a85785dc648bd8d68967732593c4aa dxvk-2.2-137.tar.xz
ff66e31df8d62a5b666c33548ecb98322366df1b9a080e9d3463e08861f08458 dxvk-2.2-164.tar.xz
f1bbfff9aeb4dd0ee55343cdafabf4bfc1d920da3a4c514a99cc1759055185cb dxvk-2.2-1.tar.xz
b71105c70f64664c772a44565b525ae2e3c7a74765b8ef9852db300d6de3b548 dxvk-2.2-34.tar.xz
f0ea1469d8e1e10642e2b12830ade0050d7976930db6dd6a38b83a989caab992 dxvk-2.2-7.tar.xz
50feeffdef071414c82b6ead88e70403685a9c0f482e58c702e97fa1f7bf79ed dxvk-2.3.1-120.tar.xz
74c3e14b89d28d768197f29f1893c08e36336749eeca7f34efdafd38f3f3b0f3 dxvk-2.3.1-37.tar.xz
6c0485f0bd11159cda59f6ec3074918d9b86053833fc3e76af151ad7d56cc216 dxvk-2.3-13.tar.xz
85729d1dfa06c7b569b5e3f0dd834f20902395cdb065419f40de1f3c990f17a9 dxvk-2.3.1-72.tar.xz
f0f999189431c227db08234be41823004cb86e3c85bb4134af62be56ebf764f5 dxvk-2.3.1-9.tar.xz
a9cb76f8889afc133838b00c2cec153f7028df24cf56e2e15f995f14b074af9b dxvk-2.3.1.tar.xz
37ad50ffce2e886a26e5c6557d4acc025971e6c8d04e45c8a39718a6a446984f dxvk-2.3-26.tar.xz
38fde7df801be0c66c454cd1b4001c914d008d7e29886e1526f00dccde4ffad4 dxvk-2.3-57.tar.xz
2054dc956ea98a54c42bc9659270bebc0a8410293819fb862ede3481c41b2864 dxvk-2.3-5.tar.xz
e0dfc268e5c3eeff830c71774070a079572ebb57d709ef11a7bc8a35baad06fd dxvk-2.3-90.tar.xz
76f1b50ae6defc421f593826f192c8f4c8298ffc7b95abbe19f19ac86acebedc dxvk-2.4.1-194.tar.xz
6c04b694e58b9da5c0a15acab3da1a1c3627674bf6612d009d730af8ffc4fb6d dxvk-2.4.1-393.tar.xz
622e40cb20da30cf2771b4a1f30d898e231e39e4d8968f4a8052ae51086f59e7 dxvk-2.4.1-446.tar.xz
47a153abbeb38f9c679c171eca80558bd8744311e642c7f2469fe10fcd9a5db6 dxvk-2.4.1-74.tar.xz
89f2d4a26a7337cc697345e96023d612401717f8a71fa7c9c59835ef2d5c5a40 dxvk-2.4-37.tar.xz
49a29d069a9acf73967c69a4a873cb9d023b657717d3377405e23f4730314be0 dxvk-2.4-41.tar.xz
9b52cfa2b1b27b7fc2e4142c7bba1d93309aca548c7a3e4fac362b6375a587ae dxvk-2.4-94.tar.xz
969b9a720fecf9c53b266c6e289e896e6ed7c49fee260424ab7bc00abbab2d41 dxvk-2.5.1-35.tar.xz
b499be012ffa0b5e3079c9f475c79a749e8f8066924f68919aa898d06a8ba33d dxvk-2.5.2-1.tar.xz
69f8b86ed92cab495f187840aa144691859631d304d2b1880e27de2e49c54244 dxvk-2.5.3-299.tar.xz
00f016b9bd8b2bb1165952edec3ad0da404b525b1b9eec5f4aae490944d47f82 dxvk-2.5.3-31.tar.xz
94c569b205d22e742dd165741a88f77a7a9c6feebd924097fbfd6f169aaa303b dxvk-2.6.1-255.tar.xz
a8a65fe53e054e9f9da89dc848dba689a67be7daba7e59dc82b3be7190925354 dxvk-2.6.1-368.tar.xz
b4c7cbb6c09fdc2c42104ac9e4377167881d3f9d97b2ff125f36f1c351255ea5 dxvk-2.6.2.tar.xz
eec7c6ed63789ebafeda16895678feb8d561ed8117b6ecdb4ab76c0beb3ae17c dxvk-2.6-65.tar.xz
4ac30b8ed56a790c51c6c136c14cd61b8fec9c40fe5fc6ef6d8f042ee155c850 dxvk-2.7-44.tar.xz
8475410048889b9bbef2cf082fc15c67a6610f9dcfef6948b56bd956999bfb88 dxvk-2.7-46.tar.xz
c02b565d2fca1dc4066fb58acfcdd3919386fdbb01b30cfe181d4dd02ac5f1bb dxvk-2.7-5.tar.xz
5f97deb1eeb97ed41d0539264c0ca98e8841f79ec59684f32e7f1ca5c29a109b dxvk-sarek-1.11.0.tar.xz
##### VKD3D #####
df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f vkd3d-proton-1.1-2602.tar.xz
bc86b06af83054e25bad21fe4bec4c10538837221fe847470571df7d556d355b vkd3d-proton-1.1-2967.tar.xz
41bd2465015f069ef2d378e42a0f906fd40f1ce70e1602b36e445209b16e0d50 vkd3d-proton-1.1-3088.tar.xz
6d9eb9053fff0f8ed1760246f889d827dca6fbc48d508997a9b1a5b77a399991 vkd3d-proton-1.1-3090.tar.xz
e92444e85cf59a65b12f14135a5a3ffd51d204bd84b0dfe4bd079fc3d202ec0c vkd3d-proton-1.1-3094.tar.xz
3a88b84fae6c1425a17a9b0335f04a1e2ae414a31a8225fd0512c2bab62191fd vkd3d-proton-1.1-3115.tar.xz
231b501433612598c5b85f16914a7415765b7cf4ec1debc921484efafd68e66b vkd3d-proton-1.1-3132.tar.xz
8786fbde85181036932efa00051f73f6c66f620f97ef0ae3cc795239a817f667 vkd3d-proton-1.1-3325.tar.xz
3724c066273773ea3913a2a34c239465a17b1d04ab08ca8583c8abe97baa2e45 vkd3d-proton-1.1-3339.tar.xz
5b25fb04db003ebb6dbcb4566b9c4471e9b6e36d7271a8bd0b35835debc81fb8 vkd3d-proton-1.1-3410.tar.xz
7af94939575b83dabd9440af940e6bb0b639dbba86d96d5cf53c9a656a4ab28a vkd3d-proton-1.1-3413.tar.xz
854ea12d5441ae7bec27f74e91851eaeab980cf3cc3a58341ccaa3956ee61851 vkd3d-proton-1.1-3414.tar.xz
919a533ee67fc869832a3dad71ef7afde4461d166f251fe1aff879bab61e50ec vkd3d-proton-1.1-3424.tar.xz
cd1a0b923a8d5a41d0f7e875c1706985c5add63b10ec17c73b15a180563cd4c6 vkd3d-proton-1.1-3445.tar.xz
573ff59ed58d9f304332441deb62c10b789512ef818f39e86954a8d7a21ded98 vkd3d-proton-1.1-3488.tar.xz
6a3edc710f9a5ab3a23bc7138a2fdde80a7ce8cc92cb4ecb4ea4e194f5753507 vkd3d-proton-1.1-3516.tar.xz
ab90f2fd8272cb8b4a026291cccd2e336184c149c12cfe54b8a4eaed24841ce0 vkd3d-proton-1.1-3556.tar.xz
8ac31cb696e98579b95e7a6ad62f332d3faa8d72db62edb8bb6ba6110bd9def9 vkd3d-proton-1.1-3622.tar.xz
de5b1bd60505118b440c85a674cdf25a56cdea0de98b6bb41079de1bf1e8d5c0 vkd3d-proton-1.1-3727.tar.xz
e40617aa79940725d31256f39e095f96f49edd84a7a63b4f830a28d69b4f0db0 vkd3d-proton-1.1-3821.tar.xz
24aecefd3b5c4dc56794d39356baa7c0e1ad99fba4e32bb577b3716b8fb1a065 vkd3d-proton-1.1-3908.tar.xz
014aec87dfd14424f5bc3e8fc8d9704a677974e00b54b4ce5cc74042b26de5a0 vkd3d-proton-1.1-3954.tar.xz
fde723756ab563ef11b77842886b3bc511fbfb639fcbee3da67883389a6e5384 vkd3d-proton-1.1-3973.tar.xz
f4b37156792dc14768d1d161db220782d89065eb995c881efbad3de454782123 vkd3d-proton-1.1-3980.tar.xz
c74d9d5958e829732833299a5b37a9d1b77d2fdf9d1991608be515cd46e5f1e8 vkd3d-proton-1.1-4022.tar.xz
a90b829d773c740e51b400aafd8f46ed98f9b43fa26080d1cf52d6abc1f3963a vkd3d-proton-1.1-4051.tar.xz
b780ce056c7fe3868e1c0fac9c5efd30bbbbe73515a313315f5e1593f9bcdcb4 vkd3d-proton-1.1-4110.tar.xz
82134ae8ab79d6b884eb4461db2efd747cfb013a80019e3223def454eec8d631 vkd3d-proton-1.1-4167.tar.xz
0ffd513ef29e048fdfc0527b0894fd74e640be07c520b435a1089bdbcf0d780c vkd3d-proton-1.1-4177.tar.xz
aa0a8cf76a47a5967d5d5c4803d81715c04b609776ebf8b84c1c627f994f26f6 vkd3d-proton-1.1-4191.tar.xz
fdb384c3c3b8fdf2bc55bf68895ff0c514bfef1cefa9d0047d32c9f691fe8ada vkd3d-proton-1.1-4202.tar.xz
510447a2ab92df48124f9b88c97e0713f858ade48273aabc8393cabac7b1b1a4 vkd3d-proton-1.1-4240.tar.xz
1117f775efe00a4d14cb09ee77afe220f88a1fb0ec406ef4f004c17f9049a617 vkd3d-proton-1.1-4252.tar.xz
04288493c9a7671688c19fd304dcb4bcb4e05b6ceb7bd9b3fa57c1d3cb196769 vkd3d-proton-1.1-4271.tar.xz
8b509e904f1e75507eab4ee5ac42c6f5a45593eea9cef5c920175910756cbc47 vkd3d-proton-1.1-4325.tar.xz
1cc20f8c375fda6a9388d01fb9454eb634daf171610e62173daa976d350be002 vkd3d-proton-1.1-4326.tar.xz
90fea8a749e8df3981c8ef506c0ddaeb7a9ce92d7c7a9860f71f02bd5bfe443d vkd3d-proton-1.1-4367.tar.xz
aa2f98f4de0f8a550f0c7d659704b75ec2a77434e93e9b6e75faad9ecc998614 vkd3d-proton-1.1-4478.tar.xz
5d3e9e3a209477bfc41165c628fab3098aa44eddc4410744ecc486672c639906 vkd3d-proton-1.1-4511.tar.xz
3749e0a77283ecd038312b760b49790fc5956215d61f2781572618ebbcedb55d vkd3d-proton-1.1-4591.tar.xz
b3f56f58b5b764aba564c8b8c69eb12425467d57bf2a6457edff08842af03573 vkd3d-proton-1.1-4655.tar.xz
02ed90a4b760fad633146703ce35ef587ce244f7a053853f179bfb0c03ca1b7c vkd3d-proton-1.1-4666.tar.xz
240207848855b08c3412fc5ab54c043e96baa6ea874499fb2e7fe11df114d8c1 vkd3d-proton-1.1-4707.tar.xz
8170e8bd34d47c5607603da2c93737acc19f4ebedc45e02115c282dfc0c36681 vkd3d-proton-2.14.1.tar.xz
edf16d2b37bc77d121d5d81b06b60d3f694e0060c6606e729ceab30de3d27466 vkd3d-proton-sarek-2.6.0.tar.xz
##### CPCSP_PROXY #####
3153088ff28d6af415c3504a421e5382554dbb305f38d5a87dd84df90d680421 wine-cpcsp_proxy-0.6.1-alt1.tar.xz
@@ -24,7 +154,6 @@ df1a940d2e072a884524f66a16e0f0ef74048bc6a6642b96eb257528a522109f vkd3d-proton-1
405bfe3b7c7f80034837c05656535053305727ee4bf1d993521b67b71d08ebc6 extra_fonts_v01.tar.xz
##### PREFIX #####
0e86cd9958d1bd1bfac99e23165a091a4ea2fa3e693c551f69aabeed5f681fea defpfx_x86_v01.tar.xz
# create with wine_x_tkg_10-0_amd64 (universal user: xuser and isolate_home by default)
# winetricks msxml3 msxml4 msxml6 andale arial comicsans courier georgia impact times trebuchet verdana webdings corefonts wsh57 vcrun6 mdac27 jet40 gdiplus lucida tahoma ucrtbase2019 vcrun2019

View File

@@ -7,7 +7,7 @@ if [[ $(id -u) -eq 0 ]] ; then
fi
##### DEFAULT PATH #####
export SCRIPT_NAME USER_WORK_PATH RUN_SCRIPT DATA_PATH CHANGELOG_FILE WH_ICON_PATH LICENSE_FILE
export SCRIPT_NAME USER_WORK_PATH RUN_SCRIPT DATA_PATH CHANGELOG_FILE WH_ICON_PATH LICENSE_FILE AGREEMENT
SCRIPT_NAME="$(basename "$0")"
if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
@@ -18,6 +18,7 @@ if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
CHANGELOG_FILE="$(realpath "/usr/share/doc/winehelper"-*/CHANGELOG)"
WH_ICON_PATH="$DATA_PATH/image/gui/winehelper.svg"
LICENSE_FILE="$(realpath "/usr/share/doc/winehelper"-*/LICENSE)"
AGREEMENT="$(realpath "/usr/share/doc/winehelper"-*/LICENSE_AGREEMENT)"
else
# переменные для тестового запуска WineHelper из репозитория
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
@@ -26,6 +27,7 @@ else
CHANGELOG_FILE="$DATA_PATH/CHANGELOG"
WH_ICON_PATH="$DATA_PATH/image/gui/winehelper-devel.svg"
LICENSE_FILE="$DATA_PATH/LICENSE"
AGREEMENT="$DATA_PATH/LICENSE_AGREEMENT"
# минимальная проверка синтаксиса скриптов
for self_check_script in "$RUN_SCRIPT" \
@@ -175,7 +177,7 @@ fi
##### CHECK NOEXEC FOR /HOME #####
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine невозможен из домашнего каталога."
fi
##### ROOT #####
@@ -188,7 +190,7 @@ su_run () {
((i++))
done
else
pkexec "$@" && return 0
pkexec bash -c "$@" && return 0
fi
fatal "Не удалось установить необходимые компоненты!"
}
@@ -257,13 +259,13 @@ try_copy_dir () {
try_force_link_file () {
if [[ ! -f "$1" ]] ; then
print_warning "нет файла для создания символьной ссылки: $1"
print_warning "нет файла для создания символической ссылки: $1"
if [[ -f "$2" ]] ; then
try_remove_file "$2"
print_warning "удаляем символьную ссылку: $2"
print_warning "удаляем символическую ссылку: $2"
fi
return 1
elif [[ -z "$2" ]] ; then fatal "нет пути для создания символьной ссылки на файл $1"
elif [[ -z "$2" ]] ; then fatal "нет пути для создания символической ссылки на файл $1"
else
try_remove_file "$2"
ln -s -f -r "$1" "$2"
@@ -273,11 +275,11 @@ try_force_link_file () {
}
try_force_link_dir () {
if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для создания символьной сссылки"
elif [[ -z "$2" ]] ; then fatal "не указан путь для создания символьной ссылки на каталог $1"
if [[ ! -d "$1" ]] ; then print_info "каталога $1 не существует для создания символической сссылки"
elif [[ -z "$2" ]] ; then fatal "не указан путь для создания символической ссылки на каталог $1"
else
ln -s -f -r "$1" "$2"
[[ "$?" != 0 ]] && print_error "не удалось сделать символьную ссылку на каталог $1 по пути $2" || return 0
[[ "$?" != 0 ]] && print_error "не удалось сделать символическую ссылку на каталог $1 по пути $2" || return 0
fi
return 1
}
@@ -326,7 +328,7 @@ try_get_page () {
|| grep -q "Forbidden" "$OUT_PAGE_TMP"
then
try_remove_file "$OUT_PAGE_TMP"
fatal "Страница сайта $1 не доступна, или превышено количество запросов к странице."
fatal "Страница сайта $1 не доступна или превышено количество запросов к странице."
else
return 0
fi
@@ -367,20 +369,14 @@ print_license_agreement () {
then return 0
fi
if [[ -f "$AGREEMENT" ]]; then
echo
print_warning "$(cat "$AGREEMENT")"
else
fatal "Файл лицензионного соглашения не найден: $AGREEMENT"
fi
echo
print_warning "Лицензионные соглашения использования сторонних компонентов:
Некоторые компоненты, установленные в префикс и необходимые для запуска приложений, могут
быть защищены авторским правом или лицензионными соглашениями. Вы обязаны самостоятельно
убедиться в законности использования этих компонентов в вашей юрисдикции.
Мы не несём ответственности за нарушение лицензионных соглашений, связанное с использованием
подготовленного префикса, а так же за программное обеспечение поставляемого из сторонних источников.
Подтверждая продолжение установки, вы соглашаетесь что ознакомились с данным отказом от
ответственности и принимаете все риски, связанные с использованием программного обеспечения.
"
if print_confirmation "Подтвердите продолжение установки" ; then
touch "$license_agreement_file"
chmod 600 "$license_agreement_file"
@@ -513,63 +509,41 @@ var_ld_library_path_update () {
return 0
}
extract_icon() {
check_prefix_var
local exe_file="$1"
local ico_name="$(basename "$exe_file" .exe).ico"
local png_name="$(basename "$exe_file" .exe).png"
local tmp_ico_dir="$WH_TMP_DIR/icons"
local user_icons="$WINEPREFIX/icons"
create_new_dir "$tmp_ico_dir"
if ! wrestool -x -t 14 "$exe_file" -o "$tmp_ico_dir/$ico_name" ; then
print_warning "Не удалось извлечь иконку из $exe_file"
try_remove_file "$tmp_ico_dir"
return 1
find_prefix () {
# Автоматическое определение префикса, если он не задан
if [[ -z "$WINEPREFIX" ]] && [[ "$1" == "$WH_PREFIXES_DIR"* ]]; then
local extracted_prefix
extracted_prefix="$(echo "$1" | grep -o ".*/prefixes/[^/]*")"
if [[ -d "$extracted_prefix" ]]; then
export WINEPREFIX="$extracted_prefix"
print_info "Префикс автоматически определен: $(basename "$WINEPREFIX")"
fi
fi
if ! icotool -x -i 1 "$tmp_ico_dir/$ico_name" -o "$tmp_ico_dir/$png_name" ; then
print_warning "Не удалось извлечь иконку из $ico_name"
try_remove_file "$tmp_ico_dir"
return 1
fi
create_new_dir "$user_icons"
if ! try_copy_file "$tmp_ico_dir/$png_name" "$user_icons" ; then
print_warning "Не удалось копировать иконку в префикс"
try_remove_file "$user_icons"
return 1
fi
try_remove_dir "$tmp_ico_dir"
print_ok "Иконка сохранена: $user_icons/$png_name"
return 0
}
create_desktop () {
local name_desktop exe_file desktop_filename icon_file desktop_path
local name_desktop exe_file desktop_filename icon_file desktop_path icon_arg desktop_filename_arg
name_desktop="$1"
exe_file="$2"
if [[ -n $4 ]] && [[ $4 != "nocopy" ]];
then desktop_filename="$4"
else desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")"
fi
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] && [[ -f "$3" ]]
then icon_file="$3"
elif [[ -f "$WH_IMAGE_PATH/$3.png" ]]
then icon_file="$WH_IMAGE_PATH/$3.png"
else icon_file="wine"
icon_arg="$3"
desktop_filename_arg="$4"
# Определяем имя desktop-файла
if [[ -n "$desktop_filename_arg" ]] && [[ "$desktop_filename_arg" != "nocopy" ]]; then
desktop_filename="$desktop_filename_arg"
else
desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|g")"
fi
# Проверяем обязательные аргументы и наличие exe-файла
if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then
fatal "Used: $SCRIPT_NAME --desktop \"desktop_name\" \"path_to_exe\" \"name_png_from_image\""
fatal "Использование: $0 desktop \"Имя ярлыка\" \"/путь/к/файлу.exe\" [иконка|auto] [имя_desktop_файла]"
elif [[ ! -f "$exe_file" ]] ; then
print_warning "Для создания ярлыка не найден исполняемый файл: $exe_file"
BASENAME_EXE="$(basename "$exe_file")"
local BASENAME_EXE="$(basename "$exe_file")"
print_info "Запускаем поиск $BASENAME_EXE"
local FIND_PATH
if [[ -z "$DRIVE_C" ]] || [[ ! -d "$DRIVE_C" ]]
then FIND_PATH="$WH_PREFIXES_DIR"
else FIND_PATH="$DRIVE_C"
@@ -579,11 +553,57 @@ create_desktop () {
-iname "$BASENAME_EXE")"
if [[ -z "$exe_file" ]] || [[ ! -f "$exe_file" ]]
then fatal "Для создания ярлыка не найден исполняемый файл: $BASENAME_EXE"
else print_ok "Исполняемый файл $BASENAME_EXE найден по пути $(dirname "$exe_file")/"
else print_ok "Исполняемый файл $BASENAME_EXE найден по пути: $(dirname "$exe_file")/"
fi
fi
# создаем .desktop файл
find_prefix "$exe_file"
# --- Логика обработки иконки ---
local user_icons_dir="$WINEPREFIX/icons"
create_new_dir "$user_icons_dir"
# Случай 1: Восстановление из бэкапа (передан явный путь)
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] && [[ -f "$icon_arg" ]]; then
icon_file="$icon_arg"
# Случай 2: 'auto' или пустой аргумент - пытаемся извлечь из EXE
elif [[ -z "$icon_arg" ]] || [[ "$icon_arg" == "auto" ]]; then
print_info "Попытка извлечь иконку из $exe_file..."
local png_name="$(basename "$exe_file" .exe).png"
local extracted_icon_path="$user_icons_dir/$png_name"
# Проверяем, существует ли иконка, чтобы избежать повторного извлечения
if [[ -f "$extracted_icon_path" ]]; then
print_info "Иконка уже существует: $extracted_icon_path"
icon_file="$extracted_icon_path"
else
local tmp_ico_dir="$WH_TMP_DIR/icons_$$" # Используем PID для временного каталога
create_new_dir "$tmp_ico_dir"
local ico_name="$(basename "$exe_file" .exe).ico"
if wrestool -x -t 14 "$exe_file" -o "$tmp_ico_dir/$ico_name" &>/dev/null && \
icotool -x -i 1 "$tmp_ico_dir/$ico_name" -o "$tmp_ico_dir/$png_name" &>/dev/null && \
try_copy_file "$tmp_ico_dir/$png_name" "$user_icons_dir/"; then
icon_file="$extracted_icon_path"
print_ok "Иконка успешно извлечена и сохранена: $icon_file"
else
print_warning "Не удалось извлечь иконку из $exe_file. Используется иконка по умолчанию."
icon_file="wine" # Запасной вариант
fi
try_remove_dir "$tmp_ico_dir"
fi
# Случай 3: Передано конкретное имя иконки
elif [[ -f "$WH_IMAGE_PATH/$icon_arg.png" ]]; then
icon_file="$WH_IMAGE_PATH/$icon_arg.png"
# Случай 4: Запасной вариант по умолчанию
else
print_info "Иконка '$icon_arg' не найдена. Используется иконка по умолчанию."
icon_file="wine"
fi
# --- Конец логики обработки иконки ---
# Создаем .desktop файл
create_new_dir "$WH_MENU_DIR"
{
echo "[Desktop Entry]"
@@ -600,19 +620,29 @@ create_desktop () {
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/"
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] ; then
print_info "Пропускаем обновление desktop.list (режим восстановления из бэкапа)"
print_info "Пропускаем обновление desktop.list (режим восстановления)"
else
# добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
# Добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
if [[ -f "$WINEPREFIX/desktop.list" ]] \
&& grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list"
then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list"
fi
create_new_dir "$WINEPREFIX/icons"
try_copy_file "$icon_file" "$WINEPREFIX/icons/"
echo "$name_desktop=${exe_file//$WINEPREFIX/}=$(basename "$icon_file")" >> "$WINEPREFIX/desktop.list"
# Копируем финальную иконку в директорию иконок префикса, если ее там нет
local final_icon_name
if [[ -f "$icon_file" ]]; then
final_icon_name=$(basename "$icon_file")
if [[ ! -f "$user_icons_dir/$final_icon_name" ]]; then
try_copy_file "$icon_file" "$user_icons_dir/"
fi
else
final_icon_name="$icon_file" # например, "wine"
fi
echo "$name_desktop=${exe_file//$WINEPREFIX/}=${final_icon_name}" >> "$WINEPREFIX/desktop.list"
fi
# создаем файл категории для меню
# Создаем файл категории для меню
create_new_dir "$HOME/.local/share/desktop-directories"
if [[ ! -f "$WH_MENU_CATEGORY" ]] ; then
cat > "$WH_MENU_CATEGORY" <<EOF
@@ -623,7 +653,7 @@ Icon=wine
EOF
fi
# Создаем файл меню для всех приложений
# Создаем файл меню для всех приложений WineHelper
create_new_dir "$HOME/.config/menus/applications-merged"
if [[ ! -f "$WH_MENU_CONFIG" ]] ; then
cat > "$WH_MENU_CONFIG" <<EOF
@@ -642,15 +672,15 @@ EOF
EOF
fi
# Обновляем кэш desktop файлов
# Обновляем кэш desktop-файлов
update-desktop-database "$HOME/.local/share/applications"
if [[ $4 != "nocopy" ]] ; then
if [[ "$desktop_filename_arg" != "nocopy" ]] ; then
desktop_path="$(xdg-user-dir DESKTOP)"
print_info "В меню и на рабочем столе создан $desktop_filename.desktop"
print_info "В меню и на рабочем столе создан ярлык: $desktop_filename.desktop"
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$desktop_path"
else
print_info "В меню создан $desktop_filename.desktop"
print_info "В меню создан ярлык: $desktop_filename.desktop"
fi
if [[ -n "$INSTALL_SCRIPT_NAME" ]] \
@@ -815,10 +845,20 @@ init_wine_ver () {
export WINEDIR="$WH_DIST_DIR/$WH_WINE_USE"
if [[ ! -d "$WINEDIR" ]] ; then
local wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz"
try_download "$CLOUD_URL/$WH_WINE_USE.tar.xz" "$wine_package" check256sum
local download_url wine_package
download_url="$CLOUD_URL/$WH_WINE_USE.tar.xz"
wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz"
try_download "$download_url" "$wine_package" "check256sum"
unpack "$wine_package" "$WH_DIST_DIR/"
try_remove_file "$wine_package"
# Управление структурой подкаталога Proton "files", перемещая содержимое вверх
if [[ -d "$WINEDIR/files" ]]; then
print_info "Обнаружена структура каталогов Proton, исправляем пути..."
mv "$WINEDIR"/files/* "$WINEDIR/"
rmdir "$WINEDIR/files"
fi
fi
[[ ! -f "$WINEDIR/version" ]] && echo "$WH_WINE_USE" > "$WINEDIR/version"
@@ -1068,7 +1108,7 @@ init_wineprefix () {
if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then
create_new_dir "$WINEPREFIX"
if [[ "$CLEAR_PREFIX" == "1" ]]
then print_warning "Используется переменная \"CLEAR_PREFIX=1\" что принудительно создает чистый префикс с установкой компонентов с помощью winetricks."
then print_warning "Используется переменная \"CLEAR_PREFIX=1\", которая принудительно создает чистый префикс с установкой компонентов с помощью winetricks."
elif [[ "$BASE_PFX" != "none" ]]
then get_base_pfx "$BASE_PFX"
fi
@@ -1159,7 +1199,7 @@ init_wineprefix () {
for ext in $WH_XDG_OPEN ; do
get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system"
done
print_info "Используется ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
print_info "Используются ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
else
# удаление команды xdg-open из реестра
get_and_set_reg_file --delete "$XDG_OPEN_REG" '@='
@@ -1187,7 +1227,7 @@ init_wineprefix () {
"${cpcsp_proxy_cmd[@]}" | tee "$WINEPREFIX/cpcsp_setup.log"
local CPCSP_EXIT_STATUS="${PIPESTATUS[0]}"
if grep -q "failed to load /opt/cprocsp/" "$WINEPREFIX/cpcsp_setup.log" ; then
fatal "Проверьте правильность установки CryptoPro в системе.\n Инструкция: https://www.altlinux.org/CryptoPro"
fatal "Проверьте правильность установки КриптоПро в системе.\n Инструкция: https://www.altlinux.org/CryptoPro"
fi
if [[ $CPCSP_EXIT_STATUS == "0" ]] ; then
@@ -1469,6 +1509,236 @@ remove_prefix() {
fi
}
select_wine_version() {
local sha256_file="$DATA_PATH/sha256sum.list"
[[ ! -f "$sha256_file" ]] && fatal "Файл с версиями WINE/Proton не найден: $sha256_file"
if [[ "$WINEARCH" == "win64" ]]; then
print_info "Фильтруем версии для 64-битного префикса..."
else # win32
print_info "Фильтруем версии для 32-битного префикса..."
fi
local options=()
local total_versions_found=0
# --- System ---
local system_wine_display_name="system"
if command -v wine &>/dev/null; then
local system_wine_version
system_wine_version=$(wine --version 2>/dev/null)
[[ -n "$system_wine_version" ]] && system_wine_display_name="$system_wine_version"
fi
options+=("--- System ---")
options+=("$system_wine_display_name")
# --- Other versions from sha256sum.list ---
local current_group=""
local group_versions=()
flush_group() {
if [[ ${#group_versions[@]} -gt 0 ]]; then
IFS=$'\n' sorted_versions=($(sort -Vr <<<"${group_versions[*]}"))
unset IFS
options+=("${sorted_versions[@]}")
((total_versions_found+=${#group_versions[@]}))
group_versions=()
fi
}
while IFS= read -r line; do
if [[ "$line" =~ ^#+[[:space:]]([^#[:space:]]+)[[:space:]]#* ]]; then
flush_group
current_group="${BASH_REMATCH[1]}"
# Отображаем только группы, которые являются сборками WINE или PROTON
case "$current_group" in
WINE|WINE_LG|PROTON_LG|PROTON_STEAM)
local pretty_key=$(echo "$current_group" | tr '_' ' ' | sed -e "s/\b\(.\)/\u\1/g")
options+=("--- $pretty_key ---")
;;
*)
current_group=""
;;
esac
elif [[ -n "$current_group" ]] && [[ "$line" =~ [a-f0-9]{64} ]]; then
local filename=$(echo "$line" | awk '{print $2}')
local version_name=${filename%.tar.xz}
if [[ "$WINEARCH" == "win64" ]]; then
if [[ "$version_name" =~ (amd64|x86_64|wow64) ]] || ! [[ "$version_name" =~ i[3-6]86 ]]; then
group_versions+=("$version_name")
fi
else # win32
group_versions+=("$version_name")
fi
fi
done < "$sha256_file"
flush_group
if [[ $total_versions_found -eq 0 ]]; then
print_warning "Не найдено подходящих версий WINE/Proton для архитектуры $WINEARCH."
print_warning "Будет использована версия по умолчанию: $WH_WINE_USE"
return
fi
local selectable_options=("Отмена")
local display_groups=()
local current_group_items=()
local choice_idx=0
flush_current_group() {
if ((${#current_group_items[@]} > 0)); then
# Объединяйте элементы с помощью уникального разделителя для последующего разделения
display_groups+=("$(IFS='@@@'; echo "${current_group_items[*]}")")
current_group_items=()
fi
}
current_group_items+=(" 0) Отмена создания префикса")
for opt in "${options[@]}"; do
if [[ "$opt" == "---"* ]]; then
flush_current_group
display_groups+=("$opt")
else
((choice_idx++))
current_group_items+=(" ${choice_idx}) $opt")
selectable_options+=("$opt")
fi
done
flush_current_group # Очистка последней группы
print_info "Выберите версию WINE/Proton для $WINEARCH префикса:"
local first_block=true
for group_data in "${display_groups[@]}"; do
if [[ "$group_data" == "---"* ]]; then
if [[ "$first_block" = false ]]; then
echo
fi
echo "$group_data"
else
local items_to_print=()
IFS='@@@' read -r -a items_to_print <<< "$group_data"
local num_items=${#items_to_print[@]}
local term_width=${COLUMNS:-80}
local max_len=0
for item in "${items_to_print[@]}"; do
(( ${#item} > max_len )) && max_len=${#item}
done
((max_len+=2))
local num_cols=$(( term_width / max_len ))
(( num_cols = num_cols > 0 ? num_cols : 1 ))
local num_rows=$(( (num_items + num_cols - 1) / num_cols ))
for ((i=0; i<num_rows; i++)); do
for ((j=0; j<num_cols; j++)); do
local index=$(( i + j * num_rows ))
(( index < num_items )) && printf "%-*s" "$max_len" "${items_to_print[index]}"
done
echo
done
fi
first_block=false
done
while true; do
echo
local max_choice=$(( ${#selectable_options[@]} - 1 ))
read -p "Введите номер для выбора wine/proton (0-$max_choice): " user_choice
if [[ "$user_choice" =~ ^[0-9]+$ ]] && (( user_choice >= 0 && user_choice <= max_choice )); then
if [[ "$user_choice" == "0" ]]; then
print_info "Создание префикса отменено."
exit 0
fi
local selected_opt
selected_opt="${selectable_options[$user_choice]}"
if [[ "$selected_opt" == "$system_wine_display_name" ]]; then
export WH_WINE_USE="system"
else
export WH_WINE_USE="$selected_opt"
fi
break
else
print_error "Неверный выбор. Введите число от 0 до $max_choice."
fi
done
}
create_prefix() {
print_info "Существующие префиксы:"
local prefixes=()
for prefix in "$WH_PREFIXES_DIR"/*; do
if [[ -d "$prefix" ]] ; then
prefixes+=("$(basename "$prefix")")
echo " - $(basename "$prefix")"
fi
done
if [[ ${#prefixes[@]} -eq 0 ]]; then
print_info "Нет существующих префиксов."
fi
echo
read -p "Введите имя для нового префикса или 0 для отмены (по умолчанию: default): " prefix_name
if [[ "$prefix_name" == "0" ]] ; then
print_info "Создание префикса отменено."
exit 0
fi
prefix_name=${prefix_name:-default}
if [[ ! "$prefix_name" =~ ^[a-zA-Z0-9_.-]+$ ]] ; then
fatal "Имя префикса может содержать только латинские буквы, цифры, точки, дефисы и подчеркивания"
fi
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
fatal "Префикс с именем '$prefix_name' уже существует. Создание отменено."
fi
print_info "Создается префикс с именем: \"$prefix_name\""
print_info "Выберите разрядность префикса:"
echo " 0) Отмена создания префикса"
echo " 1) 32-bit"
echo " 2) 64-bit"
echo
local arch_choice
read -p "Ваш выбор [0-2] (по умолчанию 1): " arch_choice
case "${arch_choice:-1}" in
0) print_info "Создание префикса отменено." ; exit 0 ;;
1) export WINEARCH="win32" ;;
2) export WINEARCH="win64" ;;
*) fatal "Неверный выбор. Операция отменена." ;;
esac
select_wine_version
print_info "Выберите тип создаваемого префикса:"
echo " 0) Отмена создания префикса"
echo " 1) Чистый префикс (без библиотек)"
echo " 2) С рекомендуемыми библиотеками"
echo
local pfx_type_choice
read -p "Ваш выбор [0-2] (по умолчанию 1): " pfx_type_choice
case "${pfx_type_choice:-1}" in
0) print_info "Создание префикса отменено." ; exit 0 ;;
1) export BASE_PFX="none" ;;
2) ;; # Оставляем BASE_PFX пустым, чтобы init_wineprefix использовал значение по умолчанию
*) fatal "Неверный выбор. Операция отменена." ;;
esac
export WINEPREFIX="$WH_PREFIXES_DIR/$prefix_name"
if ! init_wine_ver || ! init_wineprefix; then
fatal "Ошибка инициализации префикса."
fi
print_ok "Префикс '$prefix_name' (${WINEARCH}) успешно создан."
}
remove_winehelper () {
local answer
if [[ $1 =~ --force|-y ]] ; then
@@ -1479,7 +1749,7 @@ remove_winehelper () {
echo " Это удалит:"
echo " - Все настройки WineHelper"
echo " - Все приложения/программы, установленные через WineHelper"
echo " - Все ярлыки из меню и с рабочего стола созданные с помощью WineHelper"
echo " - Все ярлыки из меню и с рабочего стола, созданные с помощью WineHelper"
echo "======================================================"
if print_confirmation "Продолжить?" ; then
echo "----------------------------------------------"
@@ -1752,6 +2022,7 @@ wh_info () {
installed список установленных программ
run [программа] запуск программы (отладка)
remove-all удалить WineHelper и все связанные данные
create-prefix создать префикс
remove-prefix [имя_префикса] удалить префикс и все связанные данные
backup-prefix [имя_префикса] создать резервную копию префикса
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
@@ -1800,12 +2071,15 @@ case "$arg1" in
backup-prefix) backup_prefix "$@" ;;
restore-prefix) restore_prefix "$@" ;;
remove-all) remove_winehelper "$@" ;;
create-prefix) create_prefix "$@" ;;
remove-prefix) remove_prefix "$@" ;;
create-base-pfx) create_base_pfx "$@" ;;
init-prefix) prepair_wine ; wait_wineserver ;;
*)
if [[ -f "$arg1" ]] ; then
WIN_FILE_EXEC="$(readlink -f "$arg1")"
WIN_FILE_NAME="$(basename "$arg1")"
WIN_FILE_NAME="$(basename "$WIN_FILE_EXEC")"
find_prefix "$WIN_FILE_EXEC"
case "${WIN_FILE_NAME,,}" in
*.exe) prepair_wine ; wine_run $WINE_WIN_START "$WIN_FILE_EXEC" "$@" ;;
*.msi) prepair_wine ; wine_run msiexec /i "$WIN_FILE_EXEC" "$@" ;;

View File

@@ -6,5 +6,4 @@ Comment[ru]=Запуск графического интерфейса WineHelpe
Type=Application
Categories=WineHelper;Utility;Emulator;
StartupNotify=true
Path=/usr/bin/winehelper
Icon=winehelper

File diff suppressed because it is too large Load Diff