MSI quita requiere de la asamblea en la actualización de instalar, pero lo reemplaza en la Reparación

StackOverflow https://stackoverflow.com/questions/1889422

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy experimentando alguna rareza relativa a una instalación de MSI actualización, tal vez hay alguien que me puede ayudar:

Tengo dos paquetes Msi, un original y una actualización:

  • MSI versión 1.0
    • Contiene un .NETO de la asamblea, foo.dll para ser instalado en la GAC
    • foo.dll es de tipo "Asamblea" (no "de Salida") dentro de los archivo MSI sistema de interfaz gráfica de usuario.
  • MSI versión 2.0
    • También contiene foo.dll (misma versión), además de un montón adicionales asambleas.
    • Me gustaría MSI 2.0 remplazar totalmente 1.0, así que me puse a RemovePerviousVersion a False.

Ahora los dos escenarios de instalación:

  1. Corro MSI 1.0.Foo.dll se instala en la GAC correctamente.Luego de ejecutar MSI 2.0 y Foo.dll parece ser removido de la GAC, pero el ensamblados adicionales están ahí.No tengo idea de forma.Sin embargo, si voy a Agregar/Quitar programas y haga clic en "Reparación" Foo.dll se pone en.

  2. MSI 1.0 nunca está instalado y puedo ejecutar MSI 2.0.Foo.dll (y el ensamblados adicionales) es allí, como era de esperar.

Alguna idea de por qué el foo.dll se elimina durante la actualización??Gracias de antemano!

-Ken

ACTUALIZACIÓN Después de algunos refrescante y/o reconstrucción, parece que funciona ahora.Sin embargo, ahora no se quita foo.dll cuando desinstalo el MSI, a pesar de su propiedad "Permanente" se establece a false.No es tan grande de un problema, pero sería bueno saber lo que estaba pasando.

¿Fue útil?

Solución

Para corregir la rareza, terminé haciendo lo siguiente:

  1. Instalado Orca.exe, parte del SDK de Windows.
  2. Agregado REINSTALLMODE = amus a la mesa Propery a través de la orca, después de construcción.

Esto resolvió mi problema inmediato y corregir los problemas de instalación / desinstalación que estaba experimentando. El único problema es que este es un proceso manual. El siguiente paso, hacer de esto una parte de un evento posterior a la generación automática de alguna manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top