2010-06-11 27 views
22

Tengo un proyecto de implementación que no me permite instalarlo sobre una versión anterior. El archivo msi dice que primero desinstales el programa desde Agregar/Quitar programas. Esta no es una buena experiencia de usuario. ¿Cómo puedo hacerlo para que el instalador simplemente elimine primero el software y luego instale la nueva versión?Instalación de una nueva versión de un proyecto de implementación sobre la versión anterior

+1

¿Qué tiene que ver esto con el lenguaje de programación C#? –

Respuesta

26

Esto es complicado, que tiene que hacer siguiendo los pasos,

  1. Conjunto Retire instalación anterior como verdadera
  2. Conjunto Detectar nueva versión como verdadera
  3. versión Su C# del programa debe aumentar con cada despliegue
  4. Debe cambiar la versión de su instalador a una versión superior y le pedirá que cambie el código del producto, seleccione SÍ.
  5. No cambie su código de actualización, que sea el mismo.

Si no hace el tercer paso correctamente, el instalador seguirá instalando y conservando el archivo anterior, la versión de cada archivo debe ser nueva si ha cambiado su contenido.

+0

Creo que 'Instalación anterior remota' significa 'RemovePreviousVersions' – CRice

+0

¿Alguna idea sobre cómo lograr esto sin cambiar el código de ProductCode? (Actualización menor) http://stackoverflow.com/questions/3114637 – CRice

+0

Con "La versión de tu programa C# debe aumentar con cada implementación" te refieres a cada ensamblado tocado, ¿no? – mbx

5

configuración de conjunto de propiedades del proyecto RemovePreviousVersions verdadera

Pero usted tiene que utilizar mismo UpgradeCode tanto en aplicaciones de configuración

+0

+1 gracias por señalar sobre el mismo código de actualización. –

13

Probé algunos escenarios, tal vez esto ayude a alguien a ahorrar algo de tiempo

Si la versión de ensamblaje cambia Y la versión del instalador de proyecto cambia (con la modificación de la guía de código de producto también) -> La aplicación se instala sobre la existente -> las versiones de dlls y exe se actualizan -> La ruta de acceso FI a la que es diferente, los archivos de proyecto instalados inicialmente se eliminan de donde se instalaron. (Y archivos realizados desde permanecen)

Si los cambios de versión montaje y cambios de versión de instalación de proyecto (sin CódigoProducto Guid cambiar) - se le pide> usuario para eliminar manualmente la aplicación -> si siguen adelante y retirar del panel de control de primera , la aplicación puede ser instalada y los archivos DLL y EXE se actualiza a la nueva versión

Si sólo cambia versión de ensamblado, o sólo los cambios de versión del instalador proyecto (sin CódigoProducto Guid cambiar) - se le pide> usuario para eliminar manualmente la aplicación -> si continúan y eliminan primero del panel de control, la aplicación se puede instalar y los dlls y exes se actualizan a la nueva versión

Si SOLAMENTE la versión del instalador del proyecto cambia (con ProductCode Guid cambiando también) -> MSI pasa por el proceso de instalación, pero dlls y exe no cambian la versión; son como la versión de ensamblaje y se reemplazan por archivos del mismo ensamblaje versión de compilación -> La ruta de acceso FI a la que es diferente, los archivos de proyecto instalados inicialmente se eliminan de donde se instalaron. (cualquier archivo hecho desde que permanezca) Si la versión del instalador del proyecto cambia (con ProductCode Guid cambiando también) y la versión del ensamblaje es inferior a la versión instalada -> La instalación comenzará, en el usuario final se informa que la instalación falla como versión anterior.

+1

útil ... hasta votado. – Munavvar

0

Puede hacerlo a veces después de instalar la nueva versión, el producto antiguo seguirá siendo el mismo.

Necesita cambiar el número de secuencia de RemoveExistingProducts, debe programar entre Instalar Validar acción e InstallInitialize. Usted puede hacer esto mediante ORCA

Para Ex InstallValidate = 1400 = 1500 InstallInitialize

Entonces RemoveExistingProducts = 1450

Cuestiones relacionadas