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

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

   

AVanti473



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

Цитата:
ни какие переведенные на русский руководства это не исправят

 
для справки

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 13:51 27-05-2014 | Исправлено: AVanti473, 14:02 27-05-2014
coherent

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

Цитата:
для справки

Не смотрел и, если честно, то смотреть не буду. Потому что мне это неинтересно и не нужно. Без обид.
А если предметно, тот факт, что человек прочитал/посмотрел, пусть даже на русском языке, совершенно не означает, что он что-то извлек. Установленный факт. Не хочу переходить на личности, поэтому приводить примеры не буду.
Касательно захламления топика, я в свое время (и уверен не я один) прочитал все части темы. Не поиском чего-то конкретного в версии для печати, а от и до. И почерпнул для себя много полезного. Теперь поставьте себя на место такого человека. Сколько ему нужно будет перелопатить совершенно ненужной информации на тему перевода и все, что с ним связано?
Казалось бы, хочет человек перевести - переведи и выложи. И все дела! Что еще обсуждать? Черный верх, белый низ или белый верх, черный низ?
 

Всего записей: 3885 | Зарегистр. 20-02-2007 | Отправлено: 14:39 27-05-2014 | Исправлено: coherent, 14:41 27-05-2014
dandvd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По поводу перевода мануала, есть отличный ресурс, именно для этого и предназначенный. http://notabenoid.com/

Всего записей: 640 | Зарегистр. 26-02-2008 | Отправлено: 16:00 27-05-2014
AVanti473



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

Цитата:
есть отличный ресурс

 
dandvd наверное отличный, но дело то всё в том, что переводить должен человек, хотя бы имевший дело с ThinApp. Было бы всё так просто, давно бы уже всё перевели. Хотя, за идею спасибо, глядишь и пригодиться даже в этом деле...!

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 18:48 27-05-2014
distortion



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не, ну право... уже страницу накатали ерунды всякой. все знания уже давно формализованы, нужные ссылки в шапке.

Всего записей: 3708 | Зарегистр. 07-04-2001 | Отправлено: 19:30 27-05-2014
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтобы прекратить тут посты не по теме создал отдельную тему для обсуждения перевода: VMware ThinApp - обсуждение перевода.
Все дальнейшие посты с обсуждением форматов справки сервисов, кому что переводить предлагаю там.

Всего записей: 7200 | Зарегистр. 20-03-2009 | Отправлено: 19:42 27-05-2014
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Может и в шапку это добавить? А то что-то мне подсказывает, что просто так эта "актуальная" тема здесь не иссякнет и через пост-другой все начнется по-новой.

Всего записей: 3885 | Зарегистр. 20-02-2007 | Отправлено: 20:03 27-05-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кому не влом, можете помочь с одной задачкой?
 
Значится при старте сборки надо добавить ключи в реальный реестр, а при завершении её работы надо, чтобы ключи удалялись.
 
Своим "худым" мозгом я понял только что для первой части задания можно использовать скрипт типа:

Код:
Function OnFirstParentStart
ExecuteVirtualProcess "regedit /s C:\tmp\install.reg"
End Function

С содержимым файла install.reg типа:

Код:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Новый раздел #1]
"Новый параметр #1"=dword:00000000

 
А для второй части задания скрипт:

Код:
Function OnFirstParentExit
ExecuteVirtualProcess "regedit /s C:\tmp\uninstall.reg"
End Function

С содержимым файла uninstall.reg соответственно:

Код:
Windows Registry Editor Version 5.00
 
[-HKEY_LOCAL_MACHINE\SOFTWARE\Новый раздел #1]

 
Если это верно, то:
- Можно ли обе записи поместить в один скрипт? Если да, каков синтаксис записи?
- Как правильно указать пути к файлам install.reg и uninstall.reg? Должны ли они находиться в самой сборке, рядом с ней или в определённом месте?

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 14:43 01-06-2014 | Исправлено: AVanti473, 14:45 01-06-2014
freedaw



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473
К сожалению, не могу сейчас уделить достаточно времени вашему вопросу из-за занятости.
Но из того, что сразу бросилось в глаза:
- если меняете реальный реестр, то нужно использовать API функцию Function ExecuteExternalProcess, чтобы запустить regedit в реальной системе;
- если файлы install.reg и uninstall.reg будете создавать скриптом при запуске сборки, то создавать их следует в папке, изоляция для которой в сборке назначена как Merged;
- если файлы install.reg и uninstall.reg уже есть готовые, то внутри сборки их быть не должно - можно положить рядом с ехе-шником сборки и задавать путь к ним через API функцию (тогда будет возможен запуск сборки из произвольного места)
Origin = GetEnvironmentVariable("TS_ORIGIN") - это будет путь к ехе-шнику сборки, потом с помощью скрипта отсекаете имя сборки после последнего слеша и к полученному пути добавляете имя регфайла - получите аргумент для командной строки запуска regedit;
- также, будет правильным после запуска regedit вставить ожидание, пока он не отработает, типа этого
RegEditPid = ExecuteExternalProcess("regedit /s " & chr(34) & RegFileName & chr(34))  
WaitForProcess RegEditPid, 0  
Пихать всё в один скрипт не вижу смысла - создайте два разных .vbs файла, чтобы не путаться, а сборка сама запустит нужный в нужный момент.
 
Почитайте про это в старом хелпе от 3-х версий в разделах Scripting и API functions - там более понятно написано и примеры есть.

Всего записей: 788 | Зарегистр. 04-11-2012 | Отправлено: 15:52 01-06-2014
coherent

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

Цитата:
Должны ли они находиться в самой сборке, рядом с ней или в определённом месте?

ИМХО, логично расположить их рядом с исполняемым ехе-файлом сборки или в отдельной папке, если очень хочется, но снова-таки рядом с исполняемым ехе-файлом сборки.
 

Цитата:
Как правильно указать пути к файлам install.reg и uninstall.reg?

У каждого свои преференции. Например, так (если они рядом с ехе)

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)
InstallReg = RegFilesPath + "\install.reg"
UninstallReg = RegFilesPath + "\uninstall.reg"

 

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

Безусловно. Пути определите только один раз в начале скрипта, а не в каждой из функций OnFirstParentStart и OnFirstParentExit.
 
Запускаете через ExecuteExternalProcess, поскольку речь о манипуляциях с реальным реестром

Код:
Function OnFirstParentStart
  id = ExecuteExternalProcess("regedit /s " & chr(34) & InstallReg & chr(34))  
  WaitForProcess id, 0
End Function

аналогично для удаления.

Всего записей: 3885 | Зарегистр. 20-02-2007 | Отправлено: 16:32 01-06-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
freedaw, coherent я верно понял, при условии, что файлы install.reg и uninstall.reg находятся рядом с экзешником сборки, фаил скрипта должен выглядеть так?
 

Код:
' Определяю местоположение reg файлов относительно экзешника
Origin = GetEnvironmentVariable("TS_ORIGIN")  
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)  
InstallReg = RegFilesPath + "\install.reg"  
UninstallReg = RegFilesPath + "\uninstall.reg"
 
' Запускаю процесс для regedit в реальной системе
Function OnFirstParentStart  
id = ExecuteExternalProcess("regedit /s " & chr(34) & InstallReg & chr(34))  
WaitForProcess id, 0  
End Function
 
' При запуске произойдёт импорт ключей из файла install.reg
Function OnFirstParentStart  
ExecuteVirtualProcess "regedit /s InstallReg"  
End Function
 
' По завершению программы произойдёт удаление ключей из файла uninstall.reg
Function OnFirstParentExit  
ExecuteVirtualProcess "regedit /s UninstallReg"  
End Function

 
Или я ошибаюсь?

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 17:19 01-06-2014 | Исправлено: AVanti473, 17:23 01-06-2014
coherent

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

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")  
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)  
InstallReg = RegFilesPath + "\install.reg"  
UninstallReg = RegFilesPath + "\uninstall.reg"  
   
'Добавление в реестр  
Function OnFirstSandboxOwner  
  id = ExecuteExternalProcess("regedit /s " & chr(34) & InstallReg & chr(34))    
  WaitForProcess id, 0  
End Function
 
'Удаление из реестра
Function OnFirstParentExit  
  id = ExecuteExternalProcess("regedit /s " & chr(34) & UninstallReg & chr(34))    
  WaitForProcess id, 0  
End Function

Всего записей: 3885 | Зарегистр. 20-02-2007 | Отправлено: 17:32 01-06-2014 | Исправлено: coherent, 13:54 02-06-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent, большущее спасибо! Вечером буду пробовать!    
 
freedaw, тоже благодарю за разъяснения, без них было бы сложнее разобраться что к чему!    

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
coherent
 
Всё работает отлично! ключи добавляются при старте и исчезают при закрытии программы! Закономерен следующий вопрос, не задай который, я был бы полным косячником во всех смыслах:
Как можно сначала, при старте сборки, сохранить куда-нибудь интересующие реальные ключи, потом импортировать нужные в реестр, по закрытию удалить импортированные, и вернуть сохранённые?
 
Тут наверняка понадобиться нечто большее чем просто скрипт и файлы реестра для импорта... Понимаю, вопрос избитый, но его решение, или вариант решения, могли бы всё-таки поднять качество сборок других сборщиков. Ведь в первую очередь, портабельный софт не должен вредить системе или уже установленным программам, а при наличии на компьютере аналогичного установленного софта, вмешательство и уничтожение его ключей по завершению работы портабельной сборки, может быть фатальным. Безусловно, есть тема X-Launcher, но, во первых - я в ней ничего не понимаю, во вторых - мне интересно это решение в рамках работы ThinApp, и в третьих - от метания между X-Launcher и ThinApp, всё равно как в пословице за двумя зайцами...

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 21:24 01-06-2014 | Исправлено: AVanti473, 21:25 01-06-2014
freedaw



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

Цитата:
Как можно сначала, при старте сборки, сохранить куда-нибудь интересующие реальные ключи, потом импортировать нужные в реестр, по закрытию удалить импортированные, и вернуть сохранённые?

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

Всего записей: 788 | Зарегистр. 04-11-2012 | Отправлено: 21:40 01-06-2014
AVanti473



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

Цитата:
Да по тому же принципу, что и в выше приведённом скрипте:

 
freedaw, если Вас не затруднит, можно готовый скриптик плиз? Файлы те-же о которых писалось выше, запись в реестре та-же, только сейчас мы предположим, что она уже существовала в системе до запуска сборки
Буду признателен за такую помощь!
 
И ещё вопросик не по делу и по делу одновременно. Столкнулся с тем, что надо перевести файлы реестра сборки в формат reg файла для реестра. Разумеется чтобы составить необходимый для импорта фаил реестра. Проблема вот в чём:
Согласно всем известного FAQ беру файлы "HKEY_CURRENT_USER.txt", "HKEY_LOCAL_MACHINE.txt", "HKEY_USERS.txt", "Package.ini", и помещаю их в C:\1
В C:\Program Files\VMware\VMware ThinApp создаю фаил "1.bat" с таким содержимым

Код:
vregtool.exe C:\1\convert.tvr ImportDir C:\1

Стартую его и получаю в папке C:\1 фаил "convert.tvr", который переименовываю в "Registry.rw.tvr" и отправляю в папку с vregtool.exe
Создаю там фаил "2.bat" с содержимым

Код:
vregtool.exe Registry.rw.tvr ExportReg Reg.reg

Стартую его и получаю вылет программы с вот такой вот ошибкой
 

 
Фаил Reg.reg получается, но его содержание вот такое:

Код:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{13C03EB5-944E-5126-C3CF-154AFB5C2E55}]
@="

 
Видно что программа конвертации споткнулась на какой-то ошибке. Что это может быть, как это исправить или как поступить иначе для достижения результата?

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 22:16 01-06-2014
SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473
Вот мой пример работы с реестром в проекте (без бэкапа). Файлы реестра хранятся внутри.
 
Бэкап реестра:

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")  
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)  
InstallReg = RegFilesPath + "\install.reg"  
UninstallReg = RegFilesPath + "\uninstall.reg"
BackupReg = RegFilesPath + "\backup.reg"
   
Function OnFirstParentStart
  ' Бэкап раздела [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control]
  WaitForProcess ExecuteExternalProcess("regedit /e " & chr(34) & BackupReg & chr(34) & " ""HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control"""), 0
  'Добавление в реестр  
  id = ExecuteExternalProcess("regedit /s " & chr(34) & InstallReg & chr(34))    
  WaitForProcess id, 0  
End Function
 
Function OnFirstParentExit
  'Удаление из реестра
  id = ExecuteExternalProcess("regedit /s " & chr(34) & UninstallReg & chr(34))    
  WaitForProcess id, 0
  ' Восстановлении из бэкапа
  Call WaitForProcess(ExecuteExternalProcess("regedit /s " & chr(34) & BackuplReg & chr(34)), 0)
End Function

 
Но есть одно большое но: вставить в начало функций OnFirstParentStart, OnFirstParentExit вызов MsgBox "имя функции", чтобы узнать сколько раз они вызываются для вашего проекта. В моём примере эти ф. вызываются по 2 раза.
Соответственно, если они вызываются по 2 и более раза, то нужно проверять существование файла бэкапа, чтобы не затереть его новыми значениями после импорта модификаций.
 
Добавлено позже [4:58]: вот другой мой пример по работе с реестром вместе с бэкапом.

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

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473
1. Батник для конвертирования txt -> reg

Код:
vregtool Registry.rw.tvr ImportDir .
vregtool Registry.rw.tvr ExportReg regfile.reg

Я не сторонник плодить какие-то папки, пихать туда файлы и т.д. Батник лежит в папке программы ( там, где и vregtool.exe), туда же закидываете нужные txt-файлы, запускаете батник и получаете искомый regfile.reg, который обзываете, как Вам уже угодно
 
2. Если не секрет, что это у Вас за ThinApp-сборка, которая требует описанные манипуляции в реальном реестре?

Всего записей: 3885 | Зарегистр. 20-02-2007 | Отправлено: 10:59 02-06-2014
AVanti473



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

Цитата:
Если не секрет, что это у Вас за ThinApp-сборка, которая требует описанные манипуляции в реальном реестре?

 
Да не секрет. ))) Только не пинайте больно... Собственно всё описано здесь: http://forum.ru-board.com/topic.cgi?forum=55&topic=11671&start=2260#4
Но это я так, просто пробую некоторые решения. Суть не в том, чтобы сделать полностью работающую портабельную версию этой программы (хотя, кому плохо-то будет, если что-то выйдет), суть в том, чтобы научиться новому в работе с ThinApp! Скрипты, батники - раньше я этого не применял в сборках вообще, попросту не было необходимости! Зато сейчас, чем не шанс узнать и использовать новые для меня функции! )))
 
Добавлено:
coherent
 
По поводу батника согласен! Спасибо за подсказку, но ошибка вываливается всё равно...
Может у Вас получиться иначе? Вот архивчик с файлами, которые у меня не получается перевести в файлы реестра для импорта: http://rghost.ru/56082593 За Package.ini не критикуйте плиз, каждый обрабатывает по своему. Можно конечно удалить весь закоментированный мусор, можно убрать все выключенные точки входа, да только мне это как-то без разницы, тоесть не принципиально. Килобайтом меньше, килобайтом больше - не суть важно... )))
 
Добавлено:
SLasH, Огромное, огромное спасибо за готовые решения!!! Первое понравилось в силу простоты, но не совсем понял в чём может быть загвоздка. Изучаю второе!  

Всего записей: 1191 | Зарегистр. 05-04-2011 | Отправлено: 12:10 02-06-2014
SLasH

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473 13:10 02-06-2014
Цитата:
не совсем понял в чём может быть загвоздка

Вставьте MsgBox и посмотрите сколько раз запускается каждая из функций. Если больше одного раза, то как раз то, о чём я говорил.
Пример:

Код:
Origin = GetEnvironmentVariable("TS_ORIGIN")  
RegFilesPath = Left(Origin, InStrRev(Origin, "\") - 1)  
InstallReg = RegFilesPath + "\install.reg"  
UninstallReg = RegFilesPath + "\uninstall.reg"
BackupReg = RegFilesPath + "\backup.reg"
   
Function OnFirstParentStart
const FUNC_NAME = "OnFirstParentStart"
  MsgBox FUNC_NAME
  ' Бэкап раздела [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control]
  WaitForProcess ExecuteExternalProcess("regedit /e " & chr(34) & BackupReg & chr(34) & " ""HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control"""), 0
  'Добавление в реестр  
  id = ExecuteExternalProcess("regedit /s " & chr(34) & InstallReg & chr(34))    
  WaitForProcess id, 0  
End Function
 
Function OnFirstParentExit
const FUNC_NAME = "OnFirstParentExit"
  MsgBox FUNC_NAME
  'Удаление из реестра
  id = ExecuteExternalProcess("regedit /s " & chr(34) & UninstallReg & chr(34))    
  WaitForProcess id, 0
  ' Восстановлении из бэкапа
  Call WaitForProcess(ExecuteExternalProcess("regedit /s " & chr(34) & BackuplReg & chr(34)), 0)
End Function

Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 13:12 02-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