2012-04-06 11 views
8

He intentado recientemente implementar una aplicación C# en una computadora que no tiene .NET instalado.Empaquetado de una aplicación .NET para que se ejecute en una computadora sin .NET

Sé que ha habido muchas preguntas sobre el mismo tema aquí en StackOverflow. Aquí están algunos de ellos, de los cuales he leído las respuestas a todos:

Packaging up the .net framework with a .net application deployment

Run a .net application without installing .net client profile?

Run C# windows application in windows XP without installing .NET Framework

Así que todas las respuestas a las preguntas anteriores sostienen que resulta imposible sin software específico, etc. Un software mencionado fue el Salamander .NET Linker. El único problema con eso es que parece que no puedo ejecutar la aplicación después de que haya sido procesada por Salamender. Entiendo que esto en sí mismo es imposible, ya que requiere la ejecución de la máquina virtual .NET. Sin embargo, en el pasado, he hecho aplicaciones Java y, junto con ellas, he enviado toda la JVM. Sorprendentemente, todavía funcionaban. Entonces la razón por la que esto no es un duplicado de las preguntas anteriores es porque mi verdadera pregunta es:

¿Qué elementos del framework .NET necesitaría empaquetar? Si logro empaquetar todo, ¿colocarlos en el mismo directorio que la aplicación que estoy ejecutando permite que la aplicación se ejecute?

Encontré una solución para esto, el Microsoft .NET Redist Package. El único problema con esto es que tiene una GUI propia. Aparte de eso, sería un ajuste perfecto. Entonces, ¿alguien podría decirme una de estas dos cosas:

¿Hay un paquete .NET de línea de comandos y, de ser así, dónde lo descargo?

Si no hay, o no sería práctico hacerlo, aproximadamente qué directorios necesitaría copiar desde las instalaciones .NET?

Entiendo que estos archivos y directorios son específicos del sistema, y ​​que mi instalación de .NET puede no funcionar en su computadora, pero si C# es como Java, entonces esto debería ser posible. ¿Lo es? El tamaño no es una limitación, no me importa si la aplicación y todos sus archivos son de 1 GB o si solo es de 1 MB.

Si en caso de que no haya otra solución, utilicé Dependency Walker para verificar todas las dependencias de mi programa. Si tuviera que empaquetar la mayoría de ellos, ¿mi aplicación, en teoría, funcionaría?

+0

Estos enlazadores estáticos son una idea terrible. Su aplicación no se beneficiará de las correcciones de seguridad y otras mejoras (al igual que Windows Update). –

Respuesta

12

Para .NET, realmente debe simplemente instale el .NET framework apropiado. La instalación de .NET framework Qué incluye opciones de línea de comandos para permitir instalaciones silenciosas, tales como:

dotnetfx35.exe /q /norestart 

Para más detalles sobre las opciones de línea de comandos, consulte la options for 3.5 y para .NET 4.0.

Dicho esto, la mayoría de los paquetes de instalación manejarán estos detalles para usted como parte de la instalación. El uso de un instalador decente se ocupará de esta dependencia automáticamente.

+0

¡Funciona a la perfección! ¡Gracias por la ayuda! – Xyene

+0

¿Hay algún comando para que se muestre cuánto ha instalado, en un formato como un porcentaje, o extracción de archivos actuales ... etc.? Revisé las opciones para el enlace 3.5 que publicó, pero no encontré nada entre esas líneas allí. – Xyene

+0

¿Primero no quiere una GUI y ahora lo hace? –

8

Dependiendo de las piezas de .NET Framework que necesite, puede usar Mono.Admite enviar el tiempo de ejecución sin instalarlo como lo haría con una JVM, o puede enlazar estáticamente con los binarios para crear un ejecutable nativo.

2

Si planea implementar su aplicación (y suponiendo que el proceso de instalación no necesita ser demasiado complejo), simplemente puede crear un Setup project in Visual Studio y luego cargar los requisitos previos (.NET framework, y otras cosas que crea que podria necesitar).

Puede seguir los pasos descritos en estos artículos de MSDN:

Un tutorial se da en this CodeProject article.

Para escenarios de implementación más complejos (como la instalación de controladores de dispositivo a lo largo de su aplicación, o mejor soporte de localización), recomendaría buscar en WiX (Windows Installer XML) toolset. Es un conjunto de herramientas que crea paquetes de instalación de Windows, que configura utilizando archivos XML dentro de Visual Studio. WiX también es compatible con varios bootstrapping scenarios.

This page cubre las diferencias entre los proyectos de configuración VS, WiX e InstallShield.

Cuestiones relacionadas