2011-05-12 5 views
6

He creado un paquete de instalación de MSI en Visual Studio 2008. El problema es que después de la instalación, si elimino ALGUNO de los archivos instalados. Este no es mi comportamiento previsto para mi paquete de instalador. Mis propiedades del archivo de instalación son:¿Por qué el instalador de MSI se configura de nuevo si elimino un archivo?

PackageAs vsdpaDefault Permanente Falso de sólo lectura falsa Registro vsdrfDoNotRegister sistema falso transitiva Falso Falso Vital

Si esto es trivial, por favor, perdóname. No puedo creer que no haya podido lograr que Google abandone la respuesta. :)

Respuesta

6

instalador de Windows es una tecnología de despliegue , su trabajo consiste en instalar los archivos especificados y mantenerlos en el especificado ubicaciones de instalación y para asegurarse de que son las versiones correctas. Esto entra en conflicto con los desarrolladores que necesitan intercambiar archivos sobre la marcha para la depuración, el desarrollo y las pruebas.

Como desarrollador, puede que le interese desplegar su MSI y luego eliminar o reemplazar archivos sobre la marcha para depurar cosas. En estos casos, MSI puede ser una molestia porque nunca deja de hacer su trabajo y volverá a instalar los archivos correctos. Esto se llama "self-repair" ¡y puede ser espectacularmente molesto! :-).

Hay muchas maneras de evitar esto, MSI es bastante complejo. Como la "autoreparación" normalmente se invoca desde un "acceso directo publicitado ", la forma más fácil de evitar esta característica MSI es ejecutar el archivo EXE directamente desde el sistema de archivos y no a través de un acceso directo. Esto pasa por alto el mecanismo de reparación de MSI para todos los archivos EXE, excepto para los más complejos. También puede crear manualmente un acceso directo no anunciado en el escritorio que no activará una reparación automática.

Para la autorreparación de registros se desencadena por "self-repair entry points" para la validación de la ruta de acceso. Incluyen accesos directos publicitados, asociaciones de archivos, datos de registro COM, entre otras cosas.

hay mucho más para autorreparación o resiliencia que es su nombre oficial, por favor verifica this comprehensive article on self-repair problems para encontrar maneras de resolver su problema específico. Es un artículo extenso, pero merece la pena leerlo si tiene problemas de auto reparación.

+1

Tenga en cuenta que hay otras formas de evitar la reparación. La mayoría de estos no son recomendados, pero el uso de "accesos directos no anunciados" puede ser aceptable en algunos casos, por ejemplo al crear una versión para el equipo de QA. Con este tipo de atajo no se activa la auto reparación. Para las versiones de lanzamiento, habilitaría accesos directos publicitados ya que la auto reparación es una característica importante de MSI. –

+0

** [Explicación completa de autorreparación] (http://stackoverflow.com/a/6066263/129130) ** –

Cuestiones relacionadas