2012-04-16 17 views
6

Estoy desarrollando una aplicación de código abierto C#. Por un tiempo, he estado usando un instalador .NET básico que codifiqué a mí mismo. Sin embargo, con un cambio reciente, ya no es práctico para mí, ya que tendría que agregar una gran cantidad de archivos al instalador, y pueden cambiar con cada versión. Un archivo ZIP tampoco es práctico.Instalador para la aplicación C#

He hecho algunas comprobaciones en línea, veo una gran cantidad de MSI, ClickOnce, ZIPs autoextraíbles, y (lo más prometedor) el sistema NSIS. Ninguno de ellos parece ajustarse exactamente a mis necesidades, entonces estoy buscando consejos sobre qué sistema usar.

La instalación real de mi programa es muy simple. Básicamente, solo necesito copiar el directorio bin \ Release (y todos los subdires) a la computadora del cliente. He estado logrando esto algo ad-hoc, incrustando cada archivo en mi instalador de .NET, y manteniendo una tabla de archivos de qué va donde.

Desafortunadamente, acabo de localizar mi aplicación. Ahora tengo más de 30 archivos .resx (que están compilados en dlls y colocados en más subdirectorios por Visual Studio) y, obviamente, no es práctico agregar más de 30 carpetas y archivos DLL a mi instalador. De ahí por qué estoy en esta búsqueda.

También hay algunos otros requisitos:

  • El instalador debe buscar en los directorios predefinidos para un .exe especificado. (Mi aplicación está diseñada para ser un reemplazo). Si no se encuentra .exe, debe solicitar su ubicación
  • El instalador debe verificar que exista "OldApp.exe.bak". De lo contrario, debería cambiar el nombre de "OldApp.exe" a "OldApp.exe.bak"
  • El instalador debería actualizar los archivos. Es decir, si "Culture.de.dll" no ha cambiado, el instalador lo dejará en paz.
  • El instalador debería funcionar con todas las versiones de Windows de todos los .NET IDEs (VS, SharpDevelop, Mono, ect) pero no necesita trabajar en otras plataformas.
  • Cuando construyo la solución, el instalador debe regenerarse automáticamente. En otras palabras, debe poder ejecutarse mediante la sección "Publicación posterior".
  • La generación del instalador debe poder agregarse a un repositorio de código fuente. Esto es para que cualquiera que descargue la fuente de mi aplicación también pueda compilar el instalador.

Lo siento por la larga publicación, pensé que era mejor publicar más que menos.

+0

¿Cuál es el nombre/url de su aplicación opensource? –

Respuesta

5

Recomendaría SharpSetup. Combina WiX y C# para una implementación bastante flexible. No he encontrado mucho que no pueda lograr.

+0

Fui con este porque combina WIX con otras características. Muy útil :) – Xcelled194

2

Utilizamos WIX ampliamente: http://wix.codeplex.com/

Puede que tenga que personalizar sus instaladores con algunas rutinas de salida para hacer cosas fuera de lo normal, pero hay ganchos en el marco instalador de Windows que le permiten hacer eso.

Puede poner estos archivos de definición (XML) en su control de origen, y puede configurar una compilación para ejecutar la instalación. Sin embargo, cualquiera que obtenga su fuente necesitaría tener instaladas las utilidades WIX.

1

WIX es una buena idea. De acuerdo con Wikipedia, es utilizado por Microsoft para producir instaladores para algunos de sus propios productos.

1

Recomendaría NSIS.Desde mi experiencia, todas las características del instalador que he requerido han sido cubiertas en la documentación de NSIS o en ejemplos de la comunidad. No puedo comentar sobre la integración de NSIS con Visual Studio porque utilizo NSIS integrado con mi servidor de compilación Jenkins. Parece que hay un Complemento de Visual Studio gratuito llamado Visual & Installer que proporciona integración de NSIS con Visual Studio. No lo he usado personalmente, pero parece que actualmente se está desarrollando activamente, por lo que vale la pena echarle un vistazo.

Cuestiones relacionadas