forked from CastroFidel/winehelper
		
	changed the download and selection of wine/proton versions on the cloud
This commit is contained in:
		
							
								
								
									
										137
									
								
								sha256sum.list
									
									
									
									
									
								
							
							
						
						
									
										137
									
								
								sha256sum.list
									
									
									
									
									
								
							| @@ -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 | ||||
|   | ||||
							
								
								
									
										260
									
								
								winehelper
									
									
									
									
									
								
							
							
						
						
									
										260
									
								
								winehelper
									
									
									
									
									
								
							| @@ -811,39 +811,11 @@ init_wine_ver () { | ||||
|         export WINEDIR="$WH_DIST_DIR/$WH_WINE_USE" | ||||
|  | ||||
|         if [[ ! -d "$WINEDIR" ]] ; then | ||||
|             local download_url wine_package_name wine_package check_sum_arg | ||||
|             WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" | ||||
|             local download_url wine_package | ||||
|             download_url="$CLOUD_URL/$WH_WINE_USE.tar.xz" | ||||
|             wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz" | ||||
|  | ||||
|             # Сначала пытаемся сформировать URL по старой схеме, как основной для автоустановки | ||||
|             local old_schema_url="$CLOUD_URL/$WH_WINE_USE.tar.xz" | ||||
|  | ||||
|             # `curl -f -s -I` делает HEAD-запрос. `-f` заставляет его вернуть код ошибки при 404. | ||||
|             if curl -f -s -I "$old_schema_url" > /dev/null ; then | ||||
|                 download_url="$old_schema_url" | ||||
|             elif [[ -f "$WINE_METADATA_FILE" ]]; then | ||||
|                 # Если по старому URL ничего нет, ищем в метаданных | ||||
|                 print_info "Версия '$WH_WINE_USE' не найдена на основном сервере, ищем в метаданных..." | ||||
|                 download_url=$(jq -r --arg name "$WH_WINE_USE" '.[] | .[] | select(.name == $name) | .url' "$WINE_METADATA_FILE" | head -n 1) | ||||
|             else | ||||
|                 # Если и метаданных нет, то считаем, что должен был быть старый URL | ||||
|                 print_warning "Файл метаданных не найден. Предполагается, что версия '$WH_WINE_USE' находится на основном сервере." | ||||
|                 download_url="$old_schema_url" | ||||
|             fi | ||||
|  | ||||
|             # Если URL так и не был найден, выводим ошибку. | ||||
|             if [[ -z "$download_url" ]]; then | ||||
|                 fatal "Не удалось найти URL для скачивания версии '$WH_WINE_USE'." | ||||
|             fi | ||||
|  | ||||
|             wine_package_name="$(basename "$download_url")" | ||||
|             wine_package="$WH_TMP_DIR/$wine_package_name" | ||||
|  | ||||
|             # Проверяем хэш-сумму только для файлов с нашего сервера | ||||
|             if [[ "$download_url" == *"$CLOUD_URL"* ]]; then | ||||
|                 check_sum_arg="check256sum" | ||||
|             fi | ||||
|  | ||||
|             try_download "$download_url" "$wine_package" "$check_sum_arg" | ||||
|             try_download "$download_url" "$wine_package" "check256sum" | ||||
|             unpack "$wine_package" "$WH_DIST_DIR/" | ||||
|             try_remove_file "$wine_package" | ||||
|  | ||||
| @@ -1503,178 +1475,73 @@ remove_prefix() { | ||||
|     fi | ||||
| } | ||||
|  | ||||
| generate_wine_metadata () { | ||||
|     WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" | ||||
|  | ||||
|     if [[ -f "$WINE_METADATA_FILE" ]]; then | ||||
|         if find "$WINE_METADATA_FILE" -mmin -1440 | grep -q . ; then | ||||
|             print_info "Файл метаданных $WINE_METADATA_FILE обновлялся менее 24 часов назад. Пропускаем генерацию." | ||||
|             return 0 | ||||
|         fi | ||||
|         print_info "Файл метаданных $WINE_METADATA_FILE устарел." | ||||
|         print_info "Начинаем обновление..." | ||||
|     else | ||||
|         print_info "Генерации метаданных..." | ||||
|     fi | ||||
|  | ||||
|     TMP_WINE_META="$WH_TMP_DIR/wine_metadata" | ||||
|     local FETCH_ERROR_FLAG="$TMP_WINE_META/fetch.error" | ||||
|     rm -f "$FETCH_ERROR_FLAG" | ||||
|  | ||||
|     mkdir -p "$TMP_WINE_META" | ||||
|  | ||||
|     cleanup() { | ||||
|         rm -rf "$TMP_WINE_META" | ||||
|     } | ||||
|     trap cleanup EXIT | ||||
|  | ||||
|     fetch_github_releases() { | ||||
|         local repo="$1" | ||||
|         local wine_metadata_file="$2" | ||||
|  | ||||
|         local url="https://api.github.com/repos/$repo/releases" | ||||
|  | ||||
|         if ! curl -s --fail -H "Accept: application/vnd.github.v3+json" "$url" > "$wine_metadata_file"; then | ||||
|             touch "$FETCH_ERROR_FLAG" | ||||
|             return 1 | ||||
|         fi | ||||
|  | ||||
|         if ! jq -e 'type == "array"' "$wine_metadata_file" >/dev/null 2>&1; then | ||||
|             try_remove_file "$wine_metadata_file" | ||||
|             touch "$FETCH_ERROR_FLAG" | ||||
|             return 1 | ||||
|         fi | ||||
|  | ||||
|         print_info "Получение данных для $repo" | ||||
|     } | ||||
|  | ||||
|     create_wine_entries() { | ||||
|         local input_file="$1" | ||||
|         local file_extension="$2" | ||||
|         local exclude_patterns="$3" | ||||
|  | ||||
|         jq -r --arg ext "$file_extension" ' | ||||
|             .[] | | ||||
|             .assets[] | | ||||
|             select(.browser_download_url | test($ext)) | | ||||
|             { | ||||
|                 name: (.name | gsub($ext; "")), | ||||
|                 url: .browser_download_url | ||||
|             } | ||||
|         ' "$input_file" | \ | ||||
|         if [[ -n "$exclude_patterns" ]]; then | ||||
|             jq -c --arg patterns "$exclude_patterns" ' | ||||
|                 select(.name | test($patterns) | not) | ||||
|             ' | ||||
|         else | ||||
|             jq -c '.' | ||||
|         fi | ||||
|     } | ||||
|  | ||||
|     # Формат: "ключ_json;репозиторий;расширение_файла;шаблон_исключения" | ||||
|     local sources=( | ||||
|         "proton_ge;GloriousEggroll/proton-ge-custom;\\.tar\\.gz$;github-action" | ||||
|         "wine_kron4ek;Kron4ek/Wine-Builds;\\.tar\\.xz$;" | ||||
|         "proton_lg;Castro-Fidel/wine_builds;\\.tar\\.xz$;plugins" | ||||
|         "proton_cachyos;CachyOS/proton-cachyos;\\.tar\\.xz$;znver" | ||||
|         "proton_sarek;pythonlover02/Proton-Sarek;\\.tar\\.gz$;" | ||||
|         "proton_em;Etaash-mathamsetty/Proton;\\.tar\\.xz$;" | ||||
|     ) | ||||
|  | ||||
|     for source_data in "${sources[@]}"; do | ||||
|         ( | ||||
|             IFS=';' read -r key repo extension exclude_pattern <<< "$source_data" | ||||
|  | ||||
|             local releases_file="$TMP_WINE_META/${key}_releases.json" | ||||
|             local entries_file="$TMP_WINE_META/${key}.json" | ||||
|  | ||||
|             fetch_github_releases "$repo" "$releases_file" || exit 1 | ||||
|             create_wine_entries "$releases_file" "$extension" "$exclude_pattern" > "$entries_file" | ||||
|         ) & | ||||
|     done | ||||
|  | ||||
|     wait | ||||
|  | ||||
|     if [[ -f "$FETCH_ERROR_FLAG" ]]; then | ||||
|         fatal "Ошибка при получении релизов. Возможно, превышен лимит запросов к API GitHub или проблема с сетью." | ||||
|     fi | ||||
|  | ||||
|     print_ok "Все данные получены." | ||||
|  | ||||
|     print_info "Создание итогового JSON файла..." | ||||
|  | ||||
|     jq -n \ | ||||
|         --slurpfile proton_ge "$TMP_WINE_META/proton_ge.json" \ | ||||
|         --slurpfile wine_kron4ek "$TMP_WINE_META/wine_kron4ek.json" \ | ||||
|         --slurpfile proton_lg "$TMP_WINE_META/proton_lg.json" \ | ||||
|         --slurpfile proton_cachyos "$TMP_WINE_META/proton_cachyos.json" \ | ||||
|         --slurpfile proton_sarek "$TMP_WINE_META/proton_sarek.json" \ | ||||
|         --slurpfile proton_em "$TMP_WINE_META/proton_em.json" \ | ||||
|         '{ | ||||
|             proton_ge: $proton_ge, | ||||
|             wine_kron4ek: $wine_kron4ek, | ||||
|             proton_lg: $proton_lg, | ||||
|             proton_cachyos: $proton_cachyos, | ||||
|             proton_sarek: $proton_sarek, | ||||
|             proton_em: $proton_em | ||||
|         }' > "$WINE_METADATA_FILE" | ||||
|  | ||||
|     if jq empty "$WINE_METADATA_FILE" 2>/dev/null; then | ||||
|         print_ok "JSON файл создан успешно: $WINE_METADATA_FILE" | ||||
|     else | ||||
|         print_error "Ошибка создания JSON файла" | ||||
|         exit 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| select_wine_version() { | ||||
|     if ! command -v jq &> /dev/null; then | ||||
|         print_warning "Команда 'jq' не найдена. Невозможно отобразить список версий WINE/Proton." | ||||
|         print_warning "Будет использована версия по умолчанию: $WH_WINE_USE" | ||||
|         return | ||||
|     fi | ||||
|     local sha256_file="$DATA_PATH/sha256sum.list" | ||||
|     [[ ! -f "$sha256_file" ]] && fatal "Файл с версиями WINE/Proton не найден: $sha256_file" | ||||
|  | ||||
|     generate_wine_metadata | ||||
|     WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" | ||||
|     [[ ! -f "$WINE_METADATA_FILE" ]] && fatal "Файл метаданных WINE не найден." | ||||
|  | ||||
|     local arch_filter_jq | ||||
|     if [[ "$WINEARCH" == "win64" ]]; then | ||||
|         print_info "Фильтруем версии для 64-битного префикса..." | ||||
|         # Для 64-битных префиксов показываем сборки с 'amd64', 'x86_64', 'wow64' | ||||
|         # или те, у которых нет явного указания на 32-битную архитектуру. | ||||
|         arch_filter_jq='select((.name | test("amd64|x86_64|wow64")) or (.name | test("i[3-6]86|x86(?!_64)") | not))' | ||||
|     else # win32 | ||||
|         print_info "Фильтруем версии для 32-битного префикса..." | ||||
|         # Для 32-битных префиксов показываем только сборки с явным указанием 32-битной архитектуры. | ||||
|         arch_filter_jq='select(.name | test("i[3-6]86|x86(?!_64)"))' | ||||
|     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") | ||||
|     options+=("$system_wine_display_name") | ||||
|  | ||||
|     # --- Other versions from JSON --- | ||||
|     local group_keys | ||||
|     mapfile -t group_keys < <(jq -r 'keys_unsorted | .[]' "$WINE_METADATA_FILE") | ||||
|  | ||||
|     for key in "${group_keys[@]}"; do | ||||
|         local group_versions | ||||
|         mapfile -t group_versions < <(jq -r --arg key "$key" '.[$key] | .[] | '"$arch_filter_jq"' | .name' "$WINE_METADATA_FILE" | sort -V -r | uniq) | ||||
|     # --- Other versions from sha256sum.list --- | ||||
|     local current_group="" | ||||
|     local group_versions=() | ||||
|  | ||||
|     flush_group() { | ||||
|         if [[ ${#group_versions[@]} -gt 0 ]]; then | ||||
|             # Prettify the group name (e.g., "proton_ge" -> "Proton Ge") | ||||
|             local pretty_key | ||||
|             pretty_key=$(echo "$key" | tr '_' ' ' | sed -e "s/\b\(.\)/\u\1/g") | ||||
|  | ||||
|             options+=("--- $pretty_key ---") | ||||
|             options+=("${group_versions[@]}") | ||||
|             IFS=$'\n' sorted_versions=($(sort -Vr <<<"${group_versions[*]}")) | ||||
|             unset IFS | ||||
|             options+=("${sorted_versions[@]}") | ||||
|             ((total_versions_found+=${#group_versions[@]})) | ||||
|             group_versions=() | ||||
|         fi | ||||
|     done | ||||
|     } | ||||
|  | ||||
|     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 | ||||
|                 if [[ "$version_name" =~ i[3-6]86 ]]; then | ||||
|                     group_versions+=("$version_name") | ||||
|                 fi | ||||
|             fi | ||||
|         fi | ||||
|     done < "$sha256_file" | ||||
|     flush_group | ||||
|  | ||||
|     if [[ $total_versions_found -eq 0 ]]; then | ||||
|         print_warning "Не найдено подходящих версий WINE/Proton для архитектуры $WINEARCH." | ||||
| @@ -1682,13 +1549,11 @@ select_wine_version() { | ||||
|         return | ||||
|     fi | ||||
|  | ||||
|     # --- Пользовательское меню с разделением на группы и пустыми строками --- | ||||
|     local selectable_options=("Отмена") | ||||
|     local display_groups=() | ||||
|     local current_group_items=() | ||||
|     local choice_idx=0 | ||||
|  | ||||
|     # Помощник для переноса текущей группы элементов в основной массив display_groups | ||||
|     flush_current_group() { | ||||
|         if ((${#current_group_items[@]} > 0)); then | ||||
|             # Объединяйте элементы с помощью уникального разделителя для последующего разделения | ||||
| @@ -1699,11 +1564,10 @@ select_wine_version() { | ||||
|  | ||||
|     current_group_items+=(" 0) Отмена создания префикса") | ||||
|  | ||||
|     # Обработка массива основных параметров для создания групп | ||||
|     for opt in "${options[@]}"; do | ||||
|         if [[ "$opt" == "---"* ]]; then | ||||
|         flush_current_group | ||||
|         display_groups+=("$opt") # Добавьте заголовок как отдельный элемент | ||||
|         display_groups+=("$opt") | ||||
|         else | ||||
|             ((choice_idx++)) | ||||
|             current_group_items+=(" ${choice_idx}) $opt") | ||||
| @@ -1714,17 +1578,14 @@ select_wine_version() { | ||||
|  | ||||
|     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" | ||||
|  | ||||
| @@ -1752,15 +1613,21 @@ select_wine_version() { | ||||
|         done | ||||
|  | ||||
|     while true; do | ||||
|         echo | ||||
|         local max_choice=$(( ${#selectable_options[@]} - 1 )) | ||||
|         read -p "Введите номер (0-$max_choice): " user_choice | ||||
|         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="${selectable_options[$user_choice]}" | ||||
|             export WH_WINE_USE="$selected_opt" | ||||
|             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." | ||||
| @@ -2175,7 +2042,6 @@ case "$arg1" in | ||||
|     create-prefix) create_prefix "$@" ;; | ||||
|     remove-prefix) remove_prefix "$@" ;; | ||||
|     create-base-pfx) create_base_pfx "$@" ;; | ||||
|     generate-db) generate_wine_metadata "$@" ;; | ||||
|     init-prefix) prepair_wine ; wait_wineserver ;; | ||||
|     *) | ||||
|         if [[ -f "$arg1" ]] ; then | ||||
|   | ||||
| @@ -1014,11 +1014,9 @@ class ScriptParser: | ||||
| class WineVersionSelectionDialog(QDialog): | ||||
|     """Диалог для выбора версии Wine/Proton с группировкой.""" | ||||
|  | ||||
|     def __init__(self, architecture, winehelper_path, user_work_path, parent=None): | ||||
|     def __init__(self, architecture, parent=None): | ||||
|         super().__init__(parent) | ||||
|         self.architecture = architecture | ||||
|         self.winehelper_path = winehelper_path | ||||
|         self.user_work_path = user_work_path | ||||
|         self.selected_version = None | ||||
|         self.wine_versions_data = {} | ||||
|         self.system_wine_display_name = "Системная версия" | ||||
| @@ -1049,10 +1047,6 @@ class WineVersionSelectionDialog(QDialog): | ||||
|  | ||||
|     def load_versions(self): | ||||
|         """Запускает процесс получения списка версий Wine.""" | ||||
|         if not shutil.which('jq'): | ||||
|             QMessageBox.critical(self, "Ошибка", "Утилита 'jq' не найдена. Невозможно получить список версий Wine.\n\nУстановите пакет 'jq'.")             | ||||
|             return | ||||
|  | ||||
|         self.version_tabs.clear() | ||||
|         loading_widget = QWidget() | ||||
|         loading_layout = QVBoxLayout(loading_widget) | ||||
| @@ -1061,52 +1055,71 @@ class WineVersionSelectionDialog(QDialog): | ||||
|         loading_layout.addWidget(status_label) | ||||
|         self.version_tabs.addTab(loading_widget, "Загрузка...") | ||||
|         self.version_tabs.setEnabled(False) | ||||
|  | ||||
|         self.refresh_button.setEnabled(False) | ||||
|         self.db_process = QProcess(self) | ||||
|         self.db_process.setProcessChannelMode(QProcess.MergedChannels) | ||||
|         self.db_process.finished.connect(self._on_db_generation_finished) | ||||
|         self.db_process.start(self.winehelper_path, ["generate-db"]) | ||||
|  | ||||
|     def _on_db_generation_finished(self, exit_code, exit_status): | ||||
|         """Обрабатывает завершение генерации метаданных Wine.""" | ||||
|         QApplication.processEvents() | ||||
|  | ||||
|         self._parse_sha256_list() | ||||
|         self.populate_ui() | ||||
|  | ||||
|         self.refresh_button.setEnabled(True) | ||||
|         self.version_tabs.setEnabled(True) | ||||
|  | ||||
|         error_message = None | ||||
|         if exit_code != 0: | ||||
|             error_output = self.db_process.readAll().data().decode('utf-8', 'ignore') | ||||
|             QMessageBox.warning(self, "Ошибка", f"Не удалось получить список версий Wine.\n\n{error_output}") | ||||
|             error_message = "Ошибка загрузки списка версий." | ||||
|         else: | ||||
|             metadata_file = os.path.join(self.user_work_path, "tmp", "wine_metadata.json") | ||||
|             if not os.path.exists(metadata_file): | ||||
|                 QMessageBox.warning(self, "Ошибка", f"Файл метаданных не найден:\n{metadata_file}") | ||||
|                 error_message = "Ошибка: файл метаданных не найден." | ||||
|             else: | ||||
|                 try: | ||||
|                     with open(metadata_file, 'r', encoding='utf-8') as f: | ||||
|                         self.wine_versions_data = json.load(f) | ||||
|                 except (json.JSONDecodeError, IOError) as e: | ||||
|                     QMessageBox.warning(self, "Ошибка", f"Не удалось прочитать или обработать файл метаданных:\n{e}") | ||||
|                     error_message = "Ошибка парсинга JSON." | ||||
|  | ||||
|         if error_message: | ||||
|             self.version_tabs.clear() | ||||
|             error_widget = QWidget() | ||||
|             error_layout = QVBoxLayout(error_widget) | ||||
|             error_label = QLabel(error_message) | ||||
|             error_label.setAlignment(Qt.AlignCenter) | ||||
|             error_layout.addWidget(error_label) | ||||
|             self.version_tabs.addTab(error_widget, "Ошибка") | ||||
|     def _parse_sha256_list(self): | ||||
|         """Парсит sha256sum.list для получения списка версий.""" | ||||
|         sha256_path = os.path.join(Var.DATA_PATH, "sha256sum.list") | ||||
|         if not os.path.exists(sha256_path): | ||||
|             QMessageBox.warning(self, "Ошибка", f"Файл с версиями не найден:\n{sha256_path}") | ||||
|             self.wine_versions_data = {} | ||||
|             return | ||||
|  | ||||
|         self.populate_ui() | ||||
|         self.wine_versions_data = {} | ||||
|         current_group = None | ||||
|  | ||||
|         try: | ||||
|             with open(sha256_path, 'r', encoding='utf-8') as f: | ||||
|                 for line in f: | ||||
|                     line = line.strip() | ||||
|                     if not line: | ||||
|                         continue | ||||
|  | ||||
|                     match = re.match(r'^#+\s+([A-Z_]+)\s+#*$', line) | ||||
|                     if match: | ||||
|                         group_name = match.group(1) | ||||
|                         allowed_groups = {"WINE", "WINE_LG", "PROTON_LG", "PROTON_STEAM"} | ||||
|                         # Отображаем только группы, которые являются сборками WINE или PROTON | ||||
|                         if group_name in allowed_groups: | ||||
|                             current_group = group_name | ||||
|                             if current_group not in self.wine_versions_data: | ||||
|                                 self.wine_versions_data[current_group] = [] | ||||
|                         else: | ||||
|                             current_group = None | ||||
|                         continue | ||||
|  | ||||
|                     if current_group and re.match(r'^[a-f0-9]{64}', line): | ||||
|                         parts = line.split(maxsplit=1) | ||||
|                         if len(parts) == 2: | ||||
|                             filename = parts[1] | ||||
|                             if filename.endswith('.tar.xz'): | ||||
|                                 version_name = filename[:-7] | ||||
|                                 self.wine_versions_data[current_group].append(version_name) | ||||
|         except IOError as e: | ||||
|             QMessageBox.warning(self, "Ошибка", f"Не удалось прочитать файл версий:\n{e}") | ||||
|             self.wine_versions_data = {} | ||||
|  | ||||
|     def populate_ui(self): | ||||
|         """Заполняет UI отфильтрованными версиями.""" | ||||
|         self.version_tabs.clear() | ||||
|  | ||||
|         if not self.wine_versions_data: | ||||
|             error_widget = QWidget() | ||||
|             error_layout = QVBoxLayout(error_widget) | ||||
|             error_label = QLabel("Список версий пуст или не удалось его загрузить.") | ||||
|             error_label.setAlignment(Qt.AlignCenter) | ||||
|             error_layout.addWidget(error_label) | ||||
|             self.version_tabs.addTab(error_widget, "Ошибка") | ||||
|             return | ||||
|  | ||||
|         is_win64 = self.architecture == "win64" | ||||
|         re_32bit = re.compile(r'i[3-6]86|x86(?!_64)') | ||||
|         re_64bit = re.compile(r'amd64|x86_64|wow64') | ||||
| @@ -1131,10 +1144,9 @@ class WineVersionSelectionDialog(QDialog): | ||||
|  | ||||
|         for key in group_keys: | ||||
|             versions = self.wine_versions_data.get(key, []) | ||||
|             all_version_names = {v.get("name", "") for v in versions if v.get("name")} | ||||
|  | ||||
|             filtered_versions = [] | ||||
|             for name in sorted(list(all_version_names), reverse=True): | ||||
|             for name in sorted(versions, reverse=True): | ||||
|                 if is_win64: | ||||
|                     if re_64bit.search(name) or not re_32bit.search(name): | ||||
|                         filtered_versions.append(name) | ||||
| @@ -1802,7 +1814,7 @@ class WineHelperGUI(QMainWindow): | ||||
|     def open_wine_version_dialog(self): | ||||
|         """Открывает диалог выбора версии Wine.""" | ||||
|         architecture = "win32" if self.arch_win32_radio.isChecked() else "win64" | ||||
|         dialog = WineVersionSelectionDialog(architecture, self.winehelper_path, Var.USER_WORK_PATH, self) | ||||
|         dialog = WineVersionSelectionDialog(architecture, self) | ||||
|         if dialog.exec_() == QDialog.Accepted and dialog.selected_version: | ||||
|             self.wine_version_edit.setText(dialog.selected_display_text) | ||||
|             self.selected_wine_version_value = dialog.selected_version | ||||
|   | ||||
		Reference in New Issue
	
	Block a user