2008-09-16 15 views
11

Estoy desarrollando una aplicación .NET WinForms que se basa en user.config para almacenar varias configuraciones útiles, como las URL del servicio web de intranet. Nos gustaría hacer posible la importación de configuraciones iniciales personalizadas como parte de la instalación. El caso de uso para esto es si una empresa tiene 100 máquinas en las que desean instalar el software, y todas deben tener una referencia al servicio web de intranet en cuestión, esto no debería ser necesario configurarlo manualmente en todas las máquinas.Inicializando user.config o app.exe.config durante la instalación

Actualmente estamos utilizando un proyecto de instalación VS2008 para generar el paquete de instalación.

Nuestra idea hasta ahora ha sido permitir al instalador crear un archivo .config inicial personalizado con la información (desde una plantilla), y luego ponerlo en su lugar en lugar del predeterminado que instala el proyecto de instalación.

Sin embargo, no puedo ver una manera de hacer esto aparte de estos pocos:

  1. codificar el nombre del ejecutable en una acción instalador personalizado (que deriva de System.Configuration.Install.Installer), con el fin utilizar la clase ConfigurationManager para determinar la ruta del archivo .config. Esto requeriría cambios manuales en el instalador si el nombre del ejecutable cambia.
  2. Haga rodar nuestras propias clases de configuración o jerarquía de archivos/carpetas para almacenar las configuraciones. Esto básicamente nos excluiría de las ventajas del mecanismo de aislamiento (que también es el obstáculo aquí) que proporciona .NET, si entiendo correctamente.

¿Alguien sabe de alguna alternativa, o de las formas de hacer que las dos anteriores sean apetecibles?

Me temo que la respuesta puede ser "no hagas esto, derrota el espíritu del mecanismo, transfiere tu propio mecanismo de importación de configuraciones".

Respuesta

1

Sé que esa no es exactamente la respuesta que está buscando, pero debe optar por un instalador más "serio". Estamos usando Advanced Installer y es una maravilla, hace todo lo que se te ocurra.

+0

.net es tan claro que los instaladores "serios" parecen un desperdicio. Escribimos nuestro propio instalador de secuencia de comandos XML en aproximadamente dos días y hace todo lo que necesitamos, además podemos ampliarlo fácilmente. – Bill

+3

¿Quién tiene 2 días para escribir un instalador ...? ;-) – blak3r

0

Si es aceptable que codifique al menos una configuración en el archivo de configuración, puede usar esto para apuntar a una base de datos o servicio web o ruta de archivo de red donde se pueden almacenar todas las configuraciones personalizadas. Con System.Configuration.ConfigurationManager.OpenExeConfiguration(), puede actualizar el archivo de configuración desde esta ubicación, ya sea en la primera ejecución o cada vez que se inicia la aplicación.

3

Si crea esta aplicación para empresas más grandes, entonces debería echar un vistazo a Group Policy. Lamentablemente, devolverá su aplicación a la edad de oro del registro. Entiendo que esto sería un gran cambio en su programa, pero este es el camino a seguir.

Sin embargo, si la URL del servicio web es la única, tiene que configurar de esta manera, entonces el GPO podría ser una exageración. En ese caso, codificaría el nombre del ejecutable.

Cuestiones relacionadas