2011-06-22 19 views
11

Al usar Visual Studio 2010, me gustaría cambiar al uso de InstallShield LE en lugar de Visual Studio Setup Project.Configuración de InstallShield LE para eliminar versiones anteriores creadas con Visual Studio Setup Projects

En el proyecto de instalación, existía una opción RemovePreviousVersions que era ideal para hacer un instalador que esencialmente realizaría una actualización in situ cuando se lanzara una nueva versión.

Ahora con InstallShield LE, he actualizado la versión y he generado un nuevo ProductCode, pero después de ejecutar el instalador, la versión anterior todavía está presente.

¿Qué debo hacer para que el proyecto InstallShield-built pueda eliminar la versión anterior que se creó con VS Setup Project?

Respuesta

8

Puede probar esto:

  • abrir su edad MSI con Orca y obtener su UpgradeCode de la mesa de la propiedad
  • en su proyecto de InstallShield LE vaya a "Información general" en el explorador de soluciones
  • asegurarse que el campo "Código de actualización" está configurado en su MSI UpgradeCode anterior

También debe asegurarse de que la propiedad ALLUSERS tenga el mismo valor para ambos vers. iones (es el mismo enfoque). Puede leer más sobre las actualizaciones aquí: http://msdn.microsoft.com/en-us/library/aa369786(VS.85).aspx

+0

¿Es este el mismo Código de actualización que se muestra en las propiedades del Proyecto de configuración VS? – JYelton

+0

Para el registro, * es * el mismo Código de actualización que se muestra en las propiedades del Proyecto de configuración VS. A Orca le cuesta trabajo instalarlo porque tuve que descargar un SDK de 1GB y quitarle la instalación de Orca. Sin embargo, reveló que la instalación anterior usaba una configuración 'ALLUSERS' de 2 mientras que la nueva instalación usaba 1. (1 es por máquina, 2 es por usuario o por máquina, y no hay valor por usuario.) – JYelton

+1

Lamentablemente esto todavía no está funcionando. La instalación de la versión A (VS Setup) y luego la instalación de la versión B (InstallShield LE) aún da como resultado la instalación de dos versiones al mismo tiempo. – JYelton

40

Esto me volvió loco cuando empecé con un proyecto en Visual 2012. Seguí obteniendo copias duplicadas en los programas para agregar/eliminar, y la versión anterior no se actualizó. Esto es lo que descubrí que necesitaba hacer.

En Las rutas de actualización, cree una nueva ruta. Deje la versión mínima en blanco (a menos que lo necesite), incluya la versión mínima sí, la versión máxima se debe establecer en la versión que ESTÁ INSTALANDO AHORA. Incluye la versión máxima a sí.

Cada vez que instale una actualización, avance la versión del Producto en la sección Información general. Haga clic en un nuevo Código de Producto en la sección Información general no cambie el código de actualización

volver a la ruta de actualización, y establecer la versión de Max a la misma versión está implementando ahora. Esto fue clave para que esto funcionara para mí.

Este proceso desinstala la versión anterior e instala la última. No hay duplicados en agregar/quitar programas.

Espero que esto ayude.

+1

Esto lo hizo por mí, ¡Gracias! – 2pietjuh2

+0

¡Buenas instrucciones! – Matthieu

+0

¿Es posible dar al usuario la opción de realizar una actualización o reinstalar completamente la aplicación completa (eliminando así toda la base de datos y el archivo de configuración).Estoy usando Install Shield LE versión gratuita – androider

3

La respuesta de user2321103 es excelente, la creación de la nueva entrada de actualización en las rutas de actualización es la clave. Es desafortunado que esta opción esté escondida, ya que es necesaria para producir lo que la mayoría de la gente esperaría que fuera el comportamiento predeterminado normal para un programa de instalación.

El motivo de esta nueva respuesta es que descubrí que podía establecer la versión máxima en la entrada de actualización a un número superior en lugar de la versión actual. Esto significa que no tendré que acordarme de actualizar esto para cada nueva versión. Mi versión actual es 2.1.8 así que configuré Max Version a 2.1.9999. En el caso poco probable de que desee un comportamiento diferente en una versión futura, puedo subir mi versión a 2.2.x

Microsoft Setup Project actualizará automáticamente el Código del producto cada vez que modifique el número de versión, pero Installshield LE no lo hace, por lo que deberá recordar hacer esto cada vez.

Como las otras respuestas indican, es importante que la Entrada de actualización use el código de actualización de las versiones instaladas anteriores. No he intentado esto, pero presumiblemente si, por algún motivo, tiene más de una versión anterior con diferentes códigos de actualización, puede crear una entrada de actualización por separado para cada uno.

No entiendo por qué no puede simplemente configurar tanto Incluir versión mínima como Incluir versión máxima en No, pero esto no parece funcionar. No he probado todas las combinaciones de estos diferentes parámetros, pero como se indica en la otra respuesta la siguiente configuración parece hacer el truco:

  • versión mínima: blanco
  • incluyen la versión mínima: Sí
  • Max Versión: > = versión actual
  • Incluir Max versión: Sí

también parece ser importante no cambiar Lang Buscar Criterio de exclusión. También he establecido Ignorar la falla de eliminación en Sí. Tengo Migrate Feature States establecido en No, pero no creo que esto sea relevante para la edición de LE de todos modos.

Cuestiones relacionadas