C # - Process.Start приложение ClickOnce? Какой URL? - PullRequest
6 голосов
/ 13 июля 2010

Я уже 3 месяца новичок в WPF и пытаюсь создать запускаемое приложение для развлечения (тип запуска приложения - штуковина по имени).

Не получается запустить приложения ClickOnce по имени процесса.

Другими словами:

  • Process.Start ( "Firefox"); // будет работать
  • Process.Start ( "MetroTwit"); // приложение ClickOnce - НЕ будет работать

Я читал, что вы должны звонить по URL? Но где вы узнаете URL установленных приложений clickonce?

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

Помощь с благодарностью.

Ответы [ 7 ]

11 голосов
/ 14 июля 2010

Вам даже не нужно анализировать стартовые папки.Расположение этого запуска здесь:

shortcutName = 
  string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
                "\\", publisher_name, "\\", product_name, ".appref-ms");

Где publisher_name и product_name - это те, которые установлены в диалоге параметров в свойствах публикации.

5 голосов
/ 13 июля 2010

Существует два типа приложений ClickOnce (устанавливаемых при публикации приложения): те, которые установлены в меню «Пуск», и те, которые можно запускать только с веб-адреса.

Приложения, установленные в меню «Пуск», можно найти (как ни удивительно) в папке меню «Пуск», они имеют специальный тип ярлыков с расширением APPREF-MS.

Вы можете использовать Process.Start для запуска файла APPREF-MS.

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

3 голосов
/ 13 июля 2010

Process.Start эквивалентно выполнению «Пуск», «Выполнить» и вводу там некоторого текста. Вы должны ввести исполняемый файл, который можно найти с помощью переменной среды PATH, или указать URL-адрес, указывающий на файл приложения, который вы хотите запустить. Например. http://publish.url.com/publish/myapp.application.

Надеюсь, это поможет!

2 голосов
/ 13 июля 2010

Чтобы добавить к ответу @ Kieren: причина того, что Process.Start("Firefox") работает, заключается в том, что Firefox устанавливает себя в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe в реестре.

1 голос
/ 13 июля 2010

URL, который вы ищете, является URL, используемым для установки.Да, это звучит странно.ClickOnce немного странно.К сожалению, ClickOnce не устанавливается в папку Program Files, а зарывается в пользовательскую папку AppData.В зависимости от того, установлены ли вы через Интернет или через опцию CD / DVD, и определите, насколько легко это решить.Удачи!

0 голосов
/ 04 апреля 2018

Имхо, лучший способ это:

Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + ApplicationURL); 
0 голосов
/ 13 октября 2015

Вот как запустить приложение clickonce, и оно работает каждый раз.

System.Diagnostics.Process.Start("http://webinstalls.somecompany.com/LApproval/StartApproval.application");
...