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

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

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

articlebot (28-02-2016 18:11): VMware ThinApp (formerly Thinstall) часть 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

   

SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473 18:49 04-06-2014
Цитата:
сё одно до перезагрузки папка не успевает удалиться... Как бы это решить...

До запуска программы - прописать в автозагрузку удаление папки.

Код:
Dim TmpDir: TmpDir = ExpandPath("%TEMP%")
Dim AutoRunScript: AutoRunScript = TmpDir & "\auto_run.bat"
Call WaitForProcess(ExecuteExternalProcess("cmd.exe /C reg add ""HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce"" /v Test /d " & chr(34) & AutoRunScript & chr(34)), 0)
Dim FSO: Set FSO = CreateObject("Scripting.filesystemObject")
const ForReading = 1, ForWriting = 2, ForAppending = 8
f = FSO.OpenTextFile(AutoRunScript, ForWriting, true)
f.WriteLine("rd /S /Q ""%AppData%\Local\ChemTable Software\Reg Organizer""")
f.Close

 
Добавлено:
Artem_Butenko
Не проверял, написал вручную на коленке:

Код:
Function OnLastProcessExit
const MegaProga = "MegaProga.exe"
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Origin: Origin = GetEnvironmentVariable("TS_ORIGIN")
' В проекте папка "%drive_c%\Progs" с exe-шниками, которые нужно вынести наружу
const PROG_PATH = "C:\Progs"
' Часть пути из PROG_PATH без буквы диска: \Progs
Dim PROG_SUB_PATH: PROG_SUB_PATH = Mid(PROG_PATH, 3)
' Внешний cmd.exe
Dim CMD_ETERNAL: CMD_ETERNAL = chr(34) & ExpandPath("%SystemRoot%\system32\cmd.exe") & chr(34)
' В проекте "%drive_c%\Progs\hstart.exe
Dim HSTART: HSTART = PROG_PATH & "\hstart.exe"
 
LastSlash = InStrRev(Origin, "\")
SourcePath = Left(Origin, LastSlash)
ExeName = Mid(Origin, LastSlash + 1, Len(Origin))
 
SandboxParent = GetBuildOption("SandboxPath")
SandboxName = GetBuildOption("SandboxName")
If SandboxParent = "." Then
    SandboxPath = SourcePath & SandboxName
Else
    SandboxPath = SandboxParent & "\" & SandboxName
End If
 
' Внешний hstart.exe: <SandBox>\Progs\hstart.exe
Dim HSTART_EXTERNAL: HSTART_EXTERNAL = SandboxPath & PROG_SUB_PATH & "\hstart.exe"
 
On Error Resume Next
' Копируем папку изнутри наружу: "C:\Progs" в песочницу
If Not FSO.FolderExists(SandboxPath & PROG_SUB_PATH) Then
    ' xcopy /E /H /R /Y C:\Progs <Sandbox>\Progs\
    cmd = CMD_ETERNAL & " /C xcopy /E /H /R /Y "& _
        chr(34)& PROG_PATH &chr(34)& _
        " " & _
        chr(34)& SandboxPath & PROG_SUB_PATH &"\"&chr(34)
    ' <Sandbox>\Progs\hstart.exe /NOCONSOLE ""C:\Windows\system32\cmd.exe" /C xcopy /E /H /R /Y "C:\Progs" <Sandbox>\Progs\""
    ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34))
    ' Ожидаем, пока скопируется каталог PROG_PATH
    Do
        MySleep(1)
    Loop Until FSO.FolderExists(SandboxPath & PROG_SUB_PATH)
End If
 
' Запуск из песочницы
cmd = CMD_ETERNAL & " /C " & chr(34)& SandboxPath & PROG_SUB_PATH &"\"& MegaProga & chr(34)
Call WaitForProcess(ExecuteExternalProcess(HSTART_EXTERNAL & " /NOCONSOLE " & chr(34) & cmd & chr(34)), 0)
 
End Function
 
'--[ Пауза ]--------------------------------------------------------------------
Function MySleep(interval)
Dim i,j
    For i = 1 To 20000000*interval
        j = 1
    Next
End Function

В папке с проектом создаёте папку "%drive_c%\Progs" и кладёте туда MegaProga.exe и hstart.exe (его найдёте в гугле или по ссылкам из моих примеров).
Или переделываете скрипт по запуску MegaProga.exe по тому пути, где у вас лежит эта мегапрога.

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 19:08 04-06-2014
AVanti473



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

Цитата:
До запуска программы - прописать в автозагрузку удаление папки.

 
SLasH Кстати да! Золотая у Вас голова!!! Получается после перезагрузки стартанёт одноразовый запуск удаления папки. Ок! Но, а если нужно было наоборот, забекапить папку (если такая существовала), убрать её оттуда (опять же, если она существовала) перед запуском программы, удалить папку появившуюся в следствии работы портабельной программы, и вернуть забекапленную на место после перезагрузки? Возможно?
 
Если такое возможно, Вас не затруднит обозначить в скрипте комментарии того, как и для чего будут выполняться определённые команды?
 
И, я всё правильно понял по вашему скрипту?
вот

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 20:44 04-06-2014 | Исправлено: AVanti473, 20:56 04-06-2014
Artem_Butenko



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

Цитата:
Не проверял, написал вручную на коленке

 
Не робит, в чем проблема не пойму?
 
Добавлено:

Цитата:
Копируем папку изнутри наружу: "C:\Progs" в песочницу

 
Папку в "песочницу" копировать из виртуальной среды не нужно, только файлы из этой папки, в нашем случае "MegaProga.exe".

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 20:58 04-06-2014
coherent

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

Цитата:
Печально, не работает...

Странно, у меня работает. Я ж его не просто написал, как говорится на коленке, и выложил, а протестировал перед этим. И в чем проявляется неработоспособность? Может Вы переменные меняете, пути не соответствуют?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 21:31 04-06-2014
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
 
Попробую еще. Поясните о режимах изоляции для каталога с "MyProgram.exe".

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 22:31 04-06-2014
SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473 21:44 04-06-2014
Цитата:
Но, а если нужно было наоборот, забекапить папку (если такая существовала), убрать её оттуда (опять же, если она существовала) перед запуском программы, удалить папку появившуюся в следствии работы портабельной программы, и вернуть забекапленную на место после перезагрузки? Возможно?

Да. Завтра напишу, как.

Цитата:
И, я всё правильно понял по вашему скрипту?

Всё правильно.

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 23:49 04-06-2014
coherent

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

Цитата:
Поясните о режимах изоляции для каталога с "MyProgram.exe".

Без разницы. Но если предметно, то MyProgram.exe находится здесь: %ProgramFilesDir%\ Data\MyProgram.exe. Глобальная изоляция - Merged, изоляция папки Data - Full, папки %ProgramFilesDir% - явно не задана, значит Merged. Может быть и WriteCopy.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 23:54 04-06-2014
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
 
Прошу перед Вами прощения, можно взглянуть на Ваш проект целиком?
 
Добавлено:
Всё работает! Спасибо за наставление на путь истинный. Но опять таки, можно ли сделать так, чтобы, файлы экспортировались в "песочницу" и запускался исполняемый файл ThinApp_FileCleaner.exe? Всего файлов два:
ThinApp_FileCleaner.exe
ThinApp_FileCleaner.ini
Условие, если в каталоге песочницы уже есть файл ThinApp_FileCleaner.ini, - то он не будет перезаписан при экспорте из виртуальной среды. Вся надежда на Вас, плагин уже готов, осталось только доделать VBS-скрипт.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 00:41 05-06-2014 | Исправлено: Artem_Butenko, 01:44 05-06-2014
SLasH

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

Цитата:
осталось только доделать VBS-скрипт

Скрипт в студию и будем доделывать.

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 12:13 05-06-2014
coherent

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

Цитата:
можно ли сделать так, чтобы, файлы экспортировались в "песочницу" и запускался исполняемый файл ThinApp_FileCleaner.exe?

И все же вопрос, который остался без ответа, это принципиально или просто "хотелка", чтобы именно в песочницу?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 12:33 05-06-2014
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Можно конечно и в песочницу. Но при этом ThinApp_FileCleaner.exe придется запускать через cmd, а это - появление консольного окна. Если скрывать окно, то нужно использовать сторонние утилиты, например hstart. А это то, что предложил SLasH пару постами выше. При запуске из песочницы варианты ExecuteExternalProcess и WshShell.Run почему-то корректно не срабатывают, по крайней мере у меня.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 15:05 05-06-2014
Artem_Butenko



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

Цитата:
Можно конечно и в песочницу. Но при этом ThinApp_FileCleaner.exe придется запускать через cmd, а это - появление консольного окна. Если скрывать окно, то нужно использовать сторонние утилиты, например hstart. А это то, что предложил SLasH пару постами выше. При запуске из песочницы варианты ExecuteExternalProcess и WshShell.Run почему-то корректно не срабатывают, по крайней мере у меня.

 
Вон оно как, не знал, не вникал в суть вопроса. Если неизбежно использование "cmd.exe" и "hstart.exe", пусть оно тогда так и будет.
 

Цитата:
И все же вопрос, который остался без ответа, это принципиально или просто "хотелка", чтобы именно в песочницу?

 
Нет, то не моя "хотелка", это неизбежная "хотелка" плагина "ThinApp_FileCleaner.exe".
 
Добавлено:
SLasH
 

Цитата:
Не проверял, написал вручную на коленке

 
Работает. Прошу меня извинить. Антивирус блокировал исполнение скрипта. Остался вопрос, можно ли извлекать файлы напрямую в "песочницу", не создавая в ней каталог "Progs"? А если файлы уже имеются в песочнице, то не перезаписывать их.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 15:44 05-06-2014 | Исправлено: Artem_Butenko, 15:53 05-06-2014
coherent

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

Цитата:
Остался вопрос, можно ли извлекать файлы напрямую в "песочницу", не создавая в ней каталог "Progs"?

Можно. Подредактируйте пути.

Цитата:
А если файлы уже имеются в песочнице, то не перезаписывать их.

Если они не удаляются и не перезаписываются, тогда достаточно один раз при первом запуске сборки(OnFirstSanboxOwner) закинуть их в песочницу и забыть про них. А при завершении (OnLastProcessExit) только запускать ThinApp_FileCleaner.exe.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 16:09 05-06-2014
Artem_Butenko



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

Цитата:
Можно. Подредактируйте пути.

 
Пожалуйста, помогите я совсем в VBS-скриптах ноль. Сам скрипт.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 16:14 05-06-2014
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Давайте подождем SLasH. Это полностью его скрипт и будет не совсем корректно, если я его буду править.
добавлено
Плюс не совсем понятно, что делать с файлами ThinApp_FileCleaner.exe и ThinApp_FileCleaner.ini. Вынести в песочницу и запустить ThinApp_FileCleaner.exe, если там уже есть ThinApp_FileCleaner.ini, то его не перезаписывать? А что с ThinApp_FileCleaner.exe? Его удалять, когда он отработает, или он тоже остается  в песочнице и его тоже не надо перезаписывать?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 16:21 05-06-2014 | Исправлено: coherent, 16:32 05-06-2014
SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko 16:44 05-06-2014
Цитата:
Остался вопрос, можно ли извлекать файлы напрямую в "песочницу", не создавая в ней каталог "Progs"? А если файлы уже имеются в песочнице, то не перезаписывать их.

Можно. Нужно только отталкиваться от виртуальных путей, где лежат ваши файлы.
Пусть, к примеру, это будет виртуальный путь "C:\Program Files\Some Program Software\MegaSuperProga.exe". Это означает, что в проекте есть "%ProgramFilesDir%\Some Program Software\MegaSuperProga.exe". Тогда копирование "MegaSuperProga.exe" изнутри наружу выглядит так:

Код:
' Копируем файл изнутри наружу
If Not FSO.FileExists(SandboxPath & "\MegaSuperProga.exe") Then
    cmd = CMD_ETERNAL & " /C copy ""C:\Program Files\Some Program Software\MegaSuperProga.exe"" " &chr(34)& SandboxPath & "\MegaSuperProga.exe"
    ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34))
    Do
        MySleep(1)
    Loop Until FSO.FileExists(SandboxPath & "\MegaSuperProga.exe")
End If  

Вместо "MySleep" должно отрабатывать "WaitForProcess", но почему-то WaitForProcess бесконечно ждал, хотя файлы уже были скопированы. Поэтому я от него отказался и стал вручную проверять, скопировалсь файлы или нет.
 
P.S.: косметическая ошибка. Вместо CMD_ETERNAL нужно было везде написать CMD_EXTERNAL

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 16:28 05-06-2014 | Исправлено: SLasH, 16:31 05-06-2014
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SLasH
Чисто из любопытства, почему копирование через cmd, а не методом CopyFile?

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 16:44 05-06-2014
SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473 21:44 04-06-2014
Цитата:
Получается после перезагрузки стартанёт одноразовый запуск удаления папки. Ок! Но, а если нужно было наоборот, забекапить папку (если такая существовала), убрать её оттуда (опять же, если она существовала) перед запуском программы, удалить папку появившуюся в следствии работы портабельной программы, и вернуть забекапленную на место после перезагрузки? Возможно?  

Давайте ставить реальное ТЗ.
Т.к. приходится самому догадываться, как работает ваша сборка.
Пусть будет абстрактный "Some.exe" который делает ту функцию, которая вам нужна и после своей работы жёстко перезагружает машину.
Тогда, если я правильно понял, что вам нужно, то действия такие:
до запуска "Some.exe":
1) забэкапить папку, в которую потом будет что-то писать "Some.exe". Как я понял эта папка "%AppData%\Local\ChemTable Software\Reg Organizer"
2) удалить папку "%AppData%\Local\ChemTable Software\Reg Organizer"
3) записываем в реальную систему скрипт, который будет восстанавливать всё, что нужно
после запуска "Some.exe" и перезагрузки запускаетя скрипт, который:
1) удаляет папку, которая появляется в следствии работы "Some.exe". Напишите полный путь, какую папку нужно удалять. Или это всё та же папка "%AppData%\Local\ChemTable Software\Reg Organizer" ?
2) возвращает забэкапленную папку "%AppData%\Local\ChemTable Software\Reg Organizer" обратно
 
Добавлено:
coherent 17:44 05-06-2014
Цитата:
Чисто из любопытства, почему копирование через cmd, а не методом CopyFile

Изначально я свой пример писал для копирования каталога через xcopy, оттуда и оставил xcopy или copy.
А с методом CopyFile не тестировал. Сожет ли он изнутри наружу копировать. Нужно тестировать...

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 16:49 05-06-2014
Artem_Butenko



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

Цитата:
' Копируем файл изнутри наружу  
If Not FSO.FileExists(SandboxPath & "\MegaSuperProga.exe") Then  
    cmd = CMD_ETERNAL & " /C copy ""C:\Program Files\Some Program Software\MegaSuperProga.exe"" " &chr(34)& SandboxPath & "\MegaSuperProga.exe"  
    ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34))  
    Do  
        MySleep(1)  
    Loop Until FSO.FileExists(SandboxPath & "\MegaSuperProga.exe")  
End If

 
Как я понял это только часть изложенного Вами выше скрипта. Пожалуйста, если не трудно, можно увидеть весь скрипт целиком. Сам боюсь при редактировании сделаю море ошибок. Повторюсь, всего файлов два: "MegaSuperProga.ini" и "MegaSuperProga.exe". При этом первым экспортируется в "песочницу" файл "MegaSuperProga.ini", а затем только "MegaSuperProga.exe", и производится запуск последнего. Ожидаем завершения работы "MegaSuperProga.exe" и удаляем его. "Инишник" ("MegaSuperProga.ini") оставляем в "песочнице", при повторном запуске осуществляем проверку на наличие "MegaSuperProga.ini" и "MegaSuperProga.exe" в каталоге "песочницы". Если файлы там уже имеются, не выносим их из виртуальной среды. Пожалуйста, помогите довести скрипт до окончательного варианта. Очень Вам благодарен.
 
Добавлено:
Отредактировал скрипт таким образом. Думаю не совсем все я сделал правильно.
 
Добавлено:
Файлы извлекаются, только вот запуск исполняемого файла не происходит. Еще одно последнее пожелание, хотелось бы увидеть вариант скрипта с ожиданием завершения процесса "MegaSuperProga.exe" и без ожидания завершения процесса.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:01 05-06-2014 | Исправлено: Artem_Butenko, 17:19 05-06-2014
AVanti473



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

Цитата:
Давайте ставить реальное ТЗ.

 
Абсолютно с Вами согласен! Вы очень хорошо всё написали, ошибка только в пути к папке!
Не "%AppData%\Local\ChemTable Software\Reg Organizer
а "%AppData%\Local\ChemTable Software
 
Вообще, замечательно, что Вы уточнили, потому что я со вчерашнего дня думаю куда же должен делаться бэкап!!! Прога то специфическая, по чистке реестра и дисков, поэтому просто может сожрать бекап при автоматической чистке и нечего будет восстанавливать... Но, всё по порядку, сперва порядок действий:
 
Действия такие:  
до запуска "RegOrganizer.exe":
1) Забэкапить папку, в которую потом будет что-то писать "RegOrganizer.exe". Эта папка "%AppData%\Local\ChemTable Software" (если конечно она уже существует в системе)
2) Удалить папку "%AppData%\Local\ChemTable Software"  
3) Записываем в реальную систему скрипт, который будет восстанавливать всё, что нужно!
После запуска "RegOrganizer.exe" и перезагрузки
Запускаетя скрипт, который:  
1) Удаляет папку, которая появляется в следствии работы "RegOrganizer.exe" (если такая появилась). Это всё та же папка "%AppData%\Local\ChemTable Software"
2) Возвращает забэкапленную папку "%AppData%\Local\ChemTable Software" обратно.
 
Теперь о том, где хранить бекап. В любом месте на диске опасно, ведь, в силу функционала самой программы, при автоматической чистке дисков можно весь бекап удалить! Наверное, надёжнее будет в папке с песочницей программы, так как даже идиот додумается не сносить файлы песочницы при чистке дисков...
 
P.S. Я и вправду никак не могу понять, почему при нахождении папки "%AppData%\Local\ChemTable Software" в виртуале, не работает функция оптимизации реестра! Ну не стал же бы разработчик программы (тем более версия 2009 года, тогда и портабельными сборками сравнительно мало занимались) защищать именно эту функцию от работы в виртуале?! Ставил уже изоляцию и Full и WriteCopy, но всё равно, как только папка оказывается в песочнице, функция оптимизации сообщает что с реестром всё в порядке. Стоит только выкинуть папку %Local AppData% из проекта, в реальной системе появляется папка "%AppData%\Local\ChemTable Software" и реестр оптимизируется нормально, с последующей автоматической перезагрузкой! Всё это по меньшей мере странно и теперь требует навороченных скриптов с бекапами... Надеюсь, хоть так получиться!

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 17:37 05-06-2014
   

Страницы: 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » VMware ThinApp (formerly Thinstall) 3
articlebot (28-02-2016 18:11): VMware ThinApp (formerly Thinstall) часть 4


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru