Как из браузера запустить приложение
Хотел бы поинтересоваться у знающих, существует ли на практике возможность запустить локальное приложение по кнопке
с Web-страницы? (Вопросы безопасности на данном этапе не волнуют; нужно понимание такой возможности)
Если подробно, то на Windows Server 2012 R2 развёрнуто Web-приложение и поднят сайт (с помощью IIS).
Клиенты со своих локальных машин под управлением каких-либо несерверных ОС заходят через актуальный Chrome по URL и попадают
на это самое Web-приложение. Авторизуются там и могут работать с мнемосхемами в векторной графике (SVG).
Мнемосхема подключает файл-расширение на JavaScript, который выполняется при загрузке этой схемы.
Вот на мнемосхеме размещён активный элемент "кнопка", по которой хотелось бы открывать локальное приложение (*.exe).
(Кнопкой можем, например добавлять какие-нибудь html теги в DOM-структуру сайта или выполнять некую JS функцию)
На проекте подключена библиотека jQuery, можно использовать её возможности.
Вот исходя из вышеперечисленный особенностей и возможностей, может кто-нибудь подскажет можно ли написать какую функцию или
добавить что-то в DOM-структуру, чтобы появилась возможность запускать приложения?
Из найденных возможных вариантов в сети не особо что-то помогло.
Возможен ли запуск MVC веб приложения без установки веб-серверов?
Есть программа, крутящаяся в виде службы Windows. Для неё есть клиент WinForm обмен с которым идёт.
Запуск веб-приложений из под Intelij IDEA
Проинсталил я последний J2EE 1.4. Запустил Идею. Создал Веб-Модуль. В качестве аппсервера указал.
Garik_1993, не занимался таким, но гуглите что-то вроде "custom uri scheme windows". Должна быть информация.
В конце концов тот же Steam запускает своё приложение по ссылке вида steam://. . Вы тоже можете зарегистрировать свою схему. Но без ковыряний в реестре не обойтись (если винда 7ка и если у вас вообще винда, а не mac).
Garik_1993, могу предложить вариант с node.js
Нужно, чтобы у клиента был запущен node.js. Человек жмёт ссылку примерно такую:
Т.е. порт 5555 слушает веб-сервер node.js. А там такой код:
(ну или какой там путь будет у вас)
Сейчас проверил - калькулятор из корня запустился.
Добавлено через 9 минут
Вот вам готовый index.js:
а потом открываете нужный адрес.
Добавлено через 1 минуту
Не забудьте express установить:
можно ли запустить приложение из браузера? Я не говорю об открытии файла из браузера (например, открыть PDF с помощью Adobe Reader), а скорее открыть новый (пустой) экземпляр приложения, установленного на компьютере пользователя.
гипотетическая ситуация: пользователь просматривает веб-сайт, на котором перечислены компьютеры, которыми можно управлять с помощью RDP. Он нажимает на ссылку на 192.168.1.10, эта ссылка открывает клиент Microsoft RDP (mstsc.exe) с этим ip-адресом, уже заполненным из.
Я говорю строго о Вселенной Windows.
Это вообще выполнимо за пределами ActiveX и IE?
разумно ли пытаться сделать это в IE с ActiveX?
вы не можете действительно "запустить приложение" в истинном смысле. Вы можете, как вы указали, попросить пользователя открыть документ (т. е. PDF), и windows попытается использовать приложение по умолчанию для этого типа файлов. Многие приложения имеют способ сделать это.
например, вы можете сохранить соединения RDP как a .RDP-файл. Размещение ссылки на вашем сайте на что-то подобное должно позволить пользователю запустить прямо в сеанс RDP:
мы используем SonicWall vpn. Он запускает Java-апплет, который запускает mstc со всеми настройками учетных данных. Вы действительно не можете сделать это без Java-апплета или плагина activex.
Microsoft использует этот метод сам на своем сервере малого бизнеса для входа в сеть. Я бы не сказал, что это ужасная идея, пока независимость платформы не важна.
Я достиг того же самого, используя локальный веб-сервер и PHP. Я использовал скрипт, содержащий shell_exec для запуска приложения локально.
кроме того, вы можете сделать что-то вроде этого:
вы можете использовать SilverLight для запуска приложения из браузера (это будет работать только на IE и Firefox, более новые версии chrome не поддерживают это)
некоторые приложения запускаются по протоколам. как itunes со ссылками" itms://". Однако я не знаю, как вы можете зарегистрировать это в windows.
Это внутреннее веб-приложение, где мы хотели бы, чтобы веб-страницы содержали ссылки на несколько утилит, которые Win32 EXE. Мы доверяем бывшим и производим их. (не волнует, если он спрашивает, нормально ли его запускать или сохранять). Я попробовал прямую ссылку (например, C:notepad.exe), который работает только локально. (Это будет доля в сети). Пробовал файл:// / и не работал. IE7-это необходимый браузер.
Как насчет чего-то вроде:
это предполагает, что exe находится где - то вы знаете на компьютере пользователя:
- он загружает файл js
- в windows: файл js определяет, установлен ли iTunes на компьютере или нет: ищет компонент браузера activeX, если IE, или плагин браузера, если FF
- если iTunes установлен, то браузер перенаправляется на URL-адрес с специальный транспорт: itms://.
- браузер вызывает обработчик (предоставленный iTunes exe). Это включает в себя запуск exe, если он еще не запущен.
- iTunes exe использует остальную часть специального url-адреса для отображения определенной страницы пользователю.
обратите внимание, что exe, при установке, установлены обработчики протокола URL для транспорта "itms" с браузерами.
не простой инженерный проект дублировать, но определенно выполнимо. Если вы идите вперед с этим, пожалуйста, рассмотреть вопрос о создании соответствующего программного обеспечения с открытым исходным кодом.
затем вы можете написать html для тестирования
веб-страница будет содержать ссылки с параметрами, которые приведут к открытию программы registerd и любым параметрам, указанным в ссылке, передаваемой ей. Есть хороший описание как это сделать на MSDN
вы говорите, что у вас возникли проблемы с вставкой на веб-страницу ссылки на файл, который имеет .расширением exe?
альтернативой, конечно, является динамическая запись содержимого файла непосредственно в Ответ.Клиенту OutputStream. Так тебе это не понадобится .exe должен быть в вашем docroot, но это не прямая ссылка для загрузки. В этом случае файл может быть загружен нажатием кнопки.
что-то вроде этого:
Response.Clear(); string FullPathFilename = "\\server\share\CorpApp1.exe"; string archiveName= System.IO.Path.GetFileName(FullPathFilename); Response.ContentType = "application/octet-stream"; Response.AddHeader("content-disposition", "filename postinfo clearfix">
вы также можете использовать в JavaScript.
или вы можете зарегистрировать приложение в обрабатывать новый веб-протокол вы можете определить. Это также может быть " выбор приложения" таким образом, каждый раз, когда приложение нажимается, оно будет ссылаться на страницу вашего нового протокола, вся обработка этого протокола затем передается вашему "приложению выбора", которое использует аргументы для поиска и запуска приложения на ПК клиентов.
прежде всего, мой вопрос очень похож на этой, этой и этой. Документация Android для того, что я пытаюсь достичь, - это здесь. Я не мог заставить это работать с помощью этих ресурсов, поэтому, пожалуйста, не отмечайте это как дубликат, поскольку это не так.
Я знаю, что Chrome позволяет это, открывая диалоговое окно выбора, когда пользователь переходит к этому адресу. Например, попробуйте загрузить приложение Stack Exchange и перейдем к этому вопросу в Chrome. Он покажет это:
Я добавил следующий код в AndroidManifest.xml после выполнения предложения в вышеупомянутых ответах:
кроме того, я попытался добавить android:mimeType="text/plain" в данные, но это не помогло.
Я хотел бы отметить:
- следуя документации Android, я добавил этот код внутри одной из структур активности в AndroidManifest.XML. Поскольку я не уверен, что это идеальное место для его добавления, я также попытался добавить его вне структуры приложения и непосредственно внутри структуры приложения, но это не сработало
- это единственный код, который я реализовал для этой работы. Если нужно что-то еще пожалуйста, дайте мне знать. Насколько я понимаю, добавление href на веб-страницу необходимо только при использовании пользовательских схем
- я не хочу использовать пользовательскую схему для достижения этого
- я разрабатываю на Nexus 4, под управлением Android 4.4.2 (последний)
вам нужно настроить его следующим образом:
обратите внимание, что в вашем случае вам нужно будет использовать android:pathPrefix вместо android:path.
чтобы быть уверенным, вы должны сбросить настройки для вашего приложения, если вы случайно установили его, чтобы всегда открывать ссылку в chrome, а не показывать диалог выбора. Как только "всегда" используется для открытия соответствующего uri, он никогда не покажет выбор.
во-вторых, вы можете иметь столько элементов данных в фильтре намерений, сколько хотите, но нет необходимости повторять информацию. Вы можете сделать то же самое, как это:
но обратите внимание, что для пути вы можно просто использовать подстановочный знак
подумайте о добавлении дополнительного
и, наконец, вы можете не захотеть показывать диалог выбора, но открыть конкретное намерение/действие приложения напрямую. На вашем сайте, если вы обнаружите агент пользователя android, вы можете создать ссылку url таким образом:
обратите внимание, что с помощью этого метода, если приложение не установлено, пользователь будет доставлен в Google Play store для указанного пакета приложений.
поэтому поместите этот код в AndroidManifest.в XML внутри активность
схемы -> протокол конкретного сайта
хоста-> точный url сайта с WWW
pathprefix - > sub path вашего сайта, если он доступен
вы можете искать с Chrome / и т. д. коробка'search браузер Android, как пример затем откройте выбранное диалоговое окно .
Идея запускать приложения не на компьютере пользователя, а на удаленном сервере, и транслировать изображение пользователю по сети – не нова, и давно «витает в воздухе». Согласитесь, идея хорошая: ведь для установки любого нового ПО на свой компьютер необходимо разобраться с политикой лицензирования (кому это актуально), найти дистрибутив (желательно, без вредоносного ПО внутри), установить и настроить ПО — иногда просто руки опускаются. Кроме того, подход с трансляцией ПО снимает необходимость в своем производительном «железе», что становится актуальным в свете ежегодного роста продаж планшетных компьютеров и смартфонов. Да и интернет есть повсюду в мегаполисах: слушать музыку и смотреть кино онлайн, в конце концов, все уже давно привыкли.
Вот только ни одного полнофункциональной разработки, подходящего для применения в сети Интернет до сих пор так и не видно. Мы подумали, что это никуда не годится и решили сделать ее.
Давайте поподробнее
С моей стороны будет, наверное, не совсем честным не упомянуть про вполне себе существующие, и даже неплохо себя зарекомендовавшие Citrix XenApp и Microsoft App-V. Оба продукта неплохо справляются со своей задачей в крупных организациях, но вот беда: оба решения малопригодны для публичного предоставления сервиса (то есть, для сети Интернет). Виной тому технические особенности, ведь эти системы изначально проектировались для интеграции заказчику. Причем речь идет в первую очередь о крупном бизнесе, так как среднему и малому бизнесу такие системы не по карману. Да и клиентское ПО надо ставить на пользовательские устройства, разбираться, настраивать. На практике оказывается, что не для любых устройств есть клиенты (я про планшеты. Смартфоны и вовсе не поддерживаются), несмотря на заверения дистрибьюторов. Стоит ли говорить, что попытки построения публичного сервиса на базе данных продуктов ничем хорошим не заканчивались, насколько мне известно.
А почему бы не сделать систему, способную транслировать Windows-приложения именно для глобальной сети, подумали мы?
Говоря про Windows-приложения, мы имеем в виду любое программное обеспечение, способное функционировать под управлением операционной системы Microsoft Windows. Почему взяли фокус именно на Windows-приложения? Все очень просто: Windows-приложения – это приложения для бизнеса, для работы, для учебы, приложения, которыми пользуются (и, что немаловажно, умеют пользоваться) миллиарды людей по всему миру. Количество приложений уже разработанных под Microsoft Windows, полагаю, исчисляется миллионами, что представляет собой огромный неисчерпаемый функционал, который было бы, на мой взгляд, здорово аккумулировать в одном месте.
В качестве главного критерия системы была выбрана простота понимания для конечного пользователя, чтобы даже моя мама, привыкшая работать с уже установленным и настроенным ПО на своем ноутбуке не самой последней модели, легко разобралась.
Еще одним важным критерием стало желание поддерживать различные типы современных устройств (персональные компьютеры под управлением различных OS, планшеты, мобильные устройства, современные телевизоры, поддерживающие технологию smart TV и другие). Решение напрашивалось само собой: транслировать windows-приложения надо с удаленного сервера в веб-браузеры конечных пользователей, ну или на веб-страницу, если быть более точным. Вот только как это сделать?
Реализация
- сервер доступа web-клиентов – обеспечивает взаимодействие сервера приложений с клиентами;
- сервер приложений – обеспечивает передачу событий клавиатуры и мыши приложениям, отправку изображения клиенту, изоляцию приложений друг от друга;
- сервер управления – обеспечивает управление инфраструктурой;
- файловый сервер – обеспечивает хранения пользовательских данных.
Сервер приложений является ядром и наиболее не простой частью разрабатываемой системы. Передача изображения от запущенного на сервере ПО осуществляется с помощью снятия скрин-шотов и передачей полученных кадров в режиме реального времени. Изображение разбивается на области, и пользователю передаются только изменения для экономии трафика. Изначально планировалось использовать технологию Desktop Duplication API, но так как она может дуплицировать только рабочий стол целиком, а нам нужны окна, то от нее пришлось отказаться. Модуль создания скриншотов в итоге пришлось разрабатывать самостоятельно. Для разработки кодека в качестве «образца для подражания» был принят FreeRDP WebConnect, серверную часть естественно писали сами. Для передачи событий клавиатуры и мыши приложениям имитируются события на стороне сервера с использованием функций send input.
Файловый сервер и сервер управления представляют меньше интереса, по этой причине не будем на них заострять внимание.
На данный момент бета-версия выглядит так:
И немного импрессионизма в Gimp от автора статьи
Читайте также: