Здравствуйте!

Есть такая задача: В организации много рабочих мест (более 100) и все работают с системой Террасофт. Со временем выходят новые версии системы и появляется проблема с обновлением на рабочих местах, т.к. необходима перерегистрация библиотек. Админами был сделан скрипт по автоматическому обновлению файлов, но проблема с регистрацией осталась. Можно использовать стандартные библиотеки regsvr32 или библиотеку от Террасофт regsvrex, но судя по файлу RunSettings.xml необходимо зарегистрировать TSClient.exe, но стандартными средствами это сделать не получается.
Можно ли каким-то образом вручную запустить TSLauncher.exe что бы он сам сделал свою работу?

Нравится

10 комментариев

Если пользователи ограничены в правах, то они не смогут перерегистрировать бинарные файлы. В таком случае самым эффективным решением будет использование MSI-инсталляции. Этот тип инсталляции можно установить через групповые политики средствами Microsoft. Нужную версию инсталлятора можете запросить в тех. поддержке.

Спасибо за совет, но тут есть два момента:
1. В организации используются расширения партнеров (такие как "Управление БП") которые требуют регистрации дополнительных библиотек.
2. Если это поможет, то скрипт обновления выполняется с админскими правами.

Можно ли это автоматизировать?

Евгений,

в данном случае Вам необходимо самостоятельно создать инсталлятор MSI либо обратиться к партнеру. В готовый инсталлятор можно добавить свои файлы с помощью соответствующего программного обеспечения.

В принципе, TSLauncher.exe можно запустить отдельно, но он после перерегистрации бинарных файлов откроет окно выбора приложения, где попросит указать путь к запускаемому файлу. То есть, в скрипте необходимо будет также предусмотреть закрытие данного окна после того, как регистрация библиотек отработает.

Добрый день, Анна.

Скажите, как можно зарегистрировать вручную TSClient.exe?
C *.dll всё понятно а вот с *.exe пока не получаеться.

net stop winmgmt
 cd /d %ProgramFiles%\Terrasoft\Bin\  - тут нужно указать директорию Terrasoft
for %i in (*.dll) do RegSvr32 -s %i 
for %i in (*.exe) do %i /RegServer
 net start winmgmt

Спасибо Анна за хороший пример, но всёравно после запуска вашего скрипта при запусе TSClient.exe идет перерегистрация компонентов. Проверить очень просто. Я переименовываю корневую директорию (в моем случае d:\Temp\Terrasoft в d:\Temp\Terrasoft1) и запускаю этот скрипт

net stop winmgmt
for %%i in (*.dll) do RegSvr32 -s %%i 
tsclient.exe  /RegServer
tsadmin.exe /RegServer
net start winmgmt
 

После чего запускаю приложение и идет перегистрация.
Наверно я что-то недорегистрирую.
Вопрос что?

Вам необходимо зарегистрировать и все остальные *.exe файлы, за это отвечает строка

for %i in (*.exe) do %i /RegServer

Вами же указаны только два файла.

Да, я и так делал, просто в таком варианте открываются все exe-шники такие как
TSExtractServices.exe
TSLauncher.exe
TSLotusNotesClient.exe
TSMerge.exe
TSMergeServices.exe
TSMSBuildTasks.exe
TSMSOfficeLibraryConfigurator.exe
TSTransferData.exe
TSWebServicesServer.exe

Да и в RunSettings.xml их нет, но я всёравно это проверил, но нужного результата так и не получил.
Есть еще варианты?

Очень надо :)

Добрый день, Анна.

Спасибо за помощь в вопросе.
Решение было найдено.
Просто не регистрировались ocx.

Вот пример кода, может кому будет полезен.

for %%i in (*.dll) do RegSvr32 -s %%i 
for %%i in (*.ocx) do RegSvr32 -s %%i 
tsclient.exe  /RegServer
tsadmin.exe /RegServer
TSLauncher.exe /RegServer
TSLotusNotesClient.exe /RegServer
 

Я не совсем понял, зачем нужно останавливать консоль управления.
Оно работает и так.

Теперь в этот скрипт осталось добавить проверку на актуальность текущей версии и всё.

Консоль управления останавливать не обязательно, это нужно лишь в случае перезапуска компонента RegSvr32.

Благодарим за публикацию окончательного решения. Пожалуйста, обращайтесь, если у Вас возникнут дополнительные вопросы.

Показать все комментарии

Добрый день!

В поставке системы Terrasoft, в папке BIN идет утилита TSLauncher.exe. Она отвечает за корректность регистрации модулей системы.

Вопрос заключается в следующем: Можно ли заставить эту утилиту зарегистрировать отдельно взятую библиотеку?

ЗЫ
Вариант с заполнением файла конфигурации RunSettings.xml не подходит, нужно регистрировать отдельно взятую библиотеку.

Нравится

6 комментариев

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

regsvr32 Library.dll

где Library -- название библиотеки.

А в runsettings.xml не эти библиотеки прописываются?

Спасибо за ответы.
Наверно стоит более подробно описать задачу.

Тут не для кого не секрет что я разрабатываю разные доп. модули (почта, телефон, смс ...) для системы Террасофт. Из-за того что модули постоянно развиваются у администраторов системы Террасофт клиентских организаций появляется появляется дополнительная рутинная задача по обновлению библиотек на рабочих местах. Одно дело когда 3-5 рабочих мест, а когда 15 и больше то тут тут сложнее.
Понимая такую ситуацию я решил добавить в систему механизм авто обновления библиотек на рабочих местах. Логика работы примерно такая: библиотека загружается в базу, а при запуске Террасофт сверяются версии локальные и в базе, и в случае необходимости происходит обновление.

В принципе ничего сложного и всё должно работать, но есть один момент, и он касается работы regsvr32. Не редки случаи когда regsvr32 отрабатывает не совсем корректно, точнее сказать не может зарегистрировать библиотеку (нужно запускать от имени администратора). Вот и ищу варианты.

Прописывание библиотеки в runsettings.xml тоже не спасет, т.к. основная задача это обновление библиотеки из базы.

Очень не хотелось писать свой ланчер, но похоже что без него не обойтись :smile:. Жаль что не получается использовать стандартный.

Евгений, хочу предложить Вам попробовать обойти проблему regsvr32.exe. Действительно, для регистрации библиотеки нужны права локального администратора. Но существуют и обходные пути. Например, начиная с версии 3.3.2 (тут я могу ошибаться), в поставку Terrasoft CRM включено приложение regsvrex.exe. Оно позволяет регистрировать COM библиотеки от имени обычного пользователя. Надеюсь это поможет!

"Карло Сергей" написал:

Спасибо Сергей за совет.
Он был очень полезен.

Теперь обновление библиотек почтового клиента происходит централизованно. Ведь когда мест больше 5 (например 25) уже становится сложно обновлять на рабочих местах библиотеки и их перерегистрировать. Теперь достаточно загрузить новые версии в базу и при запуске системы происходит процедура сравнения локальных и центральных файлов и при необходимости библиотеки обновляются.

Евгений, рад что смог помочь!

Показать все комментарии