Здравствуйте!
Есть такая задача: В организации много рабочих мест (более 100) и все работают с системой Террасофт. Со временем выходят новые версии системы и появляется проблема с обновлением на рабочих местах, т.к. необходима перерегистрация библиотек. Админами был сделан скрипт по автоматическому обновлению файлов, но проблема с регистрацией осталась. Можно использовать стандартные библиотеки regsvr32 или библиотеку от Террасофт regsvrex, но судя по файлу RunSettings.xml необходимо зарегистрировать TSClient.exe, но стандартными средствами это сделать не получается.
Можно ли каким-то образом вручную запустить TSLauncher.exe что бы он сам сделал свою работу?
Нравится
Если пользователи ограничены в правах, то они не смогут перерегистрировать бинарные файлы. В таком случае самым эффективным решением будет использование 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.
Благодарим за публикацию окончательного решения. Пожалуйста, обращайтесь, если у Вас возникнут дополнительные вопросы.