Вверх ↑
Этот топик читают: Гость
Ответов: 133
Рейтинг: 0
#1: 2017-04-07 12:14:17 ЛС | профиль | цитата
Добрый день. Пытаюсь сделать программу для работы с такой утилитой как DISM, имеется в составе Windows.

Изначально работаю с этой утилитой посредством батников, которые имеют вид:

Проверка количества и номера версий Windows

dism /get-wiminfo /wimfile:d:\1\install.wim

Распаковка файла WIM из папки 1 в папку 2 редакции Windows с индексом 1

dism /mount-wim /index:1 /wimfile:d:\1\install.wim /mountdir:d:\2

Запаковка измененного образа из папки 2 в папку 1 в файл install.wim

с изменениями

dism /unmount-wim /mountdir:d:\2 /commit

без изменения

dism /unmount-wim /mountdir:d:\2 /discard

Добавление драйверов

dism /image:d:\2 /add-driver /driver:d:\d /recurse /forceunsigned

Нужно сделать мне вот что:

Выбор файла с расширением WIM, выбор каталога куда распаковать, потом кнопку распаковки, потом кнопку запаковки с вариантами БЕЗ или С изменениями и напоследок выбор папки с драйверами с последующим заливом в образ.

У меня проблема возникла вот с чем ) Как мне сделать последовательность Выбор файла - Выбор папки для распаковки и потом тыкнуть кнопку для начала процесса. И как мне сделать, чтобы при нажатии кнопки Запаковать, у меня появлялась менюшка с выбором - с изменениями или без. Выпадающее меню или отдельное окошко, не важно. Можно конечно сделать две кнопки отдельные, но хочется красивее )

И напоследок самое интересное. Как мне записывать или указывать в параметрах запуска те папки и файлы, что я выбрал, я не понимаю ( DISM работает из под командной строки.

Редактировалось 1 раз(а), последний 2017-04-07 12:15:01
карма: 1

0
Ответов: 817
Рейтинг: 52
#2: 2017-04-07 14:08:53 ЛС | профиль | цитата
Serascer, а вы изучили возможности HiAsm прежде чем задавать такие вопросы, вы пытались это реализовать?
карма: 1

0
Ответов: 133
Рейтинг: 0
#3: 2017-04-07 20:20:12 ЛС | профиль | цитата
-= DriveR =- писал(а):
Serascer, а вы изучили возможности HiAsm прежде чем задавать такие вопросы, вы пытались это реализовать?


Да, в меру своих способностей. К сожалению примеров работы данного конструктора с другими приложениями я не нашел подобных, ни в видеоуроках, ни вообще. Если подскажите где смотреть, буду признателен.

P.S. Может для вас это и элементарно, но для меня нет.
карма: 1

0
Ответов: 824
Рейтинг: 138
#4: 2017-04-07 20:50:40 ЛС | профиль | цитата

Add(MainForm,2953706,63,133)
{
Height=180
}
Add(Button,9329254,126,182)
{
Left=80
Top=110
Width=155
Height=25
Caption="Сделай мне DISM"
link(onClick,366969:doExec,[])
}
Add(WinExec,366969,179,182)
{
@Hint=#27:Вот это, по идее, запускает|29:любые программы с параметрами|
link(FileName,3875641:Text,[])
link(Params,14063273:Text,[])
AddHint(67,0,177,26,@Hint)
}
Add(Edit,3875641,179,70)
{
Left=15
Top=25
Width=335
Text="dism.exe"
}
Add(Label,3730415,245,70)
{
Left=15
Top=5
Width=128
Height=17
Caption="Программа для запуска"
}
Add(Button,14819136,61,70)
{
Left=350
Top=25
Width=20
Caption="..."
link(onClick,6839188:doExecute,[])
}
Add(Edit,14063273,186,116)
{
Left=15
Top=70
Width=335
Text="/get-wiminfo /wimfile:d:\\1\install.wim"
}
Add(Label,13966480,247,115)
{
Left=15
Top=50
Width=168
Height=17
Caption="Параметры коммандной строки"
}
Add(ODialog,6839188,119,70)
{
Filter="Программы|*.exe"
FileName=""
link(onExecute,3875641:doText,[])
}
карма: 1

0
Ответов: 133
Рейтинг: 0
#5: 2017-04-07 21:18:01 ЛС | профиль | цитата
Это вообще не то ) Давайте попробую по частям.

Мне нужно открыть файл кнопкой, потом указать папку, куда этот файл распаковать кнопкой и в результате опять кнопкой выполнить команду, используя пути к файлу и папке.
Потом мне нужно будет запаковать обратно этот файл из указанной папки отдельной кнопкой по другой команде, где так же прописаны пути.

вот для примера, я выделил жирным, что мне нужно вставить в параметры после выбора файла и папки

Add(WinExec,366969,172,189)
{
@Hint=#27:Вот это, по идее, запускает|29:любые программы с параметрами|
Param="dism /mount-wim /index:1 /wimfile:d:\1\install.wim /mountdir:d:\2"
link(FileName,3875641:Text,[])
link(Params,14063273:Text,[])
AddHint(67,0,177,26,@Hint)

--- Добавлено в 2017-04-07 21:20:49

И еще, как можно двум разным WinExec скормить эти самые пути? Мне нужно будет выполнять 2-3 РАЗНЫЕ команды с указанными файлом и папкой же.

Редактировалось 1 раз(а), последний 2017-04-07 21:20:49
карма: 1

0
Ответов: 824
Рейтинг: 138
#6: 2017-04-07 22:19:41 ЛС | профиль | цитата
Serascer писал(а):
Мне нужно...

Давай-ка поразмыслим.
Параметры командной строка это - строка!
Значит, для начала, нужно что? - сформировать эту строку!
В этом нам помогут компоненты с вкладочки "Строки", а конкретней компонент "FormatStr" - Формирование строки по маске!
Дерзай.
карма: 1

0
Ответов: 133
Рейтинг: 0
#7: 2017-04-07 22:25:25 ЛС | профиль | цитата
sashaoli писал(а):
Serascer писал(а):
Мне нужно...

Давай-ка поразмыслим.
Параметры командной строка это - строка!
Значит, для начала, нужно что? - сформировать эту строку!
В этом нам помогут компоненты с вкладочки "Строки", а конкретней компонент "FormatStr" - Формирование строки по маске!
Дерзай.


Вот это то что надо! ) Спасибо ) Правда с первой командой я справился немного иным способом )
Тогда вопрос, как мне использовать одни и те же пути файла и папки для трех разных команд?
В FormatStr можно прописать три разные строки и использовать каждую по отдельности?
карма: 1

0
Ответов: 824
Рейтинг: 138
#8: 2017-04-07 22:49:32 ЛС | профиль | цитата
Serascer писал(а):
В FormatStr можно...

Обычно, почти у всех программ есть волшебная клавиша "F1".
Как ею пользоваться в HiAsm?
Это просто - кликаеш компонент на рабочем поле и жмешь "F1".
Результатом таких действий будет вывод справки по данному компоненту.
карма: 1

0
Ответов: 133
Рейтинг: 0
#9: 2017-04-07 22:53:14 ЛС | профиль | цитата
Фух, методом тыка определил, что да как ) Спасибо за помощь, Теперь осталось допилить интерфейс.

Была бы помощь тут с конкретными примерами, было бы лучше )
карма: 1

0
Ответов: 824
Рейтинг: 138
#10: 2017-04-07 23:01:24 ЛС | профиль | цитата
Serascer писал(а):
Была бы помощь тут с конкретными примерами

Также, в дополнение к справке, в комплекте с HiAsm идет множество примеров для разных пакетов.
Каталог проектов располагается справа от рабочего поля HiAsm
Илюстрация
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#11: 2017-04-08 00:36:34 ЛС | профиль | цитата
sashaoli, ты так можешь челу мозги сломать.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 133
Рейтинг: 0
#12: 2017-04-08 01:15:14 ЛС | профиль | цитата
Разобрался с неработающей программой ) оказалось, FormatStr в свойствах, где прописана Mask, в конце писалось еще \n\r\r\n и так далее ) А в редакторе строк этого не было, вот и глючила программа. Теперь работает и даже можно пользоваться ) Осталось разобраться, почем у меня в командной строке кириллица иероглифами. Хотя может и не кириллица там. Вот последняя версия ) Было бы неплохо мою программу в примеры добавить, чтобы народ не мучался как я )

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=765
Height=275
Caption="EasyWIM"
BorderStyle=1
}
Add(Label,199530,392,21)
{
Left=10
Top=10
Width=59
Height=17
Caption="Файл WIM"
}
Add(Label,15284519,392,63)
{
Left=10
Top=60
Width=120
Height=17
Caption="Папка для распаковки"
}
Add(Edit,9602735,259,42)
{
Left=10
Top=30
Width=255
Text=""
}
Add(Edit,6448763,203,112)
{
Left=10
Top=80
Width=255
Text=""
}
Add(Button,10166825,77,42)
{
Left=280
Top=30
Width=20
Caption="..."
link(onClick,3214129:doExecute,[])
}
Add(Button,15887377,81,109)
{
Left=280
Top=80
Width=20
Caption="..."
link(onClick,4020917:doBrowse,[(130,115)(130,118)])
}
Add(ODialog,3214129,147,42)
{
Filter="*.wim"
Title="Выберите файл WIM"
FileName="*.wim"
link(onExecute,9602735:doText,[])
}
Add(Browse,4020917,147,112)
{
Title="Укажите папку для распаковки файла WIM"
NewStyle=0
link(onBrowse,6448763:doText,[])
}
Add(Button,8158137,84,175)
{
Left=10
Top=170
Width=75
Height=40
Caption="Распаковка"
link(onClick,11355605:doString,[])
}
Add(WinExec,6803986,539,175)
{
FileName="dism.exe"
Point(onConsoleResult)
Point(doConsoleInput)
Point(doConsoleExec)
link(Params,11355605:FString,[(552,163)(408,163)(408,219)(265,219)])
link(onConsoleResult,3789731:doEvent1,[(593,188)(593,251)])
}
Add(FormatStr,11355605,259,175)
{
Mask=" /mount-wim /index:1 /wimfile:%1 /mountdir:%2"
Point(FString)
link(onFString,6803986:doConsoleExec,[(415,181)(415,202)])
link(Str1,1913286:Var2,[])
link(Str2,15239786:Var2,[(272,169)(209,169)])
}
Add(FormatStr,5534339,315,231)
{
DataCount=1
Mask="/unmount-wim /mountdir:%1 /discard"
Point(FString)
link(onFString,3759111:doConsoleExec,[(443,237)(443,258)])
link(Str1,11593969:Var2,[(321,229)(230,229)])
}
Add(FormatStr,15589987,329,301)
{
Mask="/image:%1 /add-driver /driver:%2 /recurse /forceunsigned"
Point(FString)
link(onFString,8716994:doConsoleExec,[(450,307)(450,321)])
link(Str1,11593969:Var3,[(335,223)])
link(Str2,14730865:Text,[(342,289)(309,289)(309,405)(276,405)])
}
Add(Button,16473098,81,298)
{
Left=210
Top=170
Width=75
Height=40
Caption="Добавление драйверов"
link(onClick,15589987:doString,[(245,304)(245,307)])
}
Add(Button,4467391,81,235)
{
Left=110
Top=170
Width=75
Height=40
Caption="Запаковка"
link(onClick,5534339:doString,[(239,241)(239,237)])
}
Add(GetDataEx,15239786,203,154)
{
link(Data,6448763:Text,[])
}
Add(GetDataEx,1913286,259,105)
{
link(Data,9602735:Text,[])
}
Add(Edit,14730865,270,361)
{
Left=10
Top=130
Width=255
Text=""
}
Add(Button,9774882,82,362)
{
Left=280
Top=130
Width=20
Caption="..."
link(onClick,15145513:doBrowse,[(131,368)(131,370)])
}
Add(Label,15331021,389,109)
{
Left=10
Top=110
Width=110
Height=17
Caption="Папка с драйверами"
}
Add(Browse,15145513,154,364)
{
Title="Укажите папку с драйверами"
link(onBrowse,14730865:doText,[(228,370)(228,367)])
}
Add(WinExec,8716994,539,301)
{
FileName="dism.exe"
RunEvent=1
Point(doConsoleExec)
Point(onConsoleResult)
link(Params,15589987:FString,[(552,289)(444,289)(444,345)(335,345)])
link(onConsoleResult,3789731:doEvent3,[(593,314)(593,265)])
}
Add(WinExec,3759111,539,238)
{
FileName="dism.exe"
Point(doConsoleExec)
Point(onConsoleResult)
link(Params,5534339:FString,[(552,226)(436,226)(436,275)(321,275)])
link(onConsoleResult,3789731:doEvent2,[(593,251)(593,258)])
}
Add(Memo,15792275,665,245)
{
Left=310
Top=40
Width=440
Height=200
Font=[Arial,8,0,0,204]
ParentFont=0
KeyPreview=1
ScrollBars=3
ReadOnly=0
}
Add(Hub,3789731,616,245)
{
InCount=3
OutCount=1
link(onEvent1,15792275:doAdd,[])
}
Add(GetDataEx,11593969,224,218)
{
Angle=3
link(Data,15239786:Var1,[(200,223)(200,159)])
}



Редактировалось 4 раз(а), последний 2017-04-08 02:09:37
карма: 1

0
Ответов: 824
Рейтинг: 138
#13: 2017-04-08 10:20:24 ЛС | профиль | цитата
Serascer,
Проверь, вот так работает?


Add(MainForm,188594,168,196)
{
Width=765
Height=275
Caption="EasyWIM"
BorderStyle=1
}
Add(Label,199530,504,147)
{
Left=10
Top=10
Width=59
Height=17
Caption="Файл WIM"
}
Add(Label,15284519,497,140)
{
Left=10
Top=60
Width=120
Height=17
Caption="Папка для распаковки"
}
Add(Edit,9602735,406,133)
{
Left=10
Top=30
Width=255
Text=""
}
Add(Edit,6448763,413,196)
{
Left=10
Top=80
Width=255
Text=""
}
Add(Button,10166825,280,133)
{
Left=280
Top=30
Width=20
Caption="..."
link(onClick,3214129:doExecute,[])
}
Add(Button,15887377,280,196)
{
Left=280
Top=80
Width=20
Caption="..."
link(onClick,4020917:doBrowse,[])
}
Add(ODialog,3214129,350,133)
{
Filter="*.wim"
Title="Выберите файл WIM"
FileName="*.wim"
link(onExecute,9602735:doText,[])
}
Add(Browse,4020917,357,196)
{
Title="Укажите папку для распаковки файла WIM"
NewStyle=0
link(onBrowse,6448763:doText,[])
}
Add(Button,8158137,280,266)
{
Left=10
Top=170
Width=75
Height=40
Caption="Распаковка"
link(onClick,11355605:doString,[])
}
Add(WinExec,6803986,567,245)
{
FileName="dism.exe"
Point(onConsoleResult)
Point(doConsoleInput)
Point(doConsoleExec)
link(onConsoleResult,8723266:doCharset,[])
}
Add(FormatStr,11355605,406,266)
{
Mask=" /mount-wim /index:1 /wimfile:%1 /mountdir:%2"
Point(FString)
link(onFString,14960546:doWork2,[])
link(Str1,9602735:Text,[])
link(Str2,5814553:Var2,[])
}
Add(FormatStr,5534339,441,301)
{
DataCount=1
Mask="/unmount-wim /mountdir:%1 /discard"
Point(FString)
link(onFString,7117672:doWork2,[])
link(Str1,14469128:Var2,[])
}
Add(FormatStr,15589987,441,392)
{
Mask="/image:%2 /add-driver /driver:%1 /recurse /forceunsigned"
Point(FString)
link(onFString,7117672:doWork3,[(529,398)])
link(Str1,14730865:Text,[])
link(Str2,14469128:Var3,[(454,383)(482,383)(482,250)])
}
Add(Button,16473098,280,392)
{
Left=210
Top=170
Width=75
Height=40
Caption="Добавление драйверов"
link(onClick,15589987:doString,[])
}
Add(Button,4467391,280,301)
{
Left=110
Top=170
Width=75
Height=40
Caption="Запаковка"
link(onClick,5534339:doString,[])
}
Add(Edit,14730865,441,343)
{
Left=10
Top=130
Width=255
Text=""
}
Add(Button,9774882,280,343)
{
Left=280
Top=130
Width=20
Caption="..."
link(onClick,15145513:doBrowse,[])
}
Add(Label,15331021,490,133)
{
Left=10
Top=110
Width=110
Height=17
Caption="Папка с драйверами"
}
Add(Browse,15145513,357,343)
{
Title="Укажите папку с драйверами"
link(onBrowse,14730865:doText,[])
}
Add(Memo,15792275,679,252)
{
Left=310
Top=40
Width=440
Height=200
Font=[Arial,8,0,0,204]
ParentFont=0
KeyPreview=1
ScrollBars=3
ReadOnly=0
}
Add(Charset,8723266,616,252)
{
link(onCharset,15792275:doAdd,[])
}
Add(HubEx,14960546,525,266)
{
link(onEvent,6803986:doConsoleExec,[])
}
Add(HubEx,7117672,525,301)
{
Angle=3
link(onEvent,14960546:doWork3,[])
}
Add(GetDataEx,5814553,413,245)
{
link(Data,6448763:Text,[])
}
Add(GetDataEx,14469128,441,245)
{
Angle=3
link(Data,5814553:Var3,[])
}
карма: 1

0
Ответов: 133
Рейтинг: 0
#14: 2017-04-08 10:28:56 ЛС | профиль | цитата
sashaoli писал(а):
Serascer,
Проверь, вот так работает?


Работает! ) Спасибо большое )) Теперь следующая проблемка, как сделать, чтобы в окне с результатом работы автопрокрутка была?
карма: 1

0
Ответов: 133
Рейтинг: 0
#15: 2017-04-08 11:46:01 ЛС | профиль | цитата
К черту эту автопрокрутку, подскажите пожалуйста:

Я выбираю файл, выполняется консольная команда с ним, как мне в результатах работы найти определенные слова типа Индекс: 1, 2, 3 и так далее и вставить их в Выпадающий список?

Поиск строк по маске выполняется компонентом StrMask, верно? Но похоже, он не хочет работать с результатом работы консольной программы.

--- Добавлено в 2017-04-08 11:51:16

Вот новый вариант программы, добавил Выпадающий список


Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=765
Height=295
Caption="EasyWIM"
BorderStyle=1
}
Add(Label,199530,686,7)
{
Left=10
Top=10
Width=59
Height=17
Caption="Файл WIM"
}
Add(Label,15284519,686,98)
{
Left=10
Top=60
Width=120
Height=17
Caption="Папка для распаковки"
}
Add(Edit,9602735,266,42)
{
Left=10
Top=30
Width=255
Text=""
link(onChange,7723552:doString,[(317,48)(317,55)])
}
Add(Edit,6448763,203,112)
{
Left=10
Top=80
Width=255
Text=""
}
Add(Button,10166825,77,42)
{
Left=280
Top=30
Width=20
Caption="..."
link(onClick,3214129:doExecute,[])
}
Add(Button,15887377,81,109)
{
Left=280
Top=80
Width=20
Caption="..."
link(onClick,4020917:doBrowse,[(130,115)(130,118)])
}
Add(ODialog,3214129,147,42)
{
Filter="*.wim"
Title="Выберите файл WIM"
FileName="*.wim"
link(onExecute,9602735:doText,[])
}
Add(Browse,4020917,147,112)
{
Title="Укажите папку для распаковки файла WIM"
NewStyle=0
link(onBrowse,6448763:doText,[])
}
Add(Button,8158137,84,175)
{
Left=10
Top=220
Width=75
Height=40
Caption="Распаковка"
link(onClick,11355605:doString,[])
}
Add(WinExec,6803986,539,175)
{
FileName="dism.exe"
Point(onConsoleResult)
Point(doConsoleInput)
Point(doConsoleExec)
link(Params,11355605:FString,[(552,163)(408,163)(408,219)(265,219)])
link(onConsoleResult,3789731:doEvent1,[(593,188)(593,251)])
}
Add(FormatStr,11355605,259,175)
{
Mask=" /mount-wim /index:1 /wimfile:%1 /mountdir:%2"
Point(FString)
link(onFString,6803986:doConsoleExec,[(415,181)(415,202)])
link(Str1,1913286:Var2,[])
link(Str2,15239786:Var2,[(272,169)(209,169)])
}
Add(FormatStr,5534339,315,231)
{
DataCount=1
Mask="/unmount-wim /mountdir:%1 /discard"
Point(FString)
link(onFString,3759111:doConsoleExec,[(443,237)(443,258)])
link(Str1,11593969:Var2,[(321,229)(230,229)])
}
Add(FormatStr,15589987,329,301)
{
Mask="/image:%1 /add-driver /driver:%2 /recurse /forceunsigned"
Point(FString)
link(onFString,8716994:doConsoleExec,[(450,307)(450,321)])
link(Str1,11593969:Var3,[(335,223)])
link(Str2,14730865:Text,[(342,289)(309,289)(309,405)(276,405)])
}
Add(Button,16473098,81,298)
{
Left=210
Top=220
Width=75
Height=40
Caption="Добавление драйверов"
link(onClick,15589987:doString,[(245,304)(245,307)])
}
Add(Button,4467391,81,235)
{
Left=110
Top=220
Width=75
Height=40
Caption="Запаковка"
link(onClick,5534339:doString,[(239,241)(239,237)])
}
Add(GetDataEx,15239786,203,154)
{
link(Data,6448763:Text,[])
}
Add(GetDataEx,1913286,259,105)
{
link(Data,3793120:Var2,[])
}
Add(Edit,14730865,270,361)
{
Left=10
Top=130
Width=255
Text=""
}
Add(Button,9774882,82,362)
{
Left=280
Top=130
Width=20
Caption="..."
link(onClick,15145513:doBrowse,[(131,368)(131,370)])
}
Add(Label,15331021,683,151)
{
Left=10
Top=110
Width=110
Height=17
Caption="Папка с драйверами"
}
Add(Browse,15145513,154,364)
{
Title="Укажите папку с драйверами"
link(onBrowse,14730865:doText,[(228,370)(228,367)])
}
Add(WinExec,8716994,539,301)
{
FileName="dism.exe"
RunEvent=1
Point(doConsoleExec)
Point(onConsoleResult)
link(Params,15589987:FString,[(552,289)(444,289)(444,345)(335,345)])
link(onConsoleResult,3789731:doEvent3,[(593,314)(593,265)])
}
Add(WinExec,3759111,539,238)
{
FileName="dism.exe"
Point(doConsoleExec)
Point(onConsoleResult)
link(Params,5534339:FString,[(552,226)(436,226)(436,275)(321,275)])
link(onConsoleResult,3789731:doEvent2,[(593,251)(593,258)])
}
Add(Memo,15792275,742,245)
{
Left=310
Top=40
Width=440
Height=220
Font=[Lucida Console,8,0,0,204]
ScrollBars=3
ReadOnly=0
Point(Position)
Point(onShow)
}
Add(Hub,3789731,616,245)
{
InCount=3
OutCount=1
link(onEvent1,8723266:doCharset,[])
}
Add(GetDataEx,11593969,224,218)
{
Angle=3
link(Data,15239786:Var1,[(200,223)(200,159)])
}
Add(GetDataEx,3793120,259,84)
{
link(Data,9602735:Text,[(265,79)(272,79)])
}
Add(Label,9603378,683,53)
{
Left=10
Top=160
Width=100
Height=17
Caption="Редакция Windows"
}
Add(Charset,8723266,672,245)
{
link(onCharset,15792275:doAdd,[])
}
Add(ComboBox,14930163,602,77)
{
Left=10
Top=180
Width=255
Height=21
Text=""
DataType=1
}
Add(FormatStr,7723552,336,49)
{
DataCount=1
Mask="/get-wiminfo /wimfile:%1"
Point(FString)
link(onFString,16362163:doConsoleExec,[(387,55)(387,90)])
link(Str1,3793120:Var1,[(342,30)(256,30)(256,89)])
}
Add(WinExec,16362163,406,63)
{
FileName="dism.exe"
Point(onConsoleResult)
Point(doConsoleInput)
Point(doConsoleExec)
link(Params,7723552:FString,[(419,51)(381,51)(381,93)(342,93)])
link(onConsoleResult,5586221:doCharset,[])
}
Add(Charset,5586221,462,70)
{
link(onCharset,2860730:doCompare,[])
}
Add(StrMask,2860730,525,70)
{
Mask="Индекс: #"
link(onTrue,14930163:doAdd,[])
}

Редактировалось 4 раз(а), последний 2017-04-08 11:52:49
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)