Как запустить настольное приложение на стороне клиента

На моей веб-странице я должен запустить настольное приложение на клиентском компьютере, если оно установлено. Любая идея, как я могу это сделать?

Если приложение является MS Office или Adobe Reader, я знаю, как их запускать, но приложение, которое я хочу запустить, является настраиваемым приложением. Вы не можете найти его в Интернете.

Как я могу открыть приложение?

Ответ 1

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

Единственное решение, которое я нашел, - это построить расширение в Mozilla Firefox, которое может запустить ваше приложение. Расширения живут вне песочницы, чтобы они могли выполнять локальные ресурсы. См. эту страницу для того, как это сделать. Вы можете сделать это кросс-браузер, используя crossrider, хотя я еще не успел это сделать.

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

См. мой вопрос для дополнительного обсуждения.

Ответ 2

В принципе, невозможно достичь, если приложение не зарегистрирует протокол, который его вызовет. Если это так, все, что вам нужно сделать, это предоставить ссылку, используя этот протокол

yourcustomapp://some.parameters

Другим способом, которое стороннее приложение может интегрировать с браузером, является то, что он подключается к нему как к плагину. Так работают флеш-приложения и т.д.

Если приложение, которое вы пытаетесь запустить, не поддерживает что-то вроде этого, вам будет почти невозможно достичь желаемого.

Ответ 3

Прежде всего, вы не можете сделать это, используя javascript в любом виде переносного механизма.

Если приложение является офисом MS или Adobe Reader, я знаю, как их запускать

Нет, вы этого не знаете - вы знаете, как отправить документ, который браузер связывает с этими приложениями, и вызывает их, указав имя локальной копии ответа. Вы не можете просто запускать программы.

Вам просто нужно сделать то же самое для своего приложения - придумайте новый тип mime (основным типом будет "приложение", и, условно, нестандартные второстепенные типы имеют префикс "x-", поэтому вы можете использовать приложение /x -hguser), то сопоставьте этот тип с соответствующей стороной браузера программы.

i.e: вам нужно явно настроить каждый браузер

Ответ 4

Я уже сталкиваюсь с этой проблемой в некоторых сложных производственных средах.

Я делаю трюк, используя следующий код:

function launch(p_app_path)
{
   var oShell = new ActiveXObject("WScript.Shell");
   oShell.Run('"' + p_app_path + '"', 1);
}

В настройках IE > Безопасность > Настроить уровень > Элементы управления ActiveX и плагины > Инициализация и script Элементы управления ActiveX, не помеченные как безопасные для сценариев, задайте значение Ask или Active.

Это не проблема безопасности, когда ваш сайт заключен в конкретный контекст безопасности. И, как говорится, не стоит строить газовый завод.

Ответ 5

JavaScript не может этого сделать. (Нет, даже с MS Office или Adobe Reader.) К счастью.

Существует несколько старых способов, включая с помощью ActiveX, которые могут работать для ваших нужд. Как указывали другие, набрав это, вы можете настроить ответы на основе типа mime или протокола и т.д.

Как бы вы ни смотрели на это, вам понадобится контроль над браузером конечных пользователей. Если вы находитесь в близком окружении, где вы можете диктовать политику (пользователи должны использовать конкретный браузер с определенной конфигурацией), тогда вам нужно будет это сделать. Для открытой среды без контроля над конечными пользователями вам не повезло.

Ответ 6

У меня действительно есть большой успех прямо сейчас с SiteFusion. Это фреймворк PHP/клиент-сервер PHP, который обслуживает приложения XUL/JavaScript с сервера deamon, работающего в Apache. Вы получаете доступ к приложениям с очень тонкого клиента в XULRunner или потенциально с веб-страницы с помощью расширений. Клиенты могут выполняться на любой платформе, и они находятся за пределами изолированной программы браузера, поэтому вы можете обращаться к локальным ресурсам, таким как исполняемые файлы. Это довольно элегантное решение, их веб-сайт предоставляет отличные примеры и документацию, и их форум очень отзывчив. Я на самом деле обнаружил незначительную ошибку при передаче аргументов локальным исполняемым файлам, разместил вопрос о форуме, и он был исправлен главным разработчиком менее чем за 15 минут. Очень впечатляет, в целом!