Ru-Board.club
← Вернуться в раздел «Программы»

» VMware ThinApp (formerly Thinstall) 3

Автор: NickOnToluca
Дата сообщения: 22.06.2011 21:19
MaLiVer
Скачай из шапки варезника.
Автор: coherent
Дата сообщения: 23.06.2011 10:17
Astra55
Как оказалось, проблема была связана с виртуальными ассоциациями. Удалил все записи из реестра, отключил в настройках автоопределение ассоциаций, пересобрал с новым settings.dat и все стало ОК. Проверил на нескольких компах.
Автор: ice99
Дата сообщения: 25.06.2011 11:15
Подскажите АЛГОРИТМ отладки собранных приложений в thinapp.
----Два первых шага таковы
1. Сборка с режимом Writecopy (по умолчанию), песочница рядом.
2. Запуск билда, "ошибка запуска".
3. ??????
4.-------

т.е. если приложение (любое) при запуске вылетает с ошибкой, то.
какой алгоритм максимально быстрой локализации проблемы.
Например, если компьютер "болеет", то чтобы локализовать проблему, сначала нужно например понять глобальные вещи "железо глючит или софт", загружаемся с загрузочной флешки, либо ставим чистую систему. Если всё нормально, то глючит софт. Последовательно ставим драйвера, находим "слабое звено", и т.д. в общем, кто знает, тот поймёт.
Если проблема "железная", то "сбрасываем биос на дефолт", "вытаскиваем из матери всё кроме минимального набора ,позволяющего загрузиться", "добавляем по одной плате", смотрим на реакцию, и т.д.

Я описал вкратце 99% универсальный алгоритм БЫСТРОЙ ЛОКАЛИЗАЦИИ проблемы. Когда проблема найдена, тогда уже садимся за детальные исследования.


Интересует схожий алгоритм и по thinapp. Какие утилиты использовать? regmon,filemon, processviewer, и тд.

У кого какие способы?
Автор: ivanivanovivan
Дата сообщения: 02.07.2011 20:41
ice99 Вы не забывайте о виртуальном и реальном реестре при использовании "regmon,filemon, processviewer, и тд.", ThinApp Log Monitor предусмотрена разработчиком для отладки, а из своего опыта могу сказать, если прога не портируется (при соблюдении всех требований, например: когда то портировал 1С, программа не собиралась, мозг разнёс почему, а оказалось в названии 1С:Предпр.. двоеточие всему проблема) то и не соберётся, альтернатива ксенокод или новый спун, но они гадят в реестр, думаю буду прав если скажу, что основная проблема при портировании - варезный софт, арадилы, темиды и прочее гавно унылое
Автор: Gideon_Vi
Дата сообщения: 09.07.2011 03:08

Цитата:
Start-Apps 1.0.0.1 by vyachko

обновите ссылку, пожалуйста

Цитата:
http://www.megaupload.com/?d=EKW581E5

спасибо
Автор: opt_step
Дата сообщения: 09.07.2011 03:35
Gideon_Vi

Цитата:
Start-Apps 1.0.0.1 by vyachko

обновите ссылку, пожалуйста

http://www.megaupload.com/?d=EKW581E5
Автор: Animatmos
Дата сообщения: 10.07.2011 12:21
Подскажите, можно ли сделать портативной игру, использующую Steam, средствами ThinApp?
Автор: VidelSamogO
Дата сообщения: 19.07.2011 00:23
Astra55
Вы хотите сказать, что он имеет английский интерфейс?
Автор: opt_step
Дата сообщения: 19.07.2011 03:05
Animatmos
можно, но из портейбл можно будет вытащить вашу регу
Автор: FeoNik
Дата сообщения: 21.07.2011 13:07
Удалено.

Перенес в
http://forum.ru-board.com/topic.cgi?forum=5&topic=19667&start=740#20
Автор: coherent
Дата сообщения: 29.07.2011 17:33
Друзья!
Растолкуйте, пожалуйста, кто-нибудь ньюансы опции:
VirtualDrives=Drive=c, Serial=fc20cd23, Type=FIXED
Конкретно интересует ситуация, когда сборка предназначена для работы на компьютере, где диск С - системный и имеется реально в наличии. Когда использовать эту опцию, а когда нет ?
Автор: Astra55
Дата сообщения: 29.07.2011 18:10
coherent
Эта и следующая строчка - частичная эмуляция системы.

Цитата:
Когда использовать эту опцию, а когда нет ?

Когда эмуляция нужна, тогда и использовать.
Автор: coherent
Дата сообщения: 29.07.2011 19:08
Astra55
Краткость - сестра таланта!

Цитата:
Когда эмуляция нужна, тогда и использовать.

Именно в этом месте хотелось бы подробней. Понимаю, что бывают случаи, когда система установлена не на диске С (даже видел такое), а для нормальной работы сборки требуется, чтобы система была именно на диске С, и это достигается опцией "VirtualDrives=Drive=c, ...". А если, повторюсь, сборка предназначена для работы на компьютере, где диск С - системный и имеется реально в наличии, то нужна ли в этом случае эмуляция системы и когда? Если можно, пример! Чувствую чего-то не хватает для полного понимания.
Автор: Astra55
Дата сообщения: 29.07.2011 20:07
coherent
ThinApp не перекидывает буквы дисков, поэтому, если софт устанавливался на С:, то при системе на D:, изменить это невозможно, пути уже прописаны в контейнере. Разговор идет об эмуляции ID диска и имени юзера.
Автор: coherent
Дата сообщения: 29.07.2011 21:21
Astra55

Цитата:
Разговор идет об эмуляции ID диска и имени юзера.

Похоже теперь понял! При выставленной опции программа будет видеть реальную структуру диска С компа, где она запущена, но в плане ID диска и имени юзера будет считать, что это тот диск С на котором она собиралась. Если регистрация программы зависит от ID диска, а опцию не задать, то при запуске на другом диске потребуется повторная регистрация.
Автор: NickOnToluca
Дата сообщения: 29.07.2011 21:26
Что-то давно не обновляли...
Автор: KloneBADGuY
Дата сообщения: 30.07.2011 20:51
Добрый вечер. Подсобите советом. Нужно реализовать
проверку "первого запуска" программы.

Сделал через vbs-скрипт, код рабочий, но вот как связать с песочницей,
никак не могу разобраться. Не удалось понять, какую папку скрипт считает
root-директорией. Хотел сделать проверку на присутствие самой песочницы
- не вышло. Через реестр - тоже. Как заставить скрипт прочитать/записать
в реестр песочницы?

P.S. И еще, нужно ли включать в проект папку ThinstallPlugins
с scripting.dll или это для старых версий [использую последнюю]?
Автор: megauser123
Дата сообщения: 30.07.2011 21:35
KloneBADGuY
Например, через реестр. делаешь в виртуальном реестре запись FirstStart=1, затем, при первом старте ставишь FirstStart=0. Если песочницу удаляют, FirstStart снова вернется в 0, и скрипт сработает. Что и требуется.

А вот как определить местоположение песочницы, если оно не задано явно в BuildOptions, я и сам хотел бы знать. Если мне память не изменяет, простых способов нет.


Цитата:
нужно ли включать в проект папку ThinstallPlugins
с scripting.dll
не нужно.
Автор: KloneBADGuY
Дата сообщения: 30.07.2011 22:11
megauser123

Цитата:
Например, через реестр. делаешь в виртуальном реестре запись FirstStart=1, затем, при первом старте ставишь FirstStart=0. Если песочницу удаляют, FirstStart снова вернется в 0, и скрипт сработает. Что и требуется.

Так это, я же написал, что скрипт у меня готов.

Я внес запись в HKEY_LOCAL_MACHINE.txt, но скрипт эту запись не видит.

Не получается взаимодействовать с вирт. реестром. Как правильно
нужно записать скрипт в vbs? Возможно, я что не так делаю.
Автор: megauser123
Дата сообщения: 30.07.2011 23:38
KloneBADGuY
Выложи скрипт и внесенную запись (под хайд, либо в пм), давай посмотрим.
Автор: KloneBADGuY
Дата сообщения: 31.07.2011 00:54
megauser123 Подробности внутри #


p.s. Попробовав VMWare ThinApp, я начал понимать, почему,
многие, предпочитаю более прозрачный portableapps-формат =.=
Автор: megauser123
Дата сообщения: 31.07.2011 01:19
WMI плохо виртуализируется, можно сказать, вообще никак.

Поэтому правильно так:
[more=>>>]

Код: Option Explicit
Function OnFirstSandboxOwner
Dim oShell
Set oShell = CreateObject("WScript.Shell")
If oShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Program\PortWarnMessage") = "Hide" Then
MsgBox "Используя портативную версию платной программы, Вы тем" & Chr(13) & "самым подтверждаете наличие у Вас купленной лицензии!", vbInformation, "ВНИМАНИЕ!"
oShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Program\PortWarnMessage", "Show=)", "REG_SZ"
End If
End Function
Автор: KloneBADGuY
Дата сообщения: 31.07.2011 04:44
megauser123,

Цитата:
Поэтому правильно так:...

Теперь работает, спасибо за подсказку.
Я так понимаю Option Explicit помогло?


Цитата:
...Кстати, исходное значение ключа надо бы установить в Show, а то путаница получается. Типа, 1 - ложь, 0 - истина...

Да это просто черновик был, я искал решение.
Уже все упорядочил. Кстати, поправь в коде
"Show=)" чтобы другие не путались.


Цитата:
...Будущее за песочницами...

Бесспорно, я такого-же мнения. Песочницы круче PortableAppz
- это не обсуждается. Я просто хотел сказать, что нынешний
инструментарий - это довольно громоздко и через ж. Чтобы
реализовать элементарные функции - приходится извращаться.
И то, не факт, что получиться. Все-же, некоторые PortableAppz
портативки использую с удовольствием. Я говорю, про те, что
собраны не криво-лапым медведем.
Автор: Astra55
Дата сообщения: 31.07.2011 10:24
Глупые советы портабелизаторам

Поскольку появляется все больше и больше сборок, авторы которых научились нажимать несколько кнопок в ThinApp и запускать build.bat, при этом не утруждая себя изучением документации и чтением топика по ThinApp (Thinstall), поскольку первый на английском, а во втором слишкам многа букаф, предлагаются кое-какие советы. Дабы не быть при этом обвиненным в высокомерии, уничижении и прочих грехах, советы названы глупыми. Можете спокойно их проигнорировать и продолжать делать сборки на свой лад.

0. Если вы не знакомы с принципами работы системы Windows в целом, и ее реестра в частности, то постигнуть некоторые моменты работы портабельных сборок будет очень трудно или даже невозможно.

1. Изоляция папок в проекте - один из самых хитрых моментов. Дать рекомендации по каждой папке проекта практически невозможно, поэтому только краткие принципы.
Включать ли вообще ту или иную папку в проект, а если включать, то какой тип изоляции ставить, зависит исключительно от функционала программы. Всегда будут два полюса - либо нужные файлы/папки в процессе работы сборки окажутся в песочнице вместо реальной системы, либо окажутся в реальной системе вместо песочницы, когда они там не нужны. Если программа не создает никаких служебных папок и файлов (именно служебных, то есть, своих собственных), то можно удалить из проекта все папки, кроме тех, что реально использовала программа в момент запуска, при создании проекта. Определить будет ли она создавать что либо для себя самой, можно только работая с ней достаточно долго. Грубо говоря, нужно пройтись по всем фунциям и не по одному разу, чтобы сделать далеко идущие выводы. Обычно этого не случается, по вполне объективным причинам.

Но некоторые принципы действуют для всех случаев, а именно:
- Всегда удаляйте файл ##Attributes.ini (WriteCopy), который лежит сразу же в %ProgramFilesDir%. Почему и зачем? Если оставить этот файл, то все содержимое виртуальной папки Program Files будет всегда в виртуале. К чему это приведет? Если сборке будет нужно создать файл или папку внутри реальной директории Program Files, то вместо реала созданные объекты окажутся в песочнице, ведь там установлена изоляция WriteCopy. Другой пример - если одна сборка обращается к другой сборке, скажем, конвертер pdf вызывает для просмотра pdf файла портабельный Adobe Reader, находящийся в Program Files, то опять таки, изоляция приведет к помещению копии Reader в песочницу. Вот из-за таких моментов и не нужно изолировать %ProgramFilesDir%, пусть она всегда будет в реальной системе. Придумать ситуацию, когда от подобной изоляции будет польза, я не могу, за исключением крайне редких случаев. Само собой, что на папки портабелизируемой программы, находящиеся внутри %ProgramFilesDir%, это правило не действует, там другие законы.

2. Удаляйте из проекта все папки с временным или бесполезным содержанием, как минимум, следующие:
Support
---------------
Эта папка вообще не имеет отношения к сборке, и содержит всякую интимную информацию о вашем компе, удалить обязательно.
---------------
%Desktop%
%Common Desktop%
%Programs%

---------------
Ярлыков в реальной системе сборки не создают, поэтому эти папки не имеют смысла
---------------
%Cookies%
%History%
%Internet Cache%
%TEMP%

---------------
Эти папки по сути своей - помойки, содержащие всякий хлам. Если хлам окажется в реальной системе, то чистить его проще и легче, нежели в песочнице. Для помоек в реальной системе не играет никакой роли, больше будет хлама или меньше, поэтому развозить его на две кучи не нужно.
---------------
%SendTo%
%Startup%

---------------
Опять таки, для портабельной сборки эти папки не имеют смысла в виртуале, они есть в реальной системе.

Разумеется, нельзя воспринимать это как догму, может вы захотите создать браузер с полной изоляцией от реальных директорий или же захотите, чтобы в Temp реальной системы ничего не попадало. Но за исключением экзотики, можете смело исключать вышеуказанные папки из проекта, никакой сермяжной правды они не содержат и ни на что не влияют. Учтите, если их не удалять, то в момент сборки в этих папках окажется содержимое из вашего собственного компа, где могут быть очень любопытные вещи, не предназначенные для чужих глаз.

2. Рассмотрим основной файл проекта Package.ini, где содержатся все настройки будущей сборки:
[Compression]
CompressionType=Fast
-----------
Если программа на сотни мегабайт, с сотнями или тысячами файлов, то для первого запуска на предмет определения - а будет ли софт вообще работать в виде портабельной сборки? - смело ставьте CompressionType=None, иначе сжатие экзешника может занять много времени и будет обидно его расходовать зря, если сборка не заработает как нужно. Если есть уверенность, что сборка нормально работает, тогда можно сменить на Fast, времени будет уже не жалко. С другой стороны, тяжелые в запуске и сложные софты зачастую нет смысла сжимать, проще максимально сжать готовую сборку с помощью 7Z для размещения на файлообменниках.

OptimizeFor=Disk - эта строчка должна быть практически всегда, иначе сборка распухнет и будет много больше исходного размера всех файлов, входящих в нее. Широко используется недобросовестными сборщиками для раздувания размеров, чтобы заработать на платных файлообменниках. Дополнительно такая сборка пакуется RAR с нулевым сжатием.

[Isolation]
DirectoryIsolationMode=Merged
RegistryIsolationMode=Merged - добавьте эту строчку в случае, если необходимо дать сборке доступ к реальному реестру. Кстати, некоторые глубоко убеждены, что портабельные сборки ThinApp в принципе не могут работать с реальным реестром. Это убеждение вытекает из-за нежелания читать, поскольку опция давно документирована в мануалах ThinApp.

[BuildOptions]
CachePath=<sandbox_path>
-------------
Добавьте эту строчку, чтобы кэш сборки всегда находился в песочнице.

ChildProcessEnvironmentDefault=External
-------------
Добавьте эту строчку, чтобы дочерние процессы всегда исполнялись вне контейнера. Дочерний процесс может быть запущен как из контейнера ThinApp, так и из реальной системы. В противном случае, дочерний процесс может либо вообще не запуститься, либо окажется в песочнице.

SandboxPath=.
-------------
Путь к песочнице. Если путь заменен на точку, как показано выше, то песочница будет создана рядом с основным экзешником сборки. Если эту строчку не включать в проект, то песочница будет создана по дефолтному пути c:\Documents and Settings\user_name\Application Data\Thinstall\. При создании папки Thinstall рядом с основным экзешником сборки, песочница будет находиться там. Причем, в этом случае, папка Thinstall будет иметь приоритет перед любыми другими вариантами, включая SandboxPath=.

ExternalDLLs=
-------------
Добавьте эту строчку с именами dll (если их несколько, то через ";"), которые необходимо выносить в реальную систему, на самом деле - в песочницу. Многие программы при портабелизации вообще не будут работать, например, с мышкой, если dll будет в изолированном контейнере. Примеры таких программ - Punto Switcher, HyperSnap и другие. Какие именно dll нужно выносить, сказать невозможно, для каждой программы они будут свои.

;RemoveSandboxOnExit=1
------------
Удалите ";", если необходимо очищать содержимое песочницы при выходе из портабельной программы. Хорошее средство продлить триал некоторых программ.

OptionalAppLinks=plugins\*.exe
------------
Эта строчка должна быть ВСЕГДА (за редчайшими исключениями), поскольку разрешает работу с внешними плагинами AppLinks. К чему приведет ее отсутствие или добавка ";" в начале строчки? Например, некто собрал портабельный софт, и либо по незнанию, либо по недомыслию, не включил в сборку те или иные компоненты, скажем, VC++ или .NET, или еще что-то. Устранить подобные косяки в случае если опция OptionalAppLinks работает, не представляет труда. Достаточно включить недостающие dll-ки в ThinApp плагин и разместить его рядом с экзешником в папке Plugins. Если же эта строчка закомментирована или отсутствует, то придется переделывать всю сборку заново. То же самое касается всех программ, использующих плагины, русификаторы и т.д. Вместо сборки двух вариантов - русского и английского, достаточно собрать один, а дополнительный язык (языки) подключать плагином.

;VirtualDrives=Drive=c, Serial=12345678, Type=FIXED
;VirtualComputerName=MyComp

Эти две строчки частично эмулируют систему, на которой собиралась портабельная сборка. Эмулируется ID дисков, в данном случае C:, и имя компьютера. Используется в случаях привязки программ к указанным параметрам. Для более сложных случаев привязки работать не будет.

3. Если вы используете для снапшотов новые версии ThinApp, ни в коем случае не оставляйте включенной опцию Send anonymous usage statistics to VMware! Это приведет к добавлению к сборке и последующему запуску хитрого экзешника, а его действия очень похожи на троянца. Лучше всего пользоваться для снапшотов старой версией 4.0.0.2200, добавляя в случае необходимости дополнительные опции в Package.ini, благо, различия небольшие. Зато нет нужны отмечать кучу опций во время создания снапшотов и нет риска, что указанная выше опция будет ненароком включена.

Да, можно сказать, что изложены банальные вещи, давно известные всем. Но судя по количеству кривых и косых портабельных сборок, их авторы явно не входят в число "всех, кому это известно".

Обсуждения и дополнения этого текста всячески приветствуются.
Автор: megauser123
Дата сообщения: 31.07.2011 11:42
KloneBADGuY

Цитата:
Я так понимаю Option Explicit помогло?

Помогло не-использование wmi. Option Explicit - просто правило хорошего тона и некоторая защита от очепяток в скриптах.

Astra55

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

Цитата:
Удаляйте из проекта все папки с временным или бесполезным содержанием, как минимум, следующие:
%Programs%
%SendTo%
%Startup%

Эти папки лучше не удалять. Дело в том, что программы любят заниматься самодеятельностью, и восстанавливать удаленные из меню пуск и автозагрузки ярлыки. Следовательно, если удалить указанные папки, то портативная программа, не найдя свои ярлыки, создаст их заново в реальной автозагрузке и меню пуск, вместо песочницы. И на каждом новом компьютере будет создавать их снова и снова. Естественно, такой мусор нельзя допускать. Поэтому эти папки, в общем случае, лучше не удалять.

Цитата:
RegistryIsolationMode=Merged - добавьте эту строчку в случае, если необходимо дать сборке доступ к реальному реестру.
Важно понимать, что необходимо иметь доступ к реальному реестру только программам, которые работают с этим реестром. Т.е. продвинутым редакторам реестра, оптимизаторам реестра и им подобным. Для всех остальных включать эту опцию настоятельно НЕ рекомендуется. Это достаточно опасная опция, которая может привести к непредсказуемым последствиям!

Например, в программе есть плагины, которые подключаются только по запросу. При этом, для своей работы они используют свой отдельный раздел реестра. Т.е. новый раздел реестра создается только при обращении к этому плагину. Тогда, если поставить Merged-изоляцию на весь реестр целиком, новый раздел появится в реальной системе, со всеми вытекающими последствиями. Еще пример - регистрация com-библиотек, фильтров аудио-видео и т.п. - есть случаи, когда регистрация так же происходит во время работы программы, по запросу. В этой ситуации портативка опять наделает мусора в реестре, сделав записи о несуществующей библиотеке. Еще пример - окончание триала, когда пометка об этом делается в совершенно неожиданных местах (обычно, в clsid)

Как видно, риск получить мусор в реестре при использовании параметра RegistryIsolationMode=Merged достаточно велик. Именно поэтому его использование - не рекомендуется!

Как же быть, если нужно, чтобы портативка могла делать записи в конкретные ключи реального реестра? Очень просто! Достаточно изменить уровень изоляции ключа виртуального реестра в файле реестра, например, с isolation_full на isolation_merged. Всё.
Автор: Astra55
Дата сообщения: 31.07.2011 11:44

Цитата:
Можете спокойно их проигнорировать и продолжать делать сборки на свой лад.

Автор: sasherb
Дата сообщения: 31.07.2011 14:22
Astra55
Может сделаете небольшой мануал как делать правильные сборки,опишите что где чего прописать,какие параметры пользовать,пару примеров и тд.Так сказать для нас нубов инструкция.В шапке все старье с очень поверхносным описанием.
Автор: claim35
Дата сообщения: 31.07.2011 14:41
sasherb
Взгляды Astra55 весьма спорные, например предложение всегда указывать ChildProcessEnvironmentDefault=External
уменьшает безопасность для браузеров, которые составляют значительную часть портабелизируемых программ, другие будут плохо совместимы с Windows 7 (прежде всего с UAC) также большая разница делаете сборку для распространения или для себя, так что лучший вариант официальный мануал, довольно неплохой, плюс думать самостоятельно.

Автор: KloneBADGuY
Дата сообщения: 31.07.2011 15:45
megauser123,
Цитата:
Помогло не-использование wmi. Option Explicit - просто правило хорошего тона и некоторая защита от очепяток в скриптах.

Просто, я с vbscript'ом знаком весьма отдаленно =]~

Astra55, начинающим очень поможет, подчеркнул для себя пару советов. Но,
бесспорно, для каждой отдельно программы, нужен исключительно свой подход.
Автор: Astra55
Дата сообщения: 31.07.2011 16:50
claim35
Прочтите нулевой пункт - никакие советы и инструкции не заменяют знаний. Нельзя тупо тыкать в кнопки, необходимость думать никто не отменял.

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

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

Цитата:
нужен исключительно свой подход

Совершенно верно! Нужно усвоить некие базовые принципы, а над остальным размышлять в зависимости от.
sasherb
Когда-то начал ваять мануал, но не закончил по кое-каким личным причинам. Вот результат, но еще раз повторяю - это не законченный вариант, только половина, если не треть - http://narod.ru/disk/20510054001/FAQ_ThinApp_project_1.0.pdf.html

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149

Предыдущая тема: Проблемы с закачкой


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.