Найти запущенное приложение, развернутое по одному клику? - PullRequest
4 голосов
/ 03 октября 2008

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

Мое приложение вызывается веб-приложением, которое передает параметры в этот исполняемый файл. Теперь проблема в том, что, если приложение уже запущено, потребуется довольно много времени, пока новый экземпляр не запустится, параметры не будут переданы работающему экземпляру и закрыты (с открытием URL, проверкой обновлений, .).

Так есть ли способ обнаружить, что есть запущенный экземпляр, без введения нового небольшого приложения, которое выполняет это обнаружение?

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

Ответы [ 4 ]

1 голос
/ 06 октября 2008

Нет, это не фоновое приложение. Веб-приложение и приложение Winforms работают с похожим подмножеством базы данных. Я стараюсь не вдаваться в подробности, потому что это не важно для вопроса, но чтобы сделать его более понятным: с помощью веб-приложения пользователи создают метаданные для нашего бизнес-кейса, а с приложением Winforms пользователи делают их конкретная работа.

Таким образом, с помощью этой ссылки можно создать новый набор метаданных и перепроверить результат в «рабочем приложении».

Итак, есть 2 конкретных сценария:

  1. Winforms-приложение не работает на клиенте: когда пользователи нажимают на элемент меню «Пуск», запускаемый нажатием одной кнопки, или на ссылку в веб-приложении, все должно быть сделано так, как сейчас (с обновлением проверять, ....). Так что этот сценарий работает для меня.

  2. Приложение Winforms-App работает на клиенте: запущенный экземпляр должен отображать новый набор метаданных как можно быстрее, без какой-либо проверки обновления одним щелчком мыши или чего-либо еще. В этом сценарии я пытаюсь обойти, что всплывает диалоговое окно «запуск приложения по клику», запускается новый экземпляр приложения, новый экземпляр передает параметры запущенному экземпляру и сам закрывается. Поэтому я искал решение, в котором я добился бы этого, не создавая нового небольшого exe-файла, известного в веб-приложении, который выполняет эту работу.

1 голос
/ 03 октября 2008

При настройке параметров развертывания вы можете указать VS разрешать обновлять приложение только каждые x раз (раз в день, неделю и т. Д.). Вы также можете сказать ему, чтобы запустить приложение и обновить в фоновом режиме. Думаю, и то и другое решит ваши проблемы самостоятельно.

Настройки находятся в настройках Projects, на вкладке Publish. Нажмите кнопку «Обновить» в разделе «Режим установки и настройки» и установите соответствующие настройки.

0 голосов
/ 05 октября 2008

Это кажется интересным использованием технологии Click-Once. У меня сложилось впечатление, что Click-Once идеально подходит для распространения клиента приложения на нескольких компьютерах конечного пользователя на предприятии.

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

У меня есть следующие вопросы:

  • Как ваше веб-приложение передает параметры запущенному экземпляру, если веб-приложение может его обнаружить? (например .NET Remoting?)
  • Какова причина распространения этого фонового приложения с помощью Click-Once (в отличие от установщика Windows)?

Знание этого может помочь решить вашу проблему.

0 голосов
/ 03 октября 2008

Мне кажется, я не совсем понял, чего я пытаюсь достичь.

То, что я пытаюсь сделать, - это если запущен экземпляр, обращающийся к нему напрямую, без запуска URL-адреса clickonce. Я ищу решение, в котором мне не нужно писать небольшую программу (которая также должна быть развернута, ...), которая проверяет, работает ли приложение, если да, передает параметры, если не запускает URL клика.

Фоновое обновление на самом деле не вариант, потому что этот экран «подключения к приложению» все еще существует и отнимает много времени, и обязательно, чтобы каждый пользователь запускал каждый раз самую последнюю версию приложения.

...