Tuvimos un desafío similar al desarrollar la aplicación en la que estoy trabajando actualmente. Queríamos poder iniciar una nueva instalación la primera vez preconfigurada con configuraciones transferidas desde otra máquina, o una utilidad de configuración. Honestamente, no sé cuán buena es nuestra solución en el gran plan, pero puedo decirles lo que hicimos, lo cual está funcionando para nosotros, por ahora.
En nuestro caso, muchas de estas configuraciones terminan en el archivo app.config, que no se recomienda tratar y manipular desde fuera de la aplicación. Se puede hacer, pero es peligroso de varias maneras sutiles. Si este no fuera el caso, la mejor opción sería agregar una "acción personalizada" para el proyecto de configuración que inyectaría los datos en el archivo, la base de datos o lo que estuviéramos utilizando para almacenar nuestra configuración. Se puede encontrar un punto de partida para saber cómo hacerlo in MSDN.
Pero como no era una opción, decidimos que probablemente la forma más sencilla de obtener datos a través de la instalación de la aplicación, sin incluirlo en el paquete de instalación, sería usar un archivo "de acompañamiento". Este es un archivo que su instalación conoce, pero que no está integrado en .MSI. Simplemente debe estar en una ubicación conocida relativa al .MSI cuando realiza la instalación. Le dice al proyecto de instalación qué es ese archivo, dónde debería estar y dónde colocarlo. Luego, su aplicación puede verificar su existencia al inicio y procesar lo que encuentre allí. En su caso, esto sería una anulación de configuración de URL. Luego, la aplicación puede eliminar el archivo, por lo que no se carga cada vez que se inicia.
En el proyecto de instalación, el archivo deberá tener algunas propiedades establecidas para garantizar que funcione correctamente con el estilo de paquete que produce un proyecto de configuración de VS.Asegúrese de configurarlos, o podría obtener errores u otras conductas extrañas cuando se excluya el archivo de transporte porque no es necesario.
- Estado: No vuelva a instalar
- PacakgeAs: vsdpaLoose
- Vital: Falso
que llamamos nuestro AutoImport.Settings.xml archivo. Este es un archivo XML personalizado que almacena todos los datos con los que queremos poder inicializar nuestra aplicación cuando está instalada. Sigue el mismo formato que usamos cuando exportamos/importamos configuraciones desde la aplicación en tiempo de ejecución, y usamos el mismo mecanismo. Simplemente lo hace automáticamente en la puesta en marcha, si encuentra el archivo allí. Esto nos permite configurar una máquina "prototipo" con todas las configuraciones específicas de red que queremos que tenga, exportar esas configuraciones y luego enviar ese archivo de importación para la carga automática con cualquier otra instalación que hagamos en ese entorno de red.
Como dije, parece que debería haber una "mejor" manera. Los únicos que se nos ocurrió fueron apartarse de los mecanismos app.config y user.config, que tienen sus ventajas. Así que al final decidimos que esta era la alternativa de menor fricción que respondía a nuestras necesidades.
Gracias por las sugerencias. Esta aplicación se instala a través de un CD, por lo que agregar o modificar el archivo puede ser difícil, así que creo que una mejor opción para mis necesidades sería modificar el código de instalación para verificar una clave de registro conocida para un valor predeterminado. Mi objetivo principal era averiguar si el MSI buscaría automáticamente un archivo de un determinado nombre de archivo y parece que estás diciendo "no, tienes que rodar eso tú mismo". No es la respuesta que quería, pero una respuesta no obstante :) –