Pregunta

He creado un instalador MSI estándar para P & amp; D de mi aplicación que utiliza los siguientes componentes:

  • Un servicio WCF alojado como servicio de Windows.
  • Una aplicación GUI que se comunica con ese servicio.
  • Una extensión de Shell Dll.

El instalador está funcionando muy bien y sin ningún problema. El problema se produce cuando el usuario intenta instalar la aplicación nuevamente sobre la aplicación existente utilizando el instalador MSI. Actualmente, aparece una pantalla con 2 opciones " Reparar " &erio; " Eliminar " ;. Ambas opciones no funcionan y dañan la aplicación instalada.

Lo que quiero es omitir esta pantalla y mostrar algo como un MessageBox diciendo que la aplicación ya está instalada. Como no es obligatorio para mí proporcionar la opción de reparación al usuario. Y, como mínimo, debería poder ocultar o, de alguna manera, no proporcionar la opción de reparación.

¿Alguna ayuda o sugerencia para mí? Por lo tanto, hasta ahora he intentado tantas cosas como usar ORCA para agregar la propiedad NotRepair, etc. Pero ninguna de ellas funcionó.

¿Fue útil?

Solución

Eche un vistazo a la Guía del instalador de Windows en MSDN para estas dos propiedades:

Otros consejos

La respuesta aceptada deja algunas cosas para alguien sin mucha experiencia en la instalación.

Para hacer esto, debe editar el .MSI después de que se haya creado con la compilación de instalación de .NET. La manera fácil de hacer esto por parte de Microsoft es Orca . Puede instalar Orca desde .NET Framework SDK . Si cree que ya tiene el SDK, pero no tiene Orca en su menú de inicio, busque "Orca.exe" en su máquina o " Orca.msi " ;.

Una vez que Orca esté instalado, simplemente ejecútalo. Abra su archivo MSI utilizando la interfaz de usuario de Orca. A la izquierda, verá una lista de " Tablas " ;. Elija la tabla Propiedad . En el panel derecho, haga clic derecho y agregar. Agregue un nodo llamado ARPNOREPAIR . Asegúrate de establecer el valor en la cadena vacía " " . También agregue un nodo para ARPNOMODIFY si no desea que la opción de cambio se muestre en Windows para su programa.

Date cuenta de que este problema tiene ya algunos años, pero supongo que la gente como yo todavía tiene este problema. Sumeet menciona en un comentario a la solución aceptada que el usuario aún puede acceder a la pantalla con ambas opciones, " Reparar " y " Eliminar " ;, se muestra.

De hecho, parece que hay tres formas diferentes en que un usuario puede acceder al instalador para una aplicación.

Uno: Como ya se ha respondido, ARPNOMODIFY y ARPNOREPAIR solucionan el problema solo en Agregar programa eliminado, se puede hacer con " Orca.exe " ;.

Dos: Haciendo clic derecho en el instalador para el msi. Lamentablemente, este es el único lugar donde parece que no hay manera de evitar ambas opciones sin hacer ajustes en toda la computadora para todos los archivos msi.

Tres: Al hacer doble clic en el instalador, si ya está instalado, aparece una pantalla con los botones de radio " Reparar " y " Eliminar " ;.

Encontré esta clara adaptación a continuación para resolver el tercer punto de acceso, algo reescrito, aquí: http://es.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project -properties-help-49010162.html . Quita gráficamente la opción de permitir la opción de reparación. Mi agradecimiento a Paul Brun por este.

  1. Abra el archivo msi con Orca.exe.
  2. Vaya a la tabla 'Propiedad'.
  3. Agregue la clave 'ARPNOMODIFY' con el valor 1 .
  4. Agregue la clave 'ARPNOREPAIR' con el valor 1 .
  5. Cambie el valor de la propiedad 'MaintenanceForm_Action' de Repair a Remove .
  6. Ir a la tabla 'Control'.
  7. Busque la entrada con Dialog_ 'MaintenanceForm' y Control 'BodyText'.
  8. Cambie la propiedad 'Texto' a esto: {\ VSI_MS_Sans_Serif13.0_0_0} Seleccione " Finalizar " para eliminar [ProductName]
  9. Busque la entrada con Dialog_ 'MaintenanceForm' y control 'RepairRadioGroup'.
  10. Cambie la propiedad 'Control_Next' de CancelButton a FinishButton .
  11. Busque y elimine la entrada con Dialog_ 'MaintenanceForm' y control 'RepairRadioGroup'.

Relacionado con hacer los pasos anteriores puede ser automatizar el proceso de adaptación de msi con una transformación obtenida de los pasos solo una vez. Puede encontrar más información sobre cómo hacer eso aquí: Use Orca para editar msi de la linea de comando?

Estoy de acuerdo con Henrik, pero en mi caso, el último paso

  

Encuentre y elimine la entrada con Dialog_ 'MaintenanceForm' y control 'RepairRadioGroup'.

causa 2814 error.
Así que mi sugerencia es: hacer que RepairRadioGroup sea invisible. Para hacerlo, simplemente configúrelo, s Atributo a 0

  

UPDATE Control SET Attributes = 0 WHERE Control = 'RepairRadioGroup'

Esto es mucho más fácil a partir de hoy si va a través de Installshield para editar su archivo ISM. Para deshabilitar el botón Change y Repair en la pantalla Agregar o quitar programas, configure las siguientes opciones en en Installation Designer pestaña > Nodo Información de instalación en el panel de navegación > Nodo Información general en el panel de navegación > Agregar o quitar programas en el panel de detalles

  1. Deshabilitar el botón de cambio
  2. Deshabilitar botón de reparación

 ingrese la descripción de la imagen aquí

Para resolver el segundo problema, simplemente puede modificar la pantalla de diálogo integrada de MaintenanceWelcome de installshield.

  1. Cambie el texto de la etiqueta del mensaje de bienvenida a un mensaje de error, por ejemplo, " Otra versión de este producto ya está instalada. La instalación no puede continuar. & Quot;
  2. En el comportamiento en el clic del botón Next , simplemente agregue el evento EndDialog . Establezca su condición de ejecución en 1 para que se ejecute siempre. Establezca su Valor en Exit
  3. Cambie el texto del botón Siguiente a " Finalizar " ;.
  4. Desactive u oculte el botón Cancelar si lo desea.

¡Ya está todo listo!

Envolví setup.exe y MSI dentro de un archivo EXE. Que en un clic extrae los archivos y desencadena Setup.exe. En ese ejemplo, agregué un código para verificar si la aplicación ya está instalada en la máquina o no. En caso de que se instale, avisa al usuario y sale. De esta manera, MSI nunca se inicia si la aplicación ya está instalada, por lo que la pantalla Reparar y Eliminar nunca aparece. Con respecto al botón Cambiar de la pantalla Agregar / Quitar, usé la solución provista por " CheGueVerra " ;. Gracias a ti.

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