Есть такая задача: В организации много рабочих мест (более 100) и все работают с системой Террасофт. Со временем выходят новые версии системы и появляется проблема с обновлением на рабочих местах, т.к. необходима перерегистрация библиотек. Админами был сделан скрипт по автоматическому обновлению файлов, но проблема с регистрацией осталась. Можно использовать стандартные библиотеки regsvr32 или библиотеку от Террасофт regsvrex, но судя по файлу RunSettings.xml необходимо зарегистрировать TSClient.exe, но стандартными средствами это сделать не получается.
Можно ли каким-то образом вручную запустить TSLauncher.exe что бы он сам сделал свою работу?
Если пользователи ограничены в правах, то они не смогут перерегистрировать бинарные файлы. В таком случае самым эффективным решением будет использование MSI-инсталляции. Этот тип инсталляции можно установить через групповые политики средствами Microsoft. Нужную версию инсталлятора можете запросить в тех. поддержке.
Спасибо за совет, но тут есть два момента:
1. В организации используются расширения партнеров (такие как "Управление БП") которые требуют регистрации дополнительных библиотек.
2. Если это поможет, то скрипт обновления выполняется с админскими правами.
в данном случае Вам необходимо самостоятельно создать инсталлятор MSI либо обратиться к партнеру. В готовый инсталлятор можно добавить свои файлы с помощью соответствующего программного обеспечения.
В принципе, TSLauncher.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-шники такие как
TSExtractServices.exe
TSLauncher.exe
TSLotusNotesClient.exe
TSMerge.exe
TSMergeServices.exe
TSMSBuildTasks.exe
TSMSOfficeLibraryConfigurator.exe
TSTransferData.exe
TSWebServicesServer.exe
Да и в RunSettings.xml их нет, но я всёравно это проверил, но нужного результата так и не получил.
Есть еще варианты?
Спасибо за ответы.
Наверно стоит более подробно описать задачу.
Тут не для кого не секрет что я разрабатываю разные доп. модули (почта, телефон, смс ...) для системы Террасофт. Из-за того что модули постоянно развиваются у администраторов системы Террасофт клиентских организаций появляется появляется дополнительная рутинная задача по обновлению библиотек на рабочих местах. Одно дело когда 3-5 рабочих мест, а когда 15 и больше то тут тут сложнее.
Понимая такую ситуацию я решил добавить в систему механизм авто обновления библиотек на рабочих местах. Логика работы примерно такая: библиотека загружается в базу, а при запуске Террасофт сверяются версии локальные и в базе, и в случае необходимости происходит обновление.
В принципе ничего сложного и всё должно работать, но есть один момент, и он касается работы regsvr32. Не редки случаи когда regsvr32 отрабатывает не совсем корректно, точнее сказать не может зарегистрировать библиотеку (нужно запускать от имени администратора). Вот и ищу варианты.
Прописывание библиотеки в runsettings.xml тоже не спасет, т.к. основная задача это обновление библиотеки из базы.
Очень не хотелось писать свой ланчер, но похоже что без него не обойтись :smile:. Жаль что не получается использовать стандартный.
Евгений, хочу предложить Вам попробовать обойти проблему regsvr32.exe. Действительно, для регистрации библиотеки нужны права локального администратора. Но существуют и обходные пути. Например, начиная с версии 3.3.2 (тут я могу ошибаться), в поставку Terrasoft CRM включено приложение regsvrex.exe. Оно позволяет регистрировать COM библиотеки от имени обычного пользователя. Надеюсь это поможет!
Теперь обновление библиотек почтового клиента происходит централизованно. Ведь когда мест больше 5 (например 25) уже становится сложно обновлять на рабочих местах библиотеки и их перерегистрировать. Теперь достаточно загрузить новые версии в базу и при запуске системы происходит процедура сравнения локальных и центральных файлов и при необходимости библиотеки обновляются.