Pregunta

Tengo varias aplicaciones .NET Windows Forms que estoy preparando para convertirlas en un ClickOnce / escenario de implementación de cliente inteligente. He leído los tutoriales que no son geniales, pero ¿hay trampas o "trampas"? que debo tener en cuenta?

Hay varias aplicaciones menores que se usan de vez en cuando, pero la aplicación principal está en C #, se ejecuta 24/7, es bastante grande, pero solo cambia cada pocas semanas. También escribe en un archivo de registro localmente y habla con dispositivos de hardware locales.

¿Fue útil?

Solución

Aquí hay algunos que conozco.

  1. No se puede poner un icono en el escritorio. Ahora se puede.

  2. No puedo instalar para todos los usuarios.

  3. Necesito saltar a través de aros para mover la implementación a un servidor diferente. No es un problema si está desarrollando internamente, y los usuarios pueden ver el servidor en el que está publicando o si está implementando en la web pública, pero no es excelente si necesita implementar en múltiples sitios de clientes de forma independiente.

  4. Dado que .NET 3.5 SP1 no necesita firmar el despliegue manifiesto ya que hace que sea mucho más fácil mover implementaciones a nuevos servidores.

  5. No puedo instalar ensamblajes en el GAC . Puede solucionar esto creando paquetes de instalación regulares que son requisitos previos de la aplicación ClickOnce.

Otros consejos

  • Cuando se implementan las actualizaciones, el cuadro de diálogo incorporado hará que parezca que se está volviendo a descargar toda la aplicación. De hecho, solo se descargan las DLL modificadas y la barra de progreso que se muestra es engañosa / incorrecta. No pierda el tiempo tratando de descubrir por qué todos los ensamblajes se vuelven a implementar solo para descubrir que en realidad no lo son. No es que haya hecho eso ni nada.
  • Cuando el certificado que usó para firmar el manifiesto de implementación original caduca y se le emite uno nuevo, se encontrará con un mundo de daños (todos los clientes deberán desinstalar y reinstalar). Los detalles están en la boca del caballo .

La mayoría de los problemas se han solucionado, pero varias personas mencionaron que no podían crear un acceso directo de escritorio. De hecho, usted < em> can crea un acceso directo de escritorio con Visual & nbsp; Studio & nbsp; 2008 SP1 .

Además, si no está utilizando la última versión de Visual Studio, siempre puede escribir código para crear un acceso directo al acceso directo del menú de inicio instalado .

Teníamos una aplicación que íbamos a implementar como una aplicación ClickOnce. Necesitábamos que el usuario pudiera modificar algunas configuraciones en la instalación (como la ruta de implementación; TI quiere servir los archivos de su recurso compartido de red, no conocidos en el momento de la compilación). Cuando cambia cualquiera de los archivos en su implementación, debe volver a calcular todos los hashes y volver a firmar todo. Por lo tanto, si esta solución es interna, es posible que no tenga problemas para pasar un certificado de firma, pero si es para clientes, deberá diseñar una solución elegante para evitar este problema.

He escuchado rumores en algún lugar dentro de las entrañas de Internet que una versión futura de ClickOnce eliminará parte de este dolor de cabeza.

No puede desinstalar silenciosamente las aplicaciones implementadas de ClickOnce. También creo que es imposible agregar parámetros al acceso directo de inicio.

Una de las dificultades con ClickOnce es el hecho de que no puede instalar en GAC . Este es un problema si desea instalar varias aplicaciones que comparten archivos DLL. Cada aplicación requerirá una copia local de los archivos DLL. Además, las instalaciones de múltiples usuarios están fuera. Consulte la lista que compara Window Installer con ClickOnce .

En caso de que alguien se refiera a esto en una búsqueda, hemos encontrado que muchos clientes preocupados por la falta de seguridad 'distribuyen' su aplicación. La aplicación debe estar disponible en una ubicación pública, sin ninguna autenticación, para que pueda buscar actualizaciones. La única excepción es si tiene autenticación de Windows NT. Creo que Asegurar aplicaciones ClickOnce explica qué Quiero decir.

Los iconos de escritorio son bastante triviales para hacer mediante código, y como se mencionó, con 3.5 SP1 , horneado, por lo que ya no es un problema.

Todavía hay un error no corregido con xmlSerializer; en algunos casos, no se implementa correctamente. Una solución fácil es agregar manualmente este archivo a la implementación. PITA, pero es bastante fácil ... Sin embargo, puede ser impactante cuando su implementación falla repentinamente ...

Hay muchas cosas que no puede hacer con las aplicaciones ClickOnce, como instalar un acceso directo en el escritorio del usuario o decir algo sobre dónde se instala la aplicación. Para algunas personas, estos son acuerdos decisivos.

También ha pasado un tiempo desde que lo usé, pero hay una forma especial que puede usar para descubrir y mostrar el número de versión / compilación de ClickOnce, que es independiente del número de versión / compilación de la aplicación. Debe hacer un intento / captura y si el número de versión / compilación de ClickOnce arroja una excepción, entonces la aplicación no se está ejecutando como una aplicación implementada por ClickOnce (es decir, se está ejecutando como una aplicación compilada regularmente o desde Visual Studio).

Para una aplicación que sea simple (es decir, no Microsoft Word , sino más bien un aplicación rápida y sucia para hacer algo) y necesita mucha implementación regular, ClickOnce es excelente. Pero rápidamente golpeas el muro de '' oh, esto no puede ser hecho por ClickOnce, por favor elige MSI u otra cosa).

Tendrá menos acceso al sistema que su aplicación .NET normal.

Eso es porque obtendrás un nivel de confianza más bajo. Más información al respecto en .NET Framework Developer's Guide: ClickOnce Deployment and Security .

Mi mayor problema con eso fue que no es posible encriptar secciones de su archivo de configuración con la clave de la máquina, porque no tiene acceso a esa clave (cuando lo piensa, tiene sentido proteger esa clave) .

No sabía que SP1 le permitía crear el icono del escritorio.
Así es como lo hemos estado haciendo (ahora conocido como " la forma difícil "):

try
{
    string company = string.Empty;
    string product = string.Empty;
    if (Attribute.IsDefined(asm, typeof(AssemblyCompanyAttribute)))
    {
        AssemblyCompanyAttribute asCompany = (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyCompanyAttribute));
        company = asCompany.Company;
    }
    if (Attribute.IsDefined(asm, typeof(AssemblyProductAttribute)))
    {
        AssemblyProductAttribute asProduct = (AssemblyProductAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyProductAttribute));
        product = asProduct.Product;
    }
    if (!string.IsNullOrEmpty(company) && !string.IsNullOrEmpty(product))
    {
        string desktopPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
            product + ".appref-ms");
        string shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
            Path.Combine(company, product + ".appref-ms"));
        File.Copy(shortcutPath, desktopPath, true);
    }
}
catch 
{
    // Shortcut could not be created
}

No puede instalar si el cliente está detrás de un proxy que requiere autenticación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top