He creado un paquete de instalación de msi para mi proyecto desde el proyecto de implementación VS2008. pero estoy teniendo problemas a la hora de actualizar las instalaciones. La versión instalada anteriormente no se sobrescribe. ¿Cómo me aseguro de que las versiones instaladas previamente se sobrescriban?¿Cómo puedo asegurar que mi implementación de la aplicación winform sobrescribe las versiones anteriores?
Respuesta
- En Visual Studio seleccione el proyecto de instalación en el Explorador de soluciones
- abrir la ventana Propiedades
- no haga clic con el botón derecho en y seleccione propiedades.
- seleccione Ver - Ventana Propiedades
- conjunto RemovePreviousVersions a cierto incremento
- la versión a un número más alto
- seleccione Sí en el cuadro de mensaje próxima
Si construido y desplegar esta nueva configuración, se eliminará una configuración con un número de versión anterior.
Importante: ¡el número de versión de configuración es completamente independiente del número de versión de su aplicación o ensamblado!
Windows Installer ha incorporado controles en sus archivos para asegurarse de que la versión sea más alta que la versión anterior de ese archivo. Si no es así, Windows Installer no lo sobrescribirá. Para más amplia información sobre cómo instalador de Windows se encarga de comprobación de versiones vistazo a este artículo de MSDN:
http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx
Tenemos que establecer la propiedad REINSTALLMODE de nuestro archivo msi en amus.
A continuación se presenta el enlace para saber más sobre el significado de 'amus' http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx
Hay dos maneras de hacerlo.
- Mediante el uso de msiexec.exe que viene con el SDK .NET (si tiene VS 2005 o VS 2008 vendrá con él, simplemente navegar a símbolo del sistema de Visual Studio y encontrará allí)
una vez que encuentre msiexec.exe solo escriba el siguiente comando para establecer la propiedad REINSTALLMODE en amus para su instalador.
msiexec.exe/i foo.msi REINSTALLMODE = amus
(respuesta de Oliver es correcta, pero quería agregar imágenes y algunos detalles más)
Seleccione el proyecto de instalación en su solución , a continuación, abra las panel Propiedades (la pestaña junto a la caja de herramientas):
- Asegúrese
DetectNewerInstalledVersion
i es verdad (es ser predeterminado) - Establecer
InstallAllUsers
a cierto - Establecer
RemovePreviousVersions
a cierto - actualizar el número de
Version
y pulsa Enter - Después de presionar enter, Visual Studio le preguntará si desea generar una nuevo GUID para
ProductCode
, haga clic en Sí
Además, es necesario actualizar los números de versión para cada proyecto en susolución , ya que el instalador sólo reemplazará DLL si su número de versión se ha incrementado:
- abierto AssemblyInfo.cs de cada proyecto y actualizar los
AssemblyVersion
yAssemblyFileVersion
números
o una manera mejor :
- Retire
AssemblyVersion
yAssemblyFileVersion
líneas de cada AssemblyInfo.cs del proyecto - Enlace a un VersionInfo.cs de archivo de la solución con esas 2 líneas
- Paso a paso para lo anterior: The Right Way To Version Your Assemblies
Haga clic derecho en el proyecto de configuración y seleccione Propiedades (un Propiedades diferente diálogo):
- Conjunto Windows Installer 4.5 como Requisito en lugar del predeterminado de Visual Studio de Windows Installer 3,1
No estoy seguro de si todos estos pasos son necesarios, y hay pueden ser otras formas de configurar esto, pero los pasos anteriores funcionan para mí.
- 1. ¿Cómo hacer que InstallShield desinstale las versiones anteriores?
- 2. Implementación de MVVM para la aplicación WinForm
- 3. Capistrano: limpiar versiones anteriores
- 4. ¿Cómo puedo asegurar mi conexión a la base de datos?
- 5. ¿Cómo distribuir múltiples versiones de mi aplicación?
- 6. ¿Cómo hacer que una aplicación iAd para iPhone funcione en versiones anteriores de iPhone OS?
- 7. Deserialización compatibilidad con versiones anteriores
- 8. Versiones de clase para admitir la compatibilidad con versiones anteriores
- 9. Dónde puedo encontrar versiones anteriores de Eclipse ADT
- 10. ¿Cómo asegurar mi API web?
- 11. Cómo eliminar versiones anteriores de Xcode
- 12. iOS: versiones anteriores de la aplicación que se instalan desde App Store
- 13. Detectar versiones anteriores de IE
- 14. Cómo asegurar que mi jQuery .ready se ejecuta al final
- 15. GitHub: buscando en versiones anteriores de archivos
- 16. ¿Cómo puedo cambiar el texto de un control ToolTip existente en PictureBox en mi aplicación WinForm?
- 17. ¿Puedo emular versiones anteriores de Firefox dentro de Firefox 4.0?
- 18. Integración de Kiosco sin romper la compatibilidad con versiones anteriores
- 19. Purga de todas las versiones anteriores de CMFEditions
- 20. Descargar versiones anteriores de jQuery UI
- 21. Motivo para usar versiones anteriores de jQuery?
- 22. ¿Cómo puedo probar la compatibilidad con versiones anteriores de la API entre los ensamblados de .NET
- 23. ¿Cómo puedo proteger mi aplicación ASP.NET AJAX?
- 24. ¿Las API de Java Servlet son compatibles con versiones anteriores?
- 25. ¿Establecer el tema Holo en las versiones anteriores de Android?
- 26. Eliminar versiones anteriores de Ruby (en Windows)
- 27. MS Office PIAs "compatibilidad con versiones anteriores"
- 28. Mejores prácticas para la compatibilidad con versiones anteriores de API
- 29. Haciendo servicios WCF compatibles con versiones anteriores
- 30. ISerializable y compatibilidad con versiones anteriores
¡Si tan solo eso funcionara para mí! ¿A qué te refieres con que "el número de versión de instalación es completamente independiente?" – JohnB
@JohnB: Tal vez pasaste por alto el punto * selecciona tu proyecto de instalación * en el primer punto. Si seleccionaste el proyecto de configuración y miras en la ventana de propiedades encontrarás abajo en VersionNumber. Esto tiene que ser incrementado para cada versión construida que se publicará y este número es independiente del número de versión de su aplicación y/o ensamblajes. – Oliver