2010-07-13 34 views
6

Tengo 3 meses de experiencia en WPF y trato de crear una aplicación de lanzamiento para divertirme (tipo de iniciador de aplicaciones por nombre).C# - Proceso. ¿Iniciar una aplicación ClickOnce? ¿Qué URL?

Parece que no puedo iniciar las aplicaciones ClickOnce por Nombre del proceso.

En otras palabras:

  • Process.Start ("Firefox"); // funcionará
  • Process.Start ("MetroTwit"); // una aplicación ClickOnce - NO funcionará

¿He leído que debería llamar por URL? Pero, ¿dónde se encuentra la URL de las aplicaciones clickonce instaladas?

Lo ideal sería que me gustaría actualizar una lista de aplicaciones instaladas en el sistema del usuario (archivos de programa ClickOnce & & clientes aire) cada minuto más o menos y hacer búsqueda difusa de tipo, etc.

Ayuda muy apreciada.

Respuesta

4

Hay dos tipos de aplicaciones ClickOnce (establecidas al publicar la aplicación) las que están instaladas en el menú de inicio y las que solo se pueden ejecutar desde la url web.

Las aplicaciones que están instaladas en el menú de inicio se pueden encontrar (sorprendentemente) en la carpeta del menú Inicio, tienen un tipo especial de atajo con la extensión APPREF-MS.

Puede usar Process.Start para ejecutar el archivo APPREF-MS.

Aplicación que está configurada para ejecutarse solo desde la url web, bueno, debe ejecutarlas desde la url web.

+0

Esto es fantástico, estaba analizando las diferentes aplicaciones registradas de "desinstalación" en el registro ... No es divertido ... Pero tu camino es mucho más simple. Simplemente analice el contenido de los 2 menús de inicio (local/global), busque los archivos .lnk y .appref-ms. Y puedo procesar Process.Start (@ "C: \ ... App.APPREF-MS") - ¡Gracias! – keyle

3

Process.Start es equivalente a hacer Inicio, Ejecutar ... y luego ingresar texto allí. Debe ingresar un ejecutable que se puede encontrar utilizando la variable de entorno PATH o puede especificar la URL que apunta al archivo .application que desea ejecutar. P.ej. http://publish.url.com/publish/myapp.application.

Espero que ayude!

+0

Entonces, ¿dónde encuentras las URL de la aplicación clickonce ya instalada en C#? ejército de reserva. – keyle

+1

La URL es la URL de implementación: hasta donde sé, no hay forma de enumerar la lista de aplicaciones ClickOnce. Vea aquí para un debate http://www.windowsdevelop.com/clickonce-setup--deployment-projects/how-can-i-get-a-list-of-clickonce-installed-programs-on-a-given- client-2342.shtml –

+0

Gracias por eso. Eso significa que no hay forma de que pueda construir un iniciador de aplicaciones confiable que incluya aplicaciones ClickOnce ... Mmm. – keyle

1

La URL que está buscando es la URL utilizada para la instalación. Sí, suena extraño. ClickOnce es un poco extraño. Desafortunadamente, ClickOnce no se instala en la carpeta Archivos de programa, sino que se graba en una Carpeta de datos de aplicación de los usuarios. Dependiendo de si instaló a través de la web o mediante la opción de CD/DVD y determinará qué tan fácil es resolver esto. ¡Buena suerte!

+0

Solo puede obtener la URL de instalación si la aplicación está solo en línea. – RobinDotNet

1

Para agregar a la respuesta de @Kieren: el motivo por el cual Process.Start("Firefox") funciona es que Firefox se instala en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe en el registro.

11

Ni siquiera necesita analizar las carpetas de inicio. La ubicación de una puesta en marcha está aquí:

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

Dónde PUBLISHER_NAME y product_name son los establecidos en el cuadro de diálogo Opciones en las propiedades de publicar.

+0

bien hecho y explicado! – amok

+0

También agregué comillas dobles antes y después; string.Concat ("\" ", Environment.GetFolderPath (....)," .appref-ms "," \ ""); – Ads

-2

Aquí se muestra cómo iniciar una aplicación de clic y funciona siempre.

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