Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » VMware ThinApp | Thinstall (Часть 4)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

Открыть новую тему     Написать ответ в эту тему

Geroy4ek

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части темы: 1, 2, 3
Смежный топик в Варезнике
 
VMware ThinApp 2312 Build 23148499 Release Date    2024-01-23  
 
Официальный сайт | Описание | Download | Список изменений | ThinApp Docs
 
ThinApp (ex Thinstall) используется для виртуализации приложений, позволяет заключить приложения в виртуальный контейнер и использовать их как готовые пакеты, не требующие установки. Внутри контейнера создается виртуальная среда для реестра и файлов.  
Поддерживаемые ОС:    
x32: Windоws 2000/XP/XPE/Server 2003/2008/2012/2012 R2/Vista/7/8/8.1/10  
x64: Windоws  Server 2003/2008/2008R2/Vista/7/8/8.1/10

Полезные утилиты
 
FAQ, статьи, обзоры
 
Полезные ресурсы

Если при запуске готового приложения выскакивает окошко в трее, читайте шапку топика в Варезнике.
 
VMware ThinApp - обсуждение перевода
 
Русский перевод мануала по VMware ThinApp версии 5.1.0 + перевод справочника по параметрам Package.ini от pavlaf
 
Ближайший аналог: Turbo Studio (бывшая Spoon Studio, Xenocode Virtual Appliance Studio)

Всего записей: 1 | Зарегистр. 24-04-2015 | Отправлено: 17:26 24-04-2015 | Исправлено: Luber, 10:56 24-01-2024
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
conservator

Цитата:
По моему, такого же принципа придерживаются все обитатели этого топика

говорите за себя. это ваше личное мнение.
мне, например, в общем-то не важно пишет ли программа что-то в реестр или нет, при условии, что это "что-то" не создаёт конфликтов ни с третьим софтом ни с установленным аналогичным. разумеется, я не стану специально "открывать" реестр для программы, но и ловля блох типа списков mru или ярлыков в Prefeth - имхо, для параноиков. это моё личное мнение, и оно не хуже и не лучше вашего. просто оно другое.
различие в мнениях не даёт вам права оскорблять кого бы то ни было
 
AVanti 473

Цитата:
Разве? Идея давно всем известна,

может и известна, однако вы не сообщили - какую именно из идей реализовали )))
ковырять же экзешник для выяснения - нет ни малейшего желания.

Цитата:
пользователь сам будет решать, надо ему отключать сборку от сети, или не надо!

а что там, собственно, решать? если программа должна работать только с локальными файлами - ей нечего делать в инете. и незачем "грузить" юзера лишними вопросами. времена, когда за компьютером работали только те, кто хоть что-то понимали именно в компьютере - давно в прошлом. настало время потребителей. для них - это "чёрный ящик с кнопками". и знают они в лучшем случае одну программу, в которой работают. как они могут принять решение о том, чего не знают?
.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 16:52 25-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa

Цитата:
может и известна, однако вы не сообщили - какую именно из идей реализовали )))

 
Идея стандартная - внесение в виртуальный реестр ветки:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip
 
Только, в моём скрипте она реализована немного своеобразно. Сначала, идёт удаление этой ветки. В основном из-за того, что планируется придумать принцип включения сети, а значит выключалка, должна уметь удалять эту ветку перед тем, как создаст такую-же, но пустую. Затем идёт запись этой пустой ветки в виртуальный реестр. Вот и всё.
Можно было бы просто обойтись удалением этой ветки, и в виртуальном реестре она сразу бы была помечена как удалённая. Но, раз уж есть традиция вписывать её пустое значение - лишний ключик не беда, и 100% гарантия срабатывания... )))
 
Да, скрипт профильный - только для сборщиков! И не дай бог стартануть его в живой системе. ))) Даже боюсь предположить, что придётся потом исправлять и как, когда он снесёт напрочь вышеуказанноую ветку... )))
 
Поместив такой скрипт в проект сборки и выставив на него в Package.ini точку входа, сборщик, даёт возможность пользователю самому решать, будет разрешён портабельной программе интернет, или нет.
Зачем это нужно? Затем, чтобы как можно меньше встречалась в описаниях фраза типа: "на всякий случай отрубил сборке выход в инет"... Всякий случай, на мой взгляд, это у пользователя, но, по возможности, не у сборщика.
 
P.S. Спор о том, нужно это или нет, сродни размышлений почему ВЫКлючатель называется выключателем, а не ВКлючателем...
 
--------------------
 
Добавлено:

Цитата:
Сначала, идёт удаление этой ветки. В основном из-за того, что планируется придумать принцип включения сети

 
Только сейчас вспомнил решение от Astra55
 

Код:
isolation_full HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip
  Value=ImagePath
  REG_EXPAND_SZ~system32\DRIVERS\tcpip.sy_#2300

 
Действительно, нафига удалять всю ветвь, когда можно изменять tcpip.sys на tcpip.sy_ и обратно... Вот и будет включение и выключение по требованию юзверя. Если согласны, сделаю завтра эту полезняшку и поделюсь. Как кто считает?

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 17:59 25-04-2016 | Исправлено: AVanti 473, 18:14 25-04-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
по-моему вы перемудрили ))

Цитата:
Сначала, идёт удаление этой ветки.

этого должно быть достаточно для включения инета в сборке
 

Цитата:
Даже боюсь предположить, что придётся потом исправлять и как, когда он снесёт напрочь вышеуказанноую ветку... )))  

нет ничего проще ))

Код:
netsh winsock reset

должен полностью восстановить функционал. если не полностью - то там же, в netsh, есть ещё несколько команд сбрасывающих все или конкретный адаптер на дефолт.
или - без командной строки - зайти в установку компонентов виндовс, удалить и снова установить протокол TCP/IP.  

Цитата:
чтобы как можно меньше встречалась в описаниях фраза типа: "на всякий случай отрубил сборке выход в инет"... Всякий случай, на мой взгляд, это у пользователя,

сборщик - если не "родитель", то как минимум "воспитатель". в этом контексте - задача: научить "детище" правилам поведения в обществе. и если ваш ребёнок выбегает на проезжую часть, то тот самый "всякий случай" с ДТП рано или поздно случится. поэтому лучше отгородить "дорогу" непроходимой стеной - пусть дети играют в песочнице. здесь я сторонник принципа: всё, что не разрешено - запрещено. проблем меньше
это моё мнение подкреплено всей историей развития Windows: первые версии позволяли пользователю всё. каждая последующая - урезала права и возможности "неразумного юзера". как думаете, почему? ОС защищает себя, обеспечивая стабильность и выживание.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 19:47 25-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473

Цитата:
REG_EXPAND_SZ~system32\DRIVERS\tcpip.sy_#2300

 
Пожалуй, поправлю сам себя. Когда этот ключик в сборке, видимо, самой сборке на него пофиг, она смотрит на наличие ветки. Если на ветке изоляция Full, то, акромя этого параметра в этой ветке сборка ничего и не видит, а следовательно, инет рубится. Если же параметр будет вноситься скриптом, он получит изоляцию writcopy и сборка увидит всю ветку в системе, где совершенно пофиг какой там путь в параметре, главное, чтобы остальные значения были видны, а следовательно, инет не отрубится.
 
Жаль. Было бы всё так просто, так на живых компах бы в два счёта вырубали весь инет, а потом, бескровно его включали... )))
 
Ну и ладно. Значит, бум думать, как скопировать всю ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip из живой системы в виртуал, для включения отрубленного инета. Значится первый скрипт (что в архиве выше) остаётся пока действительным!
 
Proshaa

Цитата:
этого должно быть достаточно для включения инета в сборке

И да и НО. Я сам об этом писал. Конечно достаточно - при обычных условиях, так как виртуальный контейнер считает удаляемую ветку из системы и пометит её как несуществующую. С другой стороны, всегда что-то может пойти не так, или быть неучтено. Одним движением больше, одним меньше, до этого, по большому счёту, никому нет дела - главное, чтоб работало...
 

Цитата:
netsh winsock reset   должен полностью восстановить функционал. если не полностью - то там же, в netsh, есть ещё несколько команд сбрасывающих все или конкретный адаптер на дефолт.

 
Угу. Понять бы ещё как это реализовать в скрипте, и будет ли такой подход работоспособным в виртуальном контейнере... Там что будет, запуск службы? А как согласовывать с настройками в Package.ini и куда лягут процессы - в реальную, или виртуальную среды? Проще, наверное, придумать, как в виртуал внедрить данные из живого реестра. А может и не проще...
Скорее, возможно, хорошо бы, чтобы перед срабатыванием оба скрипта делали бекап всей ветки куда-нибудь в виртуал (рядом с собой). Опять таки, этот самый бекап... Я не понимаю как его сделать в vTask. Стандартными средствами там можно работать с определёнными параметрами, но не с группой параметров. Возможно, как-то нестандартно, типа, командной строкой, можно провести экспорт определённой ветки реестра... Типа этого?!?!

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 20:17 25-04-2016 | Исправлено: AVanti 473, 20:22 25-04-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
давайте мухи отдельно, котлеты отдельно ))
netsh - это про
Цитата:
не дай бог стартануть его в живой системе. ))) Даже боюсь предположить, что придётся потом исправлять и как, когда он снесёт напрочь вышеуказанноую ветку

т.е. не про сборку.
 
в сборке же достаточно удаления/возвращения на место HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip - (изначально она должна там присутствовать) или одного из важных параметров из этой ветки, хоть и того же ImagePath. только во втором случае изоляция ветки должна быть WriteCopy.  
и никаких извращений с командной строкой и копированием реального реестра (хотя, это в общем-то несложно)

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 22:11 25-04-2016
SunOK_ZM



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473, тогда если не лень, попробуйте сохранение реальным процессом в командной строке из живой ОС в файл (REG SAVE/REG EXPORT), а потом в виртуале загружать кусты (наверно с помощью точек входа, REG RESTORE/REG IMPORT).  
Кстати, помните для регистрации какой-то софтины ключи в реестре невозможно было по-людски собрать в билд - может из .hiv файла нормально импортировалось бы...

Всего записей: 255 | Зарегистр. 19-02-2012 | Отправлено: 22:18 25-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SunOK_ZM

Цитата:
тогда если не лень, попробуйте сохранение реальным процессом в командной строке из живой ОС в файл (REG SAVE/REG EXPORT)

 
Мне кажется, что и из виртуала всё должно сохраниться скриптом в файл бекапа (ведь сборка видит эту часть реестра, если к ней намеренно не применили изоляцию Full), а затем восстанавливаться оттуда в виртуальную среду сборки. И, командная строка кстати, но тут одно но. Скрипт запустит командную строку, и из-за особенностей настроек какой-то сборки, ком. строка может вывалиться в реал. Есть ещё путь через WinAPI, но это отдельная тема. С другой стороны, Proshaa утверждает, что достаточно изменить один ключевой параметр в ветке Tcpip, а я сомневаюсь в работоспособности такого подхода. Впрочем, это надо пробовать и безусловно, это моя задача. Как опробую, отпишусь отдельно...
 
В любом случае всё это, на мой взгляд, не зря. В конце концов, я убеждён, что конечный пользователь сам в праве получить возможность отключения сборки от интернета, если это необходимо, либо, расширит возможности портабельной программы. Половина пути уже сделана и результат (какой-никакой) но имеется. Во всяком случае, выключение инета уже можно дать пользователю в качестве простейшего функционала, а включение пока удалением песочницы. Не "айс", конечно, но, хоть что-то. А всё остальное, надеюсь, решим со временем... Главное - не торопиться!
 
--------------------
 
Добавлено:
Proshaa

Цитата:
или одного из важных параметров из этой ветки, хоть и того же ImagePath. только во втором случае изоляция ветки должна быть WriteCopy

AVanti 473

Цитата:
что достаточно изменить один ключевой параметр в ветке Tcpip, а я сомневаюсь в работоспособности такого подхода. Впрочем, это надо пробовать и безусловно, это моя задача. Как опробую, отпишусь отдельно...

 
Ну, вот и попробовал. Сборке пофиг, если в ней срабатывает скрипт меняющий параметр ImagePath. И, попадает этот параметр туда именно с изоляцией WriteCopy, так как только с этим параметром попадают ключи в вирт реестр по дефолту, при работе портабельной программы. Как я и писал, это был ложный путь, но я на него уже и не рассчитывал... Сосредоточусь на других решениях...

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 22:33 25-04-2016 | Исправлено: AVanti 473, 22:55 25-04-2016
coherent r1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
Для отключения инета достаточно записи
isolation_full HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip
без чего либо еще. Я лично использую плагин с одним файлом cmd.exe и вышеприведенной записью в реестре. Нужно сборке отрубить доступ в интернет - добавляю плагин, не нужно - не добавляю. Если бы я захотел выпендриться, то я бы диалоговым скриптом (Да Нет), при необходимости (желании) отключения доступа сборке в интернет, закидывал плагин, например, tcpip.dat, в папку Plugins, а по завершении работы удалял.

Всего записей: 135 | Зарегистр. 26-03-2016 | Отправлено: 23:28 25-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent r1, я прошу прощения, но, Вы точно ОТСЮДА читали? Понимаю, решение с плагином вполне себе интересное, а как быть если версия ThinApp на которой собран плагин и на которой собранна программа, разные? Пересобирать плаг для каждой версии?
В любом случае, благодарю Вас за интересный вариант решения!
 
Добавлено:
-------------------
 
Ладно, всё путём, решение почти готово. Буду использовать в скрипте WinAPI формата:
 
WinExec('regedit /e C:\RegData.reg "HKEY_LOCAL_MACHINE\Software"', SW_SHOW);
 
vTask отлично отрабатывает в этом виде. Значит ещё одной проблемой меньше!

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 23:33 25-04-2016
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
Цитата:
а как быть если версия ThinApp на которой собран плагин и на которой собранна программа, разные?
Вы проверяли это утверждение для последних модификаций ThinApp (от 4.7.3 и выше), не работают ?
 

Всего записей: 7681 | Зарегистр. 08-11-2015 | Отправлено: 08:04 26-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
conservator Была такая попытка, когда я хотел подключить плагин .NET Framework, собранный в пятой линейке к программе, собранной в 4.7.3 Получился облом. Иначе, я бы этого не писал...

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 08:11 26-04-2016
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
Какой Framework (ссылка) к какой сборке, можно поконкретней ?

Всего записей: 7681 | Зарегистр. 08-11-2015 | Отправлено: 08:34 26-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
conservator

Цитата:
Какой Framework (ссылка) к какой сборке, можно поконкретней ?

 
Увы, не можно, так как я после того эксперимента был вынужден пересобрать фреймворки в тех версиях на которых были собраны программы. Так теперь всё и осталось согласованным. Жаль, но сейчас это лишь мои слова без доказательств...

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 10:37 26-04-2016 | Исправлено: AVanti 473, 13:32 26-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473

Цитата:
Ладно, всё путём, решение почти готово. Буду использовать в скрипте WinAPI

 
https://yadi.sk/d/W-Lbz39trJCQP
 
(очень подробное описание в архиве)
 
Теперь везде и всё работает, всё нормально! Пользуйтесь на здоровье, кому интересно!
 
Тестировалось: WinXP (реал, виртуальный контейнер ThinApp) и Win7 (реал, виртуальный контейнер ThinApp)

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 13:32 26-04-2016 | Исправлено: AVanti 473, 13:40 26-04-2016
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
Хорошо хоть
Цитата:
Жаль
, тут вот как всегда брякнул и пошёл, не утруждая себя какими-либо доказательствами.  
Все мои плагины, собранные в версии 4.7.3 (зачем собирать в 5.* - непонятно, тем более Framework) работают с программами, собранными в ThinApp 4.7.3 - 5.2.1. Исключения, конечно, могут быть, но не обязательно по вышеозвученной причине.

Всего записей: 7681 | Зарегистр. 08-11-2015 | Отправлено: 14:12 26-04-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
conservator
вам что-то доказывать = себя не уважать.  
"брякаю" снова. в какой-то момент, будучи на выезде, мне понадобился Framework. взял первый попавшийся. попался ваш. мой Corel, собранный в 5.1 с ним не заработал. "утруждать" себя разбирательствами и "доказательствами" не было ни времени ни желания, работать надо было. просто взял другой и с ним всё прекрасно заработало.
всё, что я "брякаю" - основано на личном опыте. имеющимися знаниями, предположениями и соображениями я открыто делюсь с сообществом.
от вас же конструктива что-то не видно.

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 14:44 26-04-2016
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Вы обыкновенный болтун, не спорю - талантливый, выкручиваться и передёргивать умеете здорово, но не более того, всё остальное - вода и вилы, пишите дальше, всегда найдутся любители лапши на ушах, собственно, на них и рассчитана ваша "конструктивная" писанина.

Всего записей: 7681 | Зарегистр. 08-11-2015 | Отправлено: 17:41 26-04-2016
AVanti 473



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
conservator

Цитата:
Все мои плагины, собранные в версии 4.7.3 (зачем собирать в 5.* - непонятно, тем более Framework) работают с программами, собранными в ThinApp 4.7.3 - 5.2.1.

 
Помню, что проверку я тогда свою начал именно с Вашего диалога с Proshaa. Мне показалось логичным, что нововведения в плагинах, собранных на пятой линейке (например те же папки %ProgramFilesDir(x64)% и %SystemSystem(x64)%) будут непонятны программе, собранной в 4.7.3 так как в старых версиях их ещё не было, и портабельный контейнер не сможет безошибочно слить всё в одну песочницу. Но, я честное слово, уже не помню как было. Сейчас глянул, у меня все плагины пересобраны в 5.1.1-2722044. Точно помню, что была именно несовместимость и именно с плагином фреймворка (толи второго, толи четвёртого). Ещё была хрень в проге Anvil Studio, где сперва и прога и плаг четвёртого фреймворка были собраны на 4.7.3 Не работала опция определения нот через микрофон. Когда пересобрал все свои плагины в 5.1.1-2722044, то прогу тоже пересобрал в 5.1.1-2722044 - всё заработало, но это уже не к конфликту плагинов относится, а к аксиоме, что пробовать всегда надо на разных сборках. Вобщем, это всё что я помню. Если когда-нибудь ещё замечу явные конфликты - сообщу.

Всего записей: 366 | Зарегистр. 08-11-2015 | Отправлено: 18:49 26-04-2016 | Исправлено: AVanti 473, 18:53 26-04-2016
SunOK_ZM



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот вам наглядная иллюстрация, почему эту бяку (под кодовым названием .NF, VCR, silverlight, flash, java) легче установить на заре установки винды, чем выкручиваться с плагинами.
Ну а если попался под руки комп без оных - куда уж денешься от лотереи "взлетит / не взлетит".

Всего записей: 255 | Зарегистр. 19-02-2012 | Отправлено: 18:55 26-04-2016 | Исправлено: SunOK_ZM, 19:25 26-04-2016
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti 473
Цитата:
Ещё была хрень в проге Anvil Studio, где сперва и прога и плаг четвёртого фреймворка были собраны на 4.7.3
Что-то я не увидел связь неработающей опции с плагином (в какой бы версии ТА он бы не собран), довольно много программ, собранных в 4.7.3 могут вообще не работать или работать не полноценно (Ваш случай), а при пересборке в 5.* - всё нормально, но плагин то здесь при чём ? У Вас есть сейчас эта Anvil Studio, собранная в 5.1.1 ? Скиньте посмотреть.
SunOK_ZM
У нормальных пользователей этот джентльменский набор, как правило, и установлен, но есть разгильдяи, а то и просто сектанты , по каким-то своим идейным соображениям категорически отказываются устанавливать, к примеру, Framework или набор библиотек. Они есть не где-то  там вообще, а здесь на форуме, встречал. Вот и приходится выдумывать костыли (по доброй воле, конечно).

Всего записей: 7681 | Зарегистр. 08-11-2015 | Отправлено: 21:20 26-04-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

Компьютерный форум Ru.Board » Компьютеры » Программы » VMware ThinApp | Thinstall (Часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru