2011-02-09 20 views
8

Me toco con una barricada con InstallShield LE en VS2010. La segunda vez que ejecuta el setup.exe resultante (con números de versión incrementados), consigo el errorInstallShield LE "Otra versión de este producto ya está registrada"

Otra versión de este producto se ya inscritas

Por "números de versión incrementados", me refiero he cambiado la versión secundaria, número de compilación y revisión a un mayor número de AssemblyVersion y AssemblyFileVersion de mi .exe (la DLL de se establecen en "1.0. *")

[assembly: AssemblyVersion("0.2.103.005")] 
[assembly: AssemblyFileVersion("0.2.103.005")] 
[assembly: AssemblyInformationalVersion("Alpha 0.1 - 2/8/2011")] 

y también se actualiza la versión del producto en el Pestaña Información general del proyecto de instalación de Installshield LE de 0.10.0000 a 0.11.0000.

Encontré instancias de este mensaje de error en otras publicaciones de SO y en el foro de soporte de la comunidad del fabricante, pero no encontré una solución que se aplique a mí.

Respuesta

12

Resulta que la respuesta es crear una entrada en la pestaña Caminos de actualización. Cuando lo haga, InstallShield LE presentará un diálogo de selección de archivos. Si tiene el instalador anterior, presumiblemente puede buscarlo para obtener información sobre la versión desde la que desea actualizar. En mi caso, no tenía el viejo instalador a mano, así que presioné cancelar y la nueva entrada de las rutas de actualización se creó de todos modos. A continuación, ajustó las propiedades de esa entrada para especificar una versión mínima y máxima para la actualización, y todo funcionó como se esperaba.

EDITAR

(comentario de @ de lookatmike)

Usted también tiene que cambiar la versión del producto y (algo counterintuitively) el código de producto en la pestaña de información general. El Código de actualización debe permanecer igual.

+2

Eric, esto no funcionó para mí. ¿Hiciste algo más importante? Estoy incrementando la versión del producto en la pestaña Información general, y he agregado una ruta de actualización con un amplio rango de versiones mínimo y máximo que debe incluir cualquier versión instalada previamente. –

+2

Para ampliar la respuesta aceptada de Eric más arriba, además de especificar la ruta de actualización como él describe, también debe cambiar la Versión del producto y (de manera contraria a la intuición) el Código del producto en la pestaña de información general. El Código de actualización ** debe ** permanecer igual. –

+0

@lookatmike: Gracias, actualicé la respuesta con su comentario. También es perfectamente legítimo que simplemente edite mi respuesta (suponiendo que tenga el representante para hacerlo). –

6

OK - Este problema me estaba volviendo loco, y no he encontrado una respuesta perfecta en línea.

Así que decidí que había terminado de joder.

Esta puede no ser la "MEJOR" manera de resolver el problema - estoy seguro de que hay una forma complicada basada en MSI de "manejar esto correctamente", pero no pude resolverlo (supongo que estoy ? muda)

Básicamente mi instalador sólo hace que se instala seguro de .NET, y copia algunos archivos en el directorio archivos de programa, agrega algunas entradas del registro, accesos directos, etc.

Si usted tiene un proceso de instalación más compleja - Te animo a que encuentres la respuesta "correcta" en otro lugar. Pero para algo simple como lo tengo (y sospecho que el 95% de las personas que luchan con este problema lo tienen), esto funciona bien.

Primero - NUNCA toque "Código de producto". Creo que este es el procedimiento correcto para las MSI en general ... no debería cambiar el código del producto. Y esta solución se basa en eso también.

Siguiente - Copie el código del producto en su portapapeles - lo necesitaremos en un segundo.

Básicamente, le diremos a InstallShield que DESINSTALICE SIEMPRE EL PRODUCTO si ya existe en la máquina.

enter image description here

enter image description here

Si usted o sus socios siempre ejecuta la instalación de manera silenciosa - asegúrese de hacer esto en ambos lugares:

enter image description here

Por "Nombre de archivo y línea de comandos ", ingrese:

msiexec /uninstall {YOUR PRODUCT CODE HERE} /passive

Eso es todo. Ahora su instalador siempre desinstalará la versión anterior.

NOTA: ESTO DESACTIVA CUALQUIER CLASE DE "¿Estoy ejecutando una versión más nueva del instalador?" COMPRUEBE.

+1

Este es un gran tutorial, pero parece NO aplicarse a la versión de Edición Limitada de InstallShield (ISLE). Al menos para VS2012, debe actualizar a una de las versiones pagas de InstallShield para obtener acceso a las acciones personalizadas "Antes de la búsqueda del sistema". – jimtut

0

A menudo reutilizo mis proyectos de Visual Studio y tengo este problema. Como dijo Eric @-j que tenía que cambiar el código del producto en la pestaña Información general del proyecto de instalación Instalar VS:

enter image description here

Cuestiones relacionadas