2009-02-04 15 views
9

Cuando instala una aplicación ClickOnce, el programa se ejecuta después de la instalación. ¿Es posible instalar sin ejecutar?Instale ClickOnce sin ejecutar

Sé que puedo usar un proyecto de configuración e implementación y crear un instalador, pero preferiría usar ClickOnce.

+0

También me gustaría entender por qué ejecuta la aplicación durante la instalación. He preguntado aquí: http://stackoverflow.com/questions/19735193/why-does-the-clickonce-deployment-installer-run-the-application-during-installat – Xonatron

Respuesta

4

Supongo que podría fingirlo. Introduzca una propiedad booleana "IsInstalled", predeterminada en falso. Luego, en Program.cs, cambiar su método Main() para tener este aspecto:

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

    if (!Properties.Settings.Default.IsInstalled) 
    { 
     Properties.Settings.Default.IsInstalled = true; 
     Properties.Settings.Default.Save(); 

     MessageBox.Show("Install Complete"); 
     return; 
    } 

    Application.Run(new Form1()); 
} 

Así que ahora cuando la aplicación se instala por primera vez, se comprueba que la propiedad y simplemente muestra un mensaje al usuario y luego se cierra.

Si quieres complicarte, puedes analizar el URI de activación para la implementación y tener un parámetro URI que especifica si el programa se debe ejecutar cuando se instala por primera vez o simplemente se cierra silenciosamente.

+1

¿Por qué ejecuta la aplicación en primer lugar? – Xonatron

+0

También ha votado negativamente esta solución solo a la luz de la solución oficial de Magnus (que usa MageUI.exe). – Xonatron

8

Para deshabilitar el inicio automático después de instalar, sólo tiene que desactivar la activación de URL como se explica en el artículo de MSDN How to: Disable URL Activation of ClickOnce Applications (utilizando la herramienta MageUI.exe).

Para desactivar la activación de URL para su aplicación

  • Seleccione la pestaña Opciones de implementación.

  • Desactive la aplicación Ejecutar automáticamente después de instalar la casilla de verificación.

  • Guarde y firme el manifiesto.

+0

Intenté esto y veo que es una solución oficial, pero aún ejecuta mi aplicación. Alguien más tiene este problema? – Xonatron

+0

No encuentro "Ejecutar aplicación automáticamente" ... ¿dónde está? –

0

Usted puede hacer esto mediante la edición del manifiesto de aplicación en Mage. Hay una casilla de verificación para detener la ejecución de la aplicación después de la instalación.

Si no se siente cómodo al editar manualmente un manifiesto o con Mage, puede usar la clase de implementación incorporada para comprobar si es la primera vez que se ejecuta la aplicación.

using System.Deployment.Application 

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

    if (ApplicationDeployment.CurrentDeployment.IsFirstRun) 
    { 
     MessageBox.Show("Install Complete"); 
     return; 
    } 

    Application.Run(new Form1()); 
} 
+2

'IsFirstRun' es verdadero siempre que actualice su aplicación – prostynick