¿Debería preocuparme por redistribuir .NET runtime con mi aplicación?
-
20-08-2019 - |
Pregunta
Me gustaría evitar redistribuir .NET runtime si es posible con mi aplicación, ya que aumentará el tamaño de la aplicación, el tiempo de descarga, el tiempo de desarrollo & amp; posiblemente introducirá muchos errores de implementación diferentes. ¿Microsoft obliga a los usuarios a actualizar .NET runtime a través de la actualización de Windows? Si no, ¿cuáles son algunas de las opciones para redistribuir .NET runtime? ¿Microsoft ha hecho que sea más fácil redistribuir el tiempo de ejecución con las aplicaciones .NET? Además, ¿se garantiza que el tiempo de ejecución de .NET sea compatible con versiones anteriores?
Solo estoy resumiendo las respuestas aquí. Parece que tenemos que tener un programa de arranque para al menos verificar la existencia del tiempo de ejecución de .NET. La opción alternativa es empaquetar el tiempo de ejecución e implementarlo si no existe. Hay múltiples opciones para empaquetar & Amp; Visual Studio proporciona una opción para construir un proyecto de instalador con el tiempo de ejecución. También hay otras opciones de empaque como InnoSetup, WIX, etc. (no estoy seguro de qué opción es mejor y gratuita). La instalación en tiempo de ejecución requiere un reinicio y la opción de instalación elegida debería reanudar la instalación de la aplicación después del reinicio.
Solución
Además, debería preocuparse por eso. Sin el tiempo de ejecución, su aplicación no funcionará misteriosamente. Nunca debe suponer que alguna versión particular del tiempo de ejecución está preinstalada.
Como se señaló anteriormente, el asistente de instalación del proyecto en VS creará un archivo de configuración que solo lo descargará si es necesario. NSIS e Inno Setup tienen scripts que harán lo mismo. Tenga en cuenta que tendrá que manejar la configuración de reinicio y continuación cuando instale el tiempo de ejecución. Creo que el asistente de instalación maneja esto por usted.
Otros consejos
Simplemente haga un proyecto de Windows Installer. Debe tener esto como una opción en VS2005 y VS2008. Al instalar su aplicación, se asegurará de que el sistema tenga el tiempo de ejecución de .NET y cualquier otro software requerido. Esto lo agregará a su paquete de instalación, no a su aplicación. Por lo general, así es como instala sus aplicaciones o utiliza Install Shield.
texto alternativo http://img154.imageshack.us/img154/2066/newprojectr .png
Cuando crea su paquete de instalación, solo instalará el tiempo de ejecución si es necesario. es decir, aún no está en el sistema (o versión incorrecta)
Editar: Sí, deberías crear este paquete, te hace la vida mucho más fácil para esto. La forma en que haría esto en VS es File - & Gt; Project y seleccione intstaller project. El asistente lo guiará a través de las opciones.
Usando un programa de arranque de algún tipo, puede verificar si .NET está instalado y luego descargarlo si es necesario.
Por ejemplo, con el MSI Factory bootstrapper (no estoy abogando por MSI Factory, es un programa feo. Pero el programa de arranque con el que viene vale la pena el costo de la licencia si está desarrollando un software comercial como nosotros) hay scripts que simplemente puede incluir para realizar esta función. Estamos usando WiX + el programa de arranque de MSI Factory para distribuir tanto un solo EXE comprimido (30Mb) como un pequeño
Básicamente tienes lo siguiente:
- Windows XP: no se incluye con .NET. El cliente debe instalarlo manualmente (aparece como un componente opcional de Windows Update)
- Vista: se entrega con .NET 2.0 (pero no 1.1)
- Server 2003 - se entrega con .NET 1.1
Ignora .NET 1.1, simplemente ignóralo. Los usuarios de Vista y más allá solo lo tendrán instalado para el soporte de aplicaciones heredadas, o si son desarrolladores.
.NET 2.0 es la versión más comúnmente instalada, desde nuestra base de usuarios hemos encontrado que menos del 10% de los usuarios tienen instalado .NET 3.5. Si su aplicación está dirigida a una audiencia técnica y geek, diría que ~ 50% de las personas tendrán .NET 3.0. Si se dirige a un mercado de consumo / minorista / no tecnológico, probablemente pueda estimar alrededor del 30% con .NET 2.0 y el 10% con .NET 3.0 o superior.
Las cifras anteriores se basan en el tráfico del navegador a nuestros sitios web, una audiencia en su mayoría no técnica. Esta es probablemente la mejor manera de tener una idea para su mercado. IE siempre informa la versión .NET en la cadena de agente de usuario, así que separe los weblogs y comience a analizar :)
Depende. Donde trabajo, lo incluimos en el instalador como requisito previo porque tenemos algunos clientes que pueden no tener una conexión a Internet para descargar el tiempo de ejecución.
Algunas cosas que puede hacer:
- Incluya una prueba para la versión de .NET en la máquina de destino y salga de la instalación si no está allí.
- Cree una versión de la instalación que incluya el tiempo de ejecución .NET y la instalará si es necesario.
- Cree una versión de la instalación que descargará el tiempo de ejecución de .NET e instálela si es necesario.
Si supiera que todos mis clientes están en línea, haría la opción 3 para .NET, así como cualquier otro requisito previo como Crystal Reports o SQL Express. Tengo instalaciones donde tengo eso incluido y la instalación supera los 100 MB. Más de 70 MB son requisitos previos.