Все чаще и чаще мы стали выводить свои программы в облака. Хорошо это или плохо — рассуждать не станем, но вот о ситуации, когда необходимо состыковать локальные программы с облачными, мы сегодня с вами немного поговорим: в разрезе нашей СЭД Docsvision и установленного локально на пользовательский ПК любого почтового клиента. Представим себе задачу: открыть ссылку на «карточку» Docsvision, которая пришла по почте пользователю в почтовый клиент, установленный локально на его компьютере. Изучив вопрос, проанализировав опыт наших партнеров, мы нашли решение, которым и хотим с вами поделиться.
Главным клиентским ПО в Docsvision является Navigator, который можно опубликовать как Remote App. На это могут быть разные причины: к примеру, слабый канал из удаленного подразделения до сервера Docsvision. Облачно, быстро для пользователя, удобно для админа. Но что происходит в случае описанной выше задачи, когда нужно отрыть ссылку на «карточку» из почтового клиента, установленного у пользователя локально на компьютере.
Давайте немного поясним, что происходит в такой конфигурации по умолчанию. Пользователь получает письмо с ссылкой на объект Docsvision, пытается по ней перейти, у него открывается локально установленный браузер и… вот тут начинаются проблемы, т.к. ссылка у него не открывается из-за того, что сервер Docsvision не доступен. Пользователь негодует и строчит заявки в службу ИТ. В последнее время вопрос «как решить эту проблему?» все чаще звучал от администраторов системы.
Суть нашего решения в следующем
Ссылка на объект в Docsvision формируется в определенном виде. При вызове этой ссылки на клиентском компьютере срабатывает скрипт, который открывает RemoteApp и преобразует её в стандартную ссылку на объект Docsvision, которая открывается браузером по умолчанию в RemoteApp. Таким образом, у нас запускается Docsvision Navigator на удалённом рабочем столе.
Конечно, данное решение не претендует на единственно правильное, но мы точно уверены, что оно рабочее и применяется в решениях, в которых активных пользователей более 4 000.
Делиться будем в виде пошаговой инструкции.
Пошаговая настройка
1. Создаем VBS скрипт с содержанием.
2. Публикуем созданный VBS скрипт как RemoteApp на сервере, к примеру, с названием «docsvision5-link».
Заходим в RemoteApp Manager и выбираем “Add Remote Programs”.
![](https://habrastorage.org/files/8f7/f95/dc6/8f7f95dc642c4fd58e45717b7dbe525c.png)
В открывшемся “RemoteApp Wizard”, следуя инструкции, публикуем VBS-скрипт
![](https://habrastorage.org/files/93d/0a1/0be/93d0a10be74d492e9404ba7b6e059701.png)
![](https://habrastorage.org/files/066/d42/672/066d426723c1457b9f7557d95d796c01.png)
![](https://habrastorage.org/files/285/4e3/4ec/2854e34ecf2345098a55e3f4da3048a9.png)
![](https://habrastorage.org/files/621/09c/651/62109c651b3f4d559e39a939ae220874.png)
![](https://habrastorage.org/files/4cc/ec3/a07/4ccec3a07d21487fb23018f07e8ca0a2.png)
3. Даем опубликованному приложению «docsvision5-link» разрешение на выполнение всех команд командной строки.
![](https://habrastorage.org/files/80d/6d6/6f4/80d6d66f4eca4ce8ba090aec88d60db6.png)
![](https://habrastorage.org/files/338/194/0f0/3381940f017f4c27a661cb31f74c288f.png)
4. Создаем RDP файл для приложения docsvision5-link, в Remote App Wizard (пример RDP файла- dv5link.rdp).
![](https://habrastorage.org/files/436/41f/8ca/43641f8ca5cf4addacae4f0b8661d941.png)
![](https://habrastorage.org/files/c7f/ad2/3cd/c7fad23cd724442485b34e2960401f1e.png)
![](https://habrastorage.org/files/14e/a3f/343/14ea3f343689433eaaef8053c7ec19f7.png)
![](https://habrastorage.org/files/ed0/475/360/ed04753601b74632807c7bfd935790fb.png)
5. Распространяем сознанный Rdp файл на клиентские рабочие места.
6. На клиентском компьютере создаем ветку Реестра dv5term с помощью файла с расширением .reg, который содержит записи:
7. Меняем формирование ссылки, которая формируется сервером на карточки, на вид dv5term://server.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
Что будет происходить при таких настройках:
Пользователь кликает по ссылке:
dv5term://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Выполняется ассоциированная в реестре команда:
т.е. \\ serverRDP.docsvision.com \DocsVision\dv5link.rdp с передачей в него параметра в виде полного URL
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Вызывается скрипт с этим же параметром:
\\serverRDP.docsvision.com\C$\script\ie5.vbs %1
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Этот скрипт:
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
преобразует параметр:
dv5term://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
в
serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
обычной заменой и делает вызов
Т.е. пытается выполнить команду стандартным для системы путем, а если точнее, то будет пытаться открыть браузером, по умолчанию, на терминальном сервере ссылку serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
Повторимся, данное решение, не претендует на единственно правильное. Возможно, у вас есть еще какие-то решения этой задачи?
Будем рады, если поделитесь!
Кирилл Хохлов, старший консультант «ДоксВижн».
Главным клиентским ПО в Docsvision является Navigator, который можно опубликовать как Remote App. На это могут быть разные причины: к примеру, слабый канал из удаленного подразделения до сервера Docsvision. Облачно, быстро для пользователя, удобно для админа. Но что происходит в случае описанной выше задачи, когда нужно отрыть ссылку на «карточку» из почтового клиента, установленного у пользователя локально на компьютере.
Давайте немного поясним, что происходит в такой конфигурации по умолчанию. Пользователь получает письмо с ссылкой на объект Docsvision, пытается по ней перейти, у него открывается локально установленный браузер и… вот тут начинаются проблемы, т.к. ссылка у него не открывается из-за того, что сервер Docsvision не доступен. Пользователь негодует и строчит заявки в службу ИТ. В последнее время вопрос «как решить эту проблему?» все чаще звучал от администраторов системы.
Суть нашего решения в следующем
Ссылка на объект в Docsvision формируется в определенном виде. При вызове этой ссылки на клиентском компьютере срабатывает скрипт, который открывает RemoteApp и преобразует её в стандартную ссылку на объект Docsvision, которая открывается браузером по умолчанию в RemoteApp. Таким образом, у нас запускается Docsvision Navigator на удалённом рабочем столе.
Конечно, данное решение не претендует на единственно правильное, но мы точно уверены, что оно рабочее и применяется в решениях, в которых активных пользователей более 4 000.
Делиться будем в виде пошаговой инструкции.
Пошаговая настройка
1. Создаем VBS скрипт с содержанием.
On Error Resume Next
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Dim regEx
if WScript.Arguments.count >0 then
Arg = WScript.Arguments.Item(0)
Set regEx = New RegExp
regEx.Pattern = "^dv5term://(.*)"
regEx.IgnoreCase = True
arg = regEx.Replace(arg, "$1")
WshShell.Run "http://" & arg
end if
2. Публикуем созданный VBS скрипт как RemoteApp на сервере, к примеру, с названием «docsvision5-link».
Заходим в RemoteApp Manager и выбираем “Add Remote Programs”.
![](https://habrastorage.org/files/8f7/f95/dc6/8f7f95dc642c4fd58e45717b7dbe525c.png)
В открывшемся “RemoteApp Wizard”, следуя инструкции, публикуем VBS-скрипт
![](https://habrastorage.org/files/93d/0a1/0be/93d0a10be74d492e9404ba7b6e059701.png)
![](https://habrastorage.org/files/066/d42/672/066d426723c1457b9f7557d95d796c01.png)
![](https://habrastorage.org/files/285/4e3/4ec/2854e34ecf2345098a55e3f4da3048a9.png)
![](https://habrastorage.org/files/621/09c/651/62109c651b3f4d559e39a939ae220874.png)
![](https://habrastorage.org/files/4cc/ec3/a07/4ccec3a07d21487fb23018f07e8ca0a2.png)
3. Даем опубликованному приложению «docsvision5-link» разрешение на выполнение всех команд командной строки.
![](https://habrastorage.org/files/80d/6d6/6f4/80d6d66f4eca4ce8ba090aec88d60db6.png)
![](https://habrastorage.org/files/338/194/0f0/3381940f017f4c27a661cb31f74c288f.png)
4. Создаем RDP файл для приложения docsvision5-link, в Remote App Wizard (пример RDP файла- dv5link.rdp).
![](https://habrastorage.org/files/436/41f/8ca/43641f8ca5cf4addacae4f0b8661d941.png)
![](https://habrastorage.org/files/c7f/ad2/3cd/c7fad23cd724442485b34e2960401f1e.png)
![](https://habrastorage.org/files/14e/a3f/343/14ea3f343689433eaaef8053c7ec19f7.png)
![](https://habrastorage.org/files/ed0/475/360/ed04753601b74632807c7bfd935790fb.png)
5. Распространяем сознанный Rdp файл на клиентские рабочие места.
6. На клиентском компьютере создаем ветку Реестра dv5term с помощью файла с расширением .reg, который содержит записи:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\dv5term]
@="URL:dv5term Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\dv5term\shell]
@=""
[HKEY_CLASSES_ROOT\dv5term\shell\open]
@=""
[HKEY_CLASSES_ROOT\dv5term\shell\open\command]
@="\"mstsc\" /remotecmdline:\"%1\" \"\\\\serverRDP\\DocsVision\\dv5link.rdp\""
7. Меняем формирование ссылки, которая формируется сервером на карточки, на вид dv5term://server.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
Что будет происходить при таких настройках:
Пользователь кликает по ссылке:
dv5term://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Выполняется ассоциированная в реестре команда:
"mstsc" /remotecmdline:"%1" "\\serverRDP.docsvision.com\DocsVision\dv5link.rdp"
т.е. \\ serverRDP.docsvision.com \DocsVision\dv5link.rdp с передачей в него параметра в виде полного URL
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Вызывается скрипт с этим же параметром:
\\serverRDP.docsvision.com\C$\script\ie5.vbs %1
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
Этот скрипт:
On Error Resume Next
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Dim regEx
if WScript.Arguments.count >0 then
Arg = WScript.Arguments.Item(0)
Set regEx = New RegExp
regEx.Pattern = "^dv5term://(.*)"
regEx.IgnoreCase = True
arg = regEx.Replace(arg, "$1")
WshShell.Run "http://" & arg
end if
![](https://habrastorage.org/files/69f/805/062/69f8050622cd4736a71e46c4155354db.png)
преобразует параметр:
dv5term://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
в
serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
обычной заменой и делает вызов
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run http://serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
Т.е. пытается выполнить команду стандартным для системы путем, а если точнее, то будет пытаться открыть браузером, по умолчанию, на терминальном сервере ссылку serverRDP.docsvision.com/DocsVision/?CardID={1007DDE2-76E0-E511-80CA-A0D3C1063571}
Повторимся, данное решение, не претендует на единственно правильное. Возможно, у вас есть еще какие-то решения этой задачи?
Будем рады, если поделитесь!
Кирилл Хохлов, старший консультант «ДоксВижн».
Поделиться с друзьями
GaD_On_Line
Потрясающее решение, настоящий unix way во плоти!
alexey-kirilenko
самое главное что цель достигнута — увы красивых готовых решений из «коробки» remoteapp не предлагает