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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Итак, обещаный архив:  http://rgho.st/6TRtDfCvH
 
Если кратко, то вот выжимка для "Package.ini".
 
Выделил цветом:
1. Красное - самое ценное для изоляции
2. Зелёное - удалить ; для самоудаления песочницы по завершении работы программы (иногда это может быть удобно)
3. Синее - самое ценное для вызова cmd.exe *
 
*Обращу внимание, моё имя для комстроки отличается от системного. Это важно для работы именно изолированного cmd, а не реального системного! Та же штука потребуется для explorer.exe.
 
По вкусу можно наделать разные права доступа к разным папкам, в т.ч. системным при помощи правильного "##Attributes.ini" в них.
 
По опыту скажу, что лучше собирать изолированный cmd.exe на Win XP при помощи ThinApp 4.73, тогда оно заработает на всех виндах, начиная с ХР до 10 х64. В других случаях могут быть проблемы в работе на 10-ке или на XP/Vista.
 
Хотя... любителям гуя (или кому комстрока - дико и непонятно) с тем же успехом можно завернуть внутрь не только cmd.exe, но и какой-нибудь легковесный Q-Dir, из которого уже запускать всё, что надо. Всё-равно дочерние процессы будут работать в подчинении тинапу при любом из исходов.

Всего записей: 16999 | Зарегистр. 04-11-2010 | Отправлено: 20:27 03-10-2016 | Исправлено: insorg, 20:40 03-10-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
а можно пощупать такой проект? очень любопытно

Несколько упрощённый проект для ознакомления: USDownloader.rar (Пояснения)

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 02:39 12-10-2016 | Исправлено: romby, 16:04 01-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как в VBS определить, в какой папке лежит портабельная программа (контейнер)?

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 17:18 01-11-2016
coherent

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

Цитата:
Подскажите, как в VBS определить, в какой папке лежит портабельная программа (контейнер)?

Origin = GetEnvironmentVariable("TS_ORIGIN")
Path = Left(Origin, InStrRev(Origin, "\") - 1)

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 17:47 01-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
Спасибо.
 
А ещё вопрос, как узнать ФАКТИЧЕСКОЕ расположение песочницы?

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 20:08 01-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
https://cloud.mail.ru/public/G1QP/YMxVFLXk1

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 21:07 01-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Спасибо. Там точно есть ответ?
 
Добавлено:
Не вижу там ответа.
 
В ThinApp 4.7.3 User's Guide сказано, что ThinApp ищет песочницу по ряду путей.
Я насчитал их там одиннадцать. Вот они в упоминаемом порядке (утрированно):

Код:
Function SandboxPath
  ComputerName = GetEnvironmentVariable("ComputerName")
  SandboxName = GetBuildOption("SandboxName")
  ProgramDir = Left(GetEnvironmentVariable("TS_ORIGIN"), InStrRev(GetEnvironmentVariable("TS_ORIGIN"), "\"))
 
  SandboxPath = GetEnvironmentVariable(SandboxName & "_SANDBOX_DIR")
  SandboxPath = GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & "\" & SandboxName & "." & ComputerName
  SandboxPath = GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & "\" & SandboxName
  SandboxPath = ProgramDir & SandboxName & "." & ComputerName
  SandboxPath = ProgramDir & SandboxName
  SandboxPath = ProgramDir & "Thinstall\" & SandboxName & "." & ComputerName
  SandboxPath = ProgramDir & "Thinstall\" & SandboxName
  SandboxPath = GetBuildOption("SandboxPath") & "\" & SandboxName & "." & ComputerName
  SandboxPath = GetBuildOption("SandboxPath") & "\" & SandboxName
  SandboxPath = "%AppData%\Thinstall\" & SandboxName & "." & ComputerName
  SandboxPath = "%AppData%\Thinstall\" & SandboxName
End Function
 

Есть ли способ определить, какой из них использует запущенная программа?

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 21:36 01-11-2016 | Исправлено: romby, 23:00 01-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
ну очевидно же (или это только мне?)  
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & "\" & SandboxName = текущий путь прямо в папку песочницы
 
GetBuildOption("SandboxPath") = путь до песочницы, прописанный в Package.ini
GetBuildOption("SandboxPath") & "\" & SandboxName = путь в песочницу, прописанный в Package.ini
 
в общем случае префикс Get - означает "получить". GetEnvironmentVariable = получить текущую переменную
 
суффиксы - то, что отделено точкой.  
в этих примерах & ComputerName - это сетевой путь. для локального использования излишен.
 
строки не начинающиеся с =Get не получают, а задают путь. следовательно к поставленной задаче отношения не имеют.
 
как-то так

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 01:44 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
ну очевидно же (или это только мне?)  

Совершенно непонятно, зачем вы написали все эти очевидные вещи, так и не вникнув в суть вопроса.

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 11:33 02-11-2016
Proshaa

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

Цитата:
вопрос, как узнать ФАКТИЧЕСКОЕ расположение песочницы


Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница  

или вас географические координаты интересовали?

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 12:03 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница

Неужели переменная окружения %THINSTALL_SANDBOX_DIR% обязательно существует в виртуальной среде?

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 12:57 02-11-2016 | Исправлено: romby, 13:00 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Proshaa
Цитата:
GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") = текущий путь до папки, в которой лежит песочница  

Хотелось бы мне, чтобы это оказалось правдой, но...
 
   

Код:
Function OnFirstSandboxOwner
  MsgBox "THINSTALL_SANDBOX_DIR = " & """" & GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & """", VBOKOnly + VBInformation, "ThinApp"
End Function
 
Function OnFirstParentStart
  MsgBox "THINSTALL_SANDBOX_DIR = " & """" & GetEnvironmentVariable("THINSTALL_SANDBOX_DIR") & """", VBOKOnly + VBInformation, "ThinApp"
End Function


Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 19:05 02-11-2016 | Исправлено: romby, 19:08 02-11-2016
coherent

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

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")
SourcePath = Left(Origin, InStrRev(Origin, "\") - 1)
 
SandboxParent = GetBuildOption("SandboxPath")  
SandboxName = GetBuildOption("SandboxName")  
If SandboxParent = "." Then  
   SandboxPath = SourcePath & Chr(92) & SandboxName
Else  
   SandboxPath = SandboxParent & Chr(92) & SandboxName
End If


Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 19:47 02-11-2016 | Исправлено: coherent, 19:48 02-11-2016
Proshaa

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

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 20:38 02-11-2016 | Исправлено: Proshaa, 20:45 02-11-2016
romby



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

Цитата:
не работает только 1й
По картинке видно, что все одиннадцать сработали исправно, а по первым трём – что переменные %Motivate Clock_SANDBOX_DIR% и %THINSTALL_SANDBOX_DIR% не заданы.

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

Спасибо за урок по VBS, я в нём очень слаб. Переписал кодрезультат не изменился. Что ещё я делаю не так?

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 23:10 02-11-2016 | Исправлено: romby, 23:29 02-11-2016
romby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, в шапке вроде бы нет PDF-книги VMware ThinApp 4.7 Essentials от P. Bjork за 2012 год. Упоминалась в теме пару лет назад и благополучно забыта. Почему бы не добавить? К примеру, вот пара магнетов:

Код:
magnet:?xt=urn:btih:9d788f9265d9475161a635d11b3294e531fc988d&tr=udp://tracker.openbittorrent.com:80&tr=udp://open.demonii.com:1337&dn=Packt%20VMware%20ThinApp%204%207%20Essentials%202012%20RETAIL%20eBook%20ELOHiM

Код:
magnet:?xt=urn:btih:97153f19f260c63399c6d1a16c7c092b168921ab&dn=VMware+ThinApp+4.7+Essentials&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Fzer0day.ch%3A1337&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969

Всего записей: 1785 | Зарегистр. 09-02-2006 | Отправлено: 02:31 03-11-2016 | Исправлено: romby, 22:21 03-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
romby
вот честное слово - придумали мне занятие...
отдыхаю я после ударного месяца, так нет ))
ладно. начинаем разборки полётов.
THINSTALL_SANDBOX_DIR - переменная задающая путь к песочнице в рантайме (в процессе исполнения) она и должна быть пустой - что вам, собственно, и показывает скрипт. согласно мануала: если задать эту переменную, все песочницы будут создаваться по указанному там пути. задать её можно двумя путями: прописать в систему - так же, как и все другие переменные окружения, либо скриптом. скрипт тоже можно "включить" двумя путями: при сборке (какой в этом смысл - я хз) или поместив его в папку Program Files/ThinstallPlugins.
в свете озвученной вами задачи - её надо проверять, вдруг она существует у юзера.
также проверяется наличие переменной окружения <sandbox_name>_SANDBOX_DIR.
способы задания - те же.
 
опять же, согласно мануала - ThinApp ищет песочницу в такой последовательности:
  1. <sandbox_name>_SANDBOX_DIR
  2. THINSTALL_SANDBOX_DIR
  3. <exe_directory>\<sandbox_name>.<computer_name>
  4. <exe_directory>\<sandbox_name>
  5. <exe_directory>\Thinstall\<sandbox_name>.<computer_name>
  6. <exe_directory>\Thinstall\<sandbox_name>
  7. <sandbox_path>\<sandbox_name>.<computer_name>
  8. <sandbox_path>\<sandbox_name>
  9. %AppData%\Thinstall\<sandbox_name>.<computer_name>
10. %AppData%\Thinstall\<sandbox_name>
 
первая найденная используется. если ничего не найдено - создаётся новая, согласно Package.ini
 
отсюда у вас должен быть такой же алгоритм поиска песочницы: последовательно проверяем всё и если там пусто - читаем Package.ini
примерно так:

Код:
ThinstallSandboxDir = GetEnvironmentVariable("<sandbox_name>_SANDBOX_DIR")
if ThinstallSandboxDir ="" then
MsgBox "пусто", VBOKOnly + VBInformation, "ThinApp"
else
MsgBox "путь: " & ThinstallSandboxDir , VBOKOnly + VBInformation, "ThinApp"
end if

 
вместо <sandbox_name> подставляете реальное имя песочницы.
и далее - по всем пунктам, подставляя вместо <...> реальные имена.
если "одноразово" - можно вписать руками. для автоматизации:

Код:
tempName = GetBuildOption("SandboxName") + "_SANDBOX_DIR"
ThinstallSandboxDir = GetEnvironmentVariable(tempName)
...

пояснение: для строковых переменных знаки "+" и "&" равнозначны
 
P.S. а в vbs я вовсе не гуру - просто существуют общие правила программирования и это - одно из них. кроме того, что строгое следование ему гарантирует беспроблемность в плане работы программы, написанной на любом языке, гораздо проще разбираться и модифицировать программу, когда она чётко структурирована - даже если пишешь для себя. уж поверьте - это подсказывает мой собственный опыт. когда-то я тоже грешил многоэтажными конструкциями, ведь кажется, что так проще и быстрей. только когда через время пытаешься во всём этом разобраться...
 
P.P.S.чтобы магнет был магнетом, а не непонятно чем - снимите галку "разрешить смайлики" в сообщении.
а книга - не лучше мануала от Astra55. я её просматривал в своё время и ничего нового не нашёл - по сравнению с мануалом

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 22:05 03-11-2016 | Исправлено: Proshaa, 22:08 03-11-2016
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, что не час - то "веселье". Прилюбопытнейший эксперимент у меня получился. Собираю в ThinApp портабельный браузер с подключением к нему плагина флешплеера PPAPI. Дошёл до весьма забавной точки. Плагин флешплеера прекрасно подключается к браузеру и отлично отображается ровно до того момента, как в сборку необходимо добавить vbs-скрипт. Причём любой vbs-скрипт (специально пробовал разные - запуск сторонних файлов при создании песочницы, или, убивание процесса при выходе из программы - не важно). С этого момента портабельный браузер видит флешплагин в настройках, как и прежде, но на веб-страничках пишет что не может загрузить этот плагин - "Couldn't load plug-in".
Это, конечно, весёлый баг, и многое объясняет, НО, как с этим жить и бороться - ума не приложу! Без vbs в сборке я обойтись не могу, равно как и в работе браузера без этого флешплагина.

 
P.S. В самой сборке плагина флешплеера никаких скриптов нет - конфликтовать нечему. Версии ThinApp сборки портабельной программы и плагина одинаковы - 4.7.3 Настройки изоляции (папок, реестра и вообще) портабельной сборки и сборки плагина одинаковы. Результат одинаков на разных системах, хоть х32, хоть х64.
 
P.P.S. Я конечно понимаю, что половина проблем связана с новым, ежанутым до безобразия, PPAPI. Но проблема вылезла именно на использовании VBS в ThinApp. Что тут за загадочный механизм, и какая в этом всём связь - я в тупике. Можно, конечно, рискнуть обойтись без VBS вообще, делая сторонние точки входа для нужных скриптов, но, согласитесь, тот же автоматизированный функционал завершения зависших процессов через VBS весьма удобен. К тому же, может быть, в будущем, придётся подключить к сборке какой-нибудь плагин, собранный с VBS скриптом на борту...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 22:46 12-11-2016 | Исправлено: AVanti473, 23:19 12-11-2016
Proshaa

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
веселье было, когда я пытался применить vbs в одной сборке, а он не хотел запускаться никак. все версии ТА перепробовал - толку ноль.
должен сказать, что сборка проги которая как раз работает с vbs. пораскинув мозгами по стенам - пришёл к выводу, что рыть надо в реестре, в ассоциациях файлов и OLE. просто забил, там скрипт мне не был особо нужен.
очевидно, у вас - подобная ситуация: ТА подключает модуль обработки скриптов и он как-то конфликтует со скриптером браузера. связь прослеживается чётко: сейчас практически нет ни одной страницы без скриптов, правда обычно там ява. но как реализован движок в браузере - хз.
могу напомнить, что при добавлении vbs, в сборку встраивается папка %ProgramFilesDir%\ThinstallPlugins, куда, собственно и попадает сам скрипт. туда же ложится и scripting.dll - имя как бы однозначно намекает ))  
уверен, что и в реестр что-то добавляется. и это "что-то" перенаправляет обработку скриптов на эту dll
самому искать лень, ибо мне не надь.
есть ещё вариант, что в плагине меняется/добавляется изоляция некоторых папок, однако вариант с реестром мне представляется более правдоподобным. кстати - может и в реестре меняется изоляция

Всего записей: 3079 | Зарегистр. 10-01-2011 | Отправлено: 00:35 13-11-2016
AVanti473



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

Цитата:
 ТА подключает модуль обработки скриптов и он как-то конфликтует со скриптером браузера.

 

Цитата:
уверен, что и в реестр что-то добавляется. и это "что-то" перенаправляет обработку скриптов на эту dll

 
Несмотря на то, что в браузерах скрипты обычно на java и jQuery - очень даже логично (ведь реализация самого браузерного движка, при всей открытости его кода, мне, один фиг не понять). Хм, если так, то даже не знаю с какого конца начинать подход...
Первое что приходит на ум - делать ещё две точки входа на два разных (не vbs-ных) скрипта. Первый скрипт вынесет архив библиотеки словарей для правки орфографии в песочницу (ибо этот функционал работает лишь при выносе в реал, и никак иначе), а второй точкой будет скрипт, убивающий основной процесс приложения, в случае его висяка после закрытия портабельной программы (а такие случаи, на разных системах, возникают)... И будет три точки входа. Но это не удобно в варианте, когда сам портабельный браузер будет подключаться плагином, скажем, к менеджеру паролей. И здесь ключевой для меня момент неудобства!...

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 08:52 13-11-2016 | Исправлено: AVanti473, 08:53 13-11-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