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

» VMware ThinApp (formerly Thinstall) 3

Автор: bumburbia
Дата сообщения: 17.02.2015 19:15
coherent
Bla-bla-bla появляется сразу (почти сразу). Дело, наверное, в том, что сборка запускается с помощью лаунчера, который сначала запускает exe'шник, заменяющий рег. данные на новые, а затем саму программу, т.е. запускаешь PROMTProfessional .exe (лаунчер), затем срабатывает Reactivation.exe (обновляет регистрацию) и, наконец, PROMT Professional .exe (сама программа), два первых процесса после срабатывания выгружаются и, скорее всего, на это реагирует наш скрипт, запускаясь и прибивая WINWORD.EXE (если таковой запущен).

Добавлено:
про кавычки
Автор: coherent
Дата сообщения: 17.02.2015 19:34
bumburbia
Ха, мы бы долго еще искали причину, если бы не выяснилось, что сборка не совсем стандартно запускается. Может в этом случае имеет смысл все запускать скриптом, который запустит все в нужном порядке, подождет завершения работы PROMT Professional .exe и тогда запустит скрипт "убиения".
Про кавычки спасибо!
Автор: bumburbia
Дата сообщения: 17.02.2015 20:01
coherent
Поиск причины, по крайней мере для меня, был полезен, узнал что-то новое. А сборку, думаю оставить как есть, просто кто-то будет работать с Word'ом, запустит эту сборку PROMT'а, что-то переведёт, закроет PROMT и хана наработанным в Word'е данным ). В принципе, если не лезть в диспетчер задач, то и не узнаешь об этом подвисшем процессе, ну а кому приспичит, можно завершить вручную.
Иногда зависшие процессы называются explorer.exe или svchost.exe, вот как быть с ними ?
Автор: 007Alex007
Дата сообщения: 18.02.2015 21:11
Кто может подсказать, как переделать скрипт, чтобы он запускался в ThinApp. При запуске упакованной проги появляются ругательства на вторую строку.
Сразу скажу, что Function я прописывал, просто выкладываю чистый скрипт, который нормально срабатывает в win. А вообще скрипт я взял отсюда:Скрипт

Код:
Dim WshShell
arrProcs = Array("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")
Set WshShell = WScript.CreateObject("WScript.Shell")
For i = 0 To Ubound(arrProcs)
intTemp = WshShell.Run("taskkill /f /IM " & arrProcs(i), 0, True)
Next
Автор: coherent
Дата сообщения: 19.02.2015 09:36
007Alex007

Цитата:
При запуске упакованной проги появляются ругательства на вторую строку.

Хорошо бы посмотреть, что за ругательство. Как правило, там прямо указывается какая ошибка.
Наверное, не мешало бы определить массив:

Код: Dim arrProcs
arrProcs = Array("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")
Автор: 007Alex007
Дата сообщения: 19.02.2015 12:02

Цитата:
Хорошо бы посмотреть, что за ругательство


Source: Ошибка выполнения Microsoft VBScript
Description: Требуется объект: 'WScript'
File: (null)
Line 3, Character 0
at:

Line 3 - это та же строка:
arrProcs = Array("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")

пробовал убрать Array, тогда:
Source: Ошибка компиляции Microsoft VBScript
Description: Предполагается наличие ')'
Line 2, Character 26
at: arrProcs = ("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")


Цитата:
повторения удаления для всех 4-х процессов

Не получается вылезает ошибка. Попробовал создать 4 скрипта для каждого процесса, сработало. Но это как то слишком.


Цитата:
использовать массив с добавлением цикла перебора имен процессов

Можно по подробнее, как это сделать?

Автор: coherent
Дата сообщения: 19.02.2015 13:05
007Alex007
Я уже с таким сталкивался. ThinApp почему-то не любит конструкцию wscript.CreateObject. Попробуйте определить WSHShell так:

Код: Set WSHShell = CreateObject("WScript.Shell")
Автор: 007Alex007
Дата сообщения: 19.02.2015 21:48
Спасибо большое за помощь, но к сожалению не работает:
- после замены строки на Set WSHShell = CreateObject("WScript.Shell") скрипт больше не ругается, но создается впечатление, что скрипт, внутри зависших процессов, создает такие же и благополучно их удаляет, а реальные процессы остаются висеть
- использование в скрипте WMI приводит к ошибке
Source: Ошибка выполнения Microsoft VBScript
Description: Требуется объект: 'objWMIService'
File: (null)
Line 6, Character 3
at:
- по поводу твоего скрипта
Цитата:
повторить кусок кода 4 раза для всех процессов
, что то похожее о чем я написал про замену строки.

Я решил пойти другим путем. Идея такая, скрипт arrProcs копируется из портабельной проги в реальную систему, запускается, а после удаляется. В работе участвуют два скрипта:
1 - arrProcs.vbs - будет удалять зависшие процессы, а после выполнения сам удалится
2 - RUN.vbs - который будет копировать первый в реальную систему и запускать его

1-Скрипт arrProcs.vbs:

Код: Dim WshShell
arrProcs = Array("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")
Set WshShell = WScript.CreateObject("WScript.Shell")
For i = 0 To Ubound(arrProcs)
intTemp = WshShell.Run("taskkill /f /IM " & arrProcs(i), 0, True)
Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("C:\arrProcs.vbs")
Автор: coherent
Дата сообщения: 19.02.2015 22:45

Цитата:
- после замены строки на Set WSHShell = CreateObject("WScript.Shell") скрипт больше не ругается, но создается впечатление, что скрипт, внутри зависших процессов, создает такие же и благополучно их удаляет, а реальные процессы остаются висеть

taskkill должен запускаться как внешний процесс. Для этого или задать ChildProcessEnvironmentDefault=External или включить taskkill в исключения ChildProcessEnvironmentExceptions=taskkill.ехе
Автор: 007Alex007
Дата сообщения: 19.02.2015 23:37
coherent
У меня в сборке уже был включен параметр ChildProcessEnvironmentDefault=External, прописал туда еще и ChildProcessEnvironmentExceptions=taskkill.ехе, но все равно не работает.
taskkill.ехе теперь появляется в диспетчере задач, и одновременно с этим появляются новые несколько realplay.exe, которые как мне кажется потом сами без помощи закрываются, а taskkill закрывает только один или два процесса, а остальные причем одни и те же (rndlresolversvc.exe, realsched.exe) продолжают висеть.

Вот если бы в скрипт прописать к taskkill параметр /T (Завершение указанного процесса и всех его дочерних процессов)
вот в эту строку:
intTemp = WshShell.Run("taskkill /f /IM " & arrProcs(i), 0, True)
пробовал так не работает:
intTemp = WshShell.Run("taskkill /f /IM /T" & arrProcs(i), 0, True)
Автор: coherent
Дата сообщения: 20.02.2015 10:02
007Alex007

Цитата:
У меня в сборке уже был включен параметр ChildProcessEnvironmentDefault=External, прописал туда еще и ChildProcessEnvironmentExceptions=taskkill.ехе

При таких параметрах taskkill.ехе будет запускаться в виртуальном контейнере. Исключение подразумевало, что задан параметр ChildProcessEnvironmentDefault=Virtunal в явном или неявном виде и ChildProcessEnvironmentExceptions=taskkill.ехе.

Я когда-то пробовал использовать WshShell.Run и по памяти проблема как раз и была с запуском внешних процессов. Хотя, казалось бы, параметр ChildProcessEnvironmentDefault=External должен бы решать эту задачу. Но видно есть какой-то нюанс, но для этого надо предметно экспериментировать.

Правильно было бы запускать taskkill.ехе через ExecuteExternalProcess. Это точно сработает. Но я так понимаю, не нравится консольное окно. Можно попробовать запуск через hstart.exe, которая скрывает консольное окно. Под рукой нет, но я когда-то в теме выкладывал.
Автор: 007Alex007
Дата сообщения: 20.02.2015 15:13
coherent

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

Да именно так.

Вот как сейчас выглядит скрипт:

Код: Function OnFirstParentExit
Dim WshShell
Dim arrProcs
arrProcs = Array("realplay.exe", "rndlresolversvc.exe", "realsched.exe", "RealUpgrade.exe")
Set WshShell = CreateObject("WScript.Shell")
For i = 0 To Ubound(arrProcs)
intTemp = WshShell.Run("taskkill /f /IM " & arrProcs(i), 0, True)
Next
End Function
Автор: coherent
Дата сообщения: 20.02.2015 15:38
007Alex007

Цитата:
как скопировать arrProcs.vbs из папки проекта %Personal% в папку песочницы и там его запустить.

А зачем именно в папку песочницы? Вынести рядом с исполняемым ехе-файлом сборки и там запускать. Тем более, что он потом удаляется.
Автор: 007Alex007
Дата сообщения: 20.02.2015 16:39
coherent

Цитата:
Вынести рядом с исполняемым ехе-файлом сборки

Прошу прощения, но я не понял о чем речь.
Если имеется ввиду положить файл в одну из папок проекта %ProgramFilesDir%\Real\RealPlayer\realplay.exe, то там у меня DirectoryIsolationMode=Full, боюсь даже представить, что прога (именно эта прога) наворотит в реальной системе после запуска, если поставить DirectoryIsolationMode=Merged.
И кроме того, я же написал:

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

Поэтому и спрашиваю:

Цитата:
как скопировать arrProcs.vbs из папки проекта %Personal% в папку песочницы и там его запустить


Автор: coherent
Дата сообщения: 20.02.2015 18:50
007Alex007

Цитата:
Прошу прощения, но я не понял о чем речь.

Вынести скрипт в реальную систему, рядом с исполняемым ехе-файлом портативной сборки!
Песочница - дело хитрое. Когда в теме решали "хотелку" выноса файлов в песочницу. Там свои проблемы.
ps. Если полистать тему, то можно найти много готовых решений.
Автор: oshizelly
Дата сообщения: 27.02.2015 12:46
Подскажите, может ли сабж решить такую проблему.
Есть две машины. На одной в Региональных настройках в качестве Language for non-Unicode programs стоит Russian. На другой - German.

Можно ли сделать так, чтобы портабельная сборка, собранная на одной из этих машин и затем запущенная на второй, вела себя в соответствии с Language for non-Unicode programs на исходной машине, а не на реальной хостовой?

Не знаю, сумел ли внятно объяснить, чего хочу. Если нет, скажите, постараюсь объяснить дополнительно.

Спасибо!
Автор: regist123
Дата сообщения: 01.03.2015 18:15
oshizelly
зависит от того, где программа берёт эту информацию. Если просто проверяет ключ в реестре, то можно. А если через WinAPI то нет.
Автор: oshizelly
Дата сообщения: 01.03.2015 19:46
regist123 18:15 01-03-2015
Цитата:
зависит от того, где программа берёт эту информацию. Если просто проверяет ключ в реестре, то можно. А если через WinAPI то нет.

К сожалению, не знаю, какой способ проверки используется для считывания данных настройки Language for non-Unicode programs из Региональных настроек. А как это можно выяснить?
Автор: AngelNet
Дата сообщения: 05.03.2015 19:42
доброе время суток, уважаемые камрады!
хочу углубиться в изучение сабжа и для начала кое что собрать под свои нужды.

вопрос: есть инсталятор софтины, уже пролеченый, русифицированный.
как лучше сделать, расковырять его потроха и уже потом собрать в ThinApp или сделать его установку с захватом, а уже потом пытаться вычистить ненужное пабло-командером?
(планируется использовать ThinApp 5)

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

заранее благодарю!
Автор: AVanti473
Дата сообщения: 05.03.2015 20:21
AngelNet

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


Второй вариант. В принципе, можно сначала и расковырять, но всё равно захват делать придётся, хотя бы для того, чтобы данные изменений реального реестра конвертировались в ветки виртуального.
К тому же, софтина при захвате начнёт работу и создаст в ОС необходимые папки, которым ThinApp предложит вариант изоляции относительно базовых настроек захвата. Если это проигнорировать, то, новые, неучтённые захватом папки могут оказаться в целевой системе.


Цитата:
софтину нужно максимально отгородить от вмешательства в хостовую ОС


При любой изоляции, в принципе, софтина и так огорожена от вмешательства в ОС. Вопрос лишь в том, куда ещё софтина не должна будет совать свои следы пребывания, а здесь универсального шаблонного подхода нет. Можно выставить изначальную дефолтную изоляцию WriteCopy, но, тогда есть риск, что результаты работы программы так же будут сохранятся в песочнице. Другими словами, тогда нужно идти по иному методу "от обратного" и править файлы ##Attributes.ini в каждой интересуемой папке проекта. Так же, придётся подумать о том, что некоторые интересуемые недостающие папки с файлами ##Attributes.ini придётся создать, чтобы всё работало как надо.
Можно оставить дефолтную изоляцию проекта Merged, но тогда будут защищены исключительно системные папки, а всё остальное доступно для записи, включая общие папки и места на компе (включая системный диск). К тому же, есть разность в работе софта на различных осях. В Win7, к примеру, по дефолту не защищается папка Documents and Settings, так как считается, что к ней нет прямого доступа юзера. Этот доступ заменён папкой Users... Вообще деталей много, особенно если рассматривать архитектуры или самые новые варианты ОС, где установленную софтину даже нельзя штатно сделать программой "по умолчанию". Стоит изучить и углубиться в параметры Package.ini самой будущей сборки, так как собираемый софт, прежде всего, должен хотя бы запускаться и выполнять задачи без аварийного завершения. Ну, и, к слову, выгружаться тоже должен без проблем.
Автор: regist123
Дата сообщения: 05.03.2015 22:35
AngelNet
не хочу обидеть, но прочтите сначала FAQ по созданию портативок от Astra55. Тогда подобных вопросов у вас возникать не будет.
Автор: AngelNet
Дата сообщения: 06.03.2015 14:50
regist123
читал, но хотелось бы услышать и мнения сборщиков, плюсы и минусы, чтобы так сказать всё обдумать и взвесить.
в любом случае спасибо за совет, обновил версию FAQ-а себе.
Автор: 007Alex007
Дата сообщения: 06.03.2015 22:25
coherent
Прошу прощения, что так долго не отвечал и хочу сразу поблагодарить за оказанную помощь. «Хотелка» очень интересная штука, но не помогла при копировании arrProcs.vbs в песочницу или рядом с запускаемым EXE, при запуске скрипта происходит тоже самое, о чем я писал ранее.
Возможно, с моим скриптом так ничего толкового не вышло, но зато благодаря его исследованию я узнал много нового для себя, в частности создания скриптов. Вот хочу для всех, поделиться не которыми скриптами:

1.    Отличный скрипт для удаления зависших процессов, работает без консольных окон. Скрипт найден на этом форуме, я лишь добавил в него параметр «0», чтобы при его работе не было видно консольных окон:

Код: Function OnFirstParentExit
Dim WshShell
set WshShell = CreateObject("WScript.Shell")
WshShell.run "taskkill /F /IM realplay.exe /IM rndlresolversvc.exe /IM realsched.exe /IM RealUpgrade.exe /T",0
End Function
Автор: AngelNet
Дата сообщения: 07.03.2015 16:01
007Alex007

Цитата:
в шапке до сих пор красуется версия ThinApp 5.0.1, а не 5.1

FIXED.

и спс за советы и мануал от pavlaf.

p.s. картинку для лого в шапке не нашёл официальную ибо без понятия какая она раньше там была.
кто имеет об этом представление - добавьте пожалуйста.
Автор: AVanti473
Дата сообщения: 07.03.2015 16:39
AngelNet

Цитата:
p.s. картинку для лого в шапке не нашёл официальную ибо без понятия какая она раньше там была.


А зачем надо было фиксить? Ну да ладно, у каждого свои дела. Вот картинка:

Автор: regist123
Дата сообщения: 07.03.2015 17:07
Добавлю, что у pavlaf было ещё оформленное в CHM FAQ от Astra55. В шапке его вроде не видно, а CHM имхо удобней.
Автор: AngelNet
Дата сообщения: 07.03.2015 19:37
AVanti473
я не трогал старую ссылку на картинку в шапке. лишь обновил версию и билд (цифры) и изменил ссылку на описание с релизом.
(видимо радикал, куда загружена шапочная картинка глючило в какой то момент и он не отдал изображение. сейчас я вижу пикчу в шапке).
---
regist123
просто PDF перегнаный в CHM или есть какие то отличия?
Автор: 007Alex007
Дата сообщения: 07.03.2015 19:45
AVanti473

Цитата:
А зачем надо было фиксить?

Надо идти в ногу со временем
Автор: AVanti473
Дата сообщения: 07.03.2015 21:13
AngelNet

Цитата:
я не трогал старую ссылку на картинку в шапке. лишь обновил версию и билд


007Alex007

Цитата:
Надо идти в ногу со временем


Да ладно вам друзья ))) Было бы из-за чего. ))) Ну пусть будет что я не прав - это же не принципиально )))) Учитывая особенности различных версий ThinApp, они все актуальны по своему.
Кто-то собирает в 4.0.4, кто-то предпочитает линейку 4.6, кто-то уверен что последняя исключительно для (х86) 4.7.3 лучше новых, кто-то нашёл баги в 5.0.1, а кто-то уверен, что последняя 5.1 именно та, с которой стоит начинать. На самом деле здесь всё субъективно, да и мануалы последнего релиза имеют отличия и дополнения. Благо pavlaf проделал колоссальнейшую работу, чтобы нас с этим познакомить. Да и то, благодаря чистому интузиазму многих присутствующих.
Иными словами, я бы советовал начать обзор не с исторического FAQ, а именно с мануала, да ещё с той его части, где сопоставляются папки реальной системы с папками проекта. На первый взгляд там ничего сложного, но, именно здесь кроется первый ключ. Дальше, неплохо было бы рассмотреть различия проектов сделанных в версии 4.7.3 и проектов в последней 5.1. Только после этой визуальной оценки переходить к пониманию изоляции и отдельно файлов ##Attributes.ini Сразу после этого прикоснуться к изучению параметров Package.ini И собирать, собирать и ещё раз собирать разные программки. Умение придёт со временем, а когда придёт, можно познакомиться и с полезными скриптами!
Не знаю почему это пишу, никого не учу, просто настроение хорошее!
Автор: oshizelly
Дата сообщения: 08.03.2015 13:08
На мой вопрос недельной давности так никто и не ответит?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149

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


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