2009-05-04 18 views
5

he creado un instalador MSI estándar para P & D de mi aplicación que utiliza componentes siguientes:Quitar pantalla de opciones de reparación del instalador MSI

  • un servicio WCF alojado como servicio de Windows.
  • Una aplicación GUI que se comunica con ese servicio.
  • A Extensión de shell Dll.

El instalador funciona muy bien y sin ningún problema. El problema ocurre cuando el usuario intenta instalar la aplicación nuevamente sobre la aplicación existente usando el instalador MSI. Actualmente, aparece la pantalla con 2 opciones "Reparar" & "Eliminar". Ambas opciones no funcionan y corrompen la aplicación intalled.

Lo que quiero es omitir esta pantalla y mostrar algo así como un mensaje 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 ser capaz de ocultar o de alguna manera no proporcionar la opción de Reparación.

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

Respuesta

5

Tener un vistazo a la Guía de Windows Installer en MSDN para estas dos propiedades:

+1

Ya conozco estas funcionalidades pero mis requisitos son diferentes. En mi caso, el usuario tiene el instalador de MSI. Ahora puede intentar instalar el software nuevamente después de instalarlo una vez. Aquí está el problema, cuando MSI muestra una pantalla con 2 opciones 1. Reparar 2. Eliminar Simplemente no quiero esa pantalla. Esta es la misma pantalla que aparece después de la opción "cambiar" en "Agregar programas eliminados" que mencionó. – Sumeet

+0

¿Qué desea cuando el usuario final hace clic en su MSI, cuando está instalado? – CheGueVerra

0

me envuelto setup.exe y MSI dentro de un EXE archivo. Lo cual al hacer clic extrae los archivos y activa Setup.exe. En ese exe, agregué un código para verificar si la aplicación ya está instalada en la máquina o no. En caso de que esté instalado, le pregunto al usuario y sale. De esta forma, MSI nunca se inicia si la aplicación ya está instalada, por lo tanto, nunca aparece la pantalla Reparar y quitar. Respecto al botón Cambiar de la pantalla Agregar/Eliminar, usé la solución provista por "CheGueVerra". Gracias a ti.

4

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

Para hacer esto, debe editar el .MSI después de haber sido creado por la compilación de instalación de .NET. La manera fácil de Microsoft para hacerlo es Orca. Puede instalar Orca desde el .NET Framework SDK. Si crees que ya tienes el SDK, pero no tienes Orca en el menú de inicio, busca en tu máquina "Orca.exe" u "Orca.msi".

Una vez que haya instalado Orca, simplemente ejecútelo. Abra su archivo MSI usando la interfaz de usuario de Orca. A la izquierda, verá una lista de "Tablas". Elija la tabla Propiedad. En el panel de la derecha, haz clic derecho y agrega. Agregue un nodo llamado ARPNOREPAIR. Asegúrese de establecer el valor en la cadena vacía "". También agregue un nodo para ARPNOMODIFY si no desea que aparezca la opción de cambio en Windows para su programa.

+1

Me gustaría enfatizar explícitamente que las propiedades deben estar en mayúsculas ... – Wolf

1

Realice este problema hace algunos años, pero supongo que la gente como yo todavía tiene este problema. Sumeet menciona en un comentario la solución aceptada que el usuario aún puede acceder a la pantalla con las dos opciones, "Reparar" y "Eliminar", que se muestran.

Parece de hecho a las tres formas diferentes en que un usuario puede acceder al instalador para una aplicación.

One: Como ya se ha respondido ARPNOMODIFY y ARPNOREPAIR corrige el problema en Agregar solo el programa de eliminación, se puede hacer con "Orca.exe".

Dos: Al hacer clic derecho en el instalador para el msi. Lamentablemente, este es el único lugar donde parece que no hay forma de evitar ambas opciones sin hacer ajustes en todo el equipo para todos los archivos msi.

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

Encontré esta buena adaptación a continuación para resolver el tercer punto de acceso, algo reescrito, aquí: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html. Retira gráficamente la opción de permitir la opción de reparación. Agradezco 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. Vaya a la tabla 'Control'.
  7. Busque la entrada con Dialog_ 'MaintenanceForm' y Control 'BodyText'.
  8. Cambiar la propiedad 'Texto' a esto: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [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 controle 'RepairRadioGroup'.

Relacionado con realizar los pasos anteriores podría ser para automatizar el proceso de adaptación del msi con una transformación obtenida al realizar los pasos solo una vez. Más información sobre cómo hacerlo se puede encontrar aquí: Use Orca to edit msi from command line?

+0

¡Gracias! ¡Me salvaste la vida! – Aditi

1

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

encontrar y eliminar la entrada con Dialog_ 'MaintenanceForm' y Control 'RepairRadioGroup'.

cause 2814 error.
Así que mi sugerencia es: hacer RepairRadioGroup invisible.Para hacerlo sólo establece que, s Attribute a 0

actualización de control establecer atributos = 0 donde el control = 'RepairRadioGroup'

+0

Gracias por agregar la respuesta de Henrik. ¡Tuviste un papel crucial en salvar mi vida también! – Aditi

0

Esto es mucho más fácil a partir de hoy si vas a través de installshield para editar su Archivo ISM. Para desactivar el botón Change y Repair desde Agregar/Quitar pantalla del programa establece la siguiente configuración a Yes en Installation Designer pestaña>Installation Information nodo en el panel de navegación>General Information nodo en el panel de navegación>Add or Remove Programs sección de panel de detalles

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

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

  1. Cambie el texto de la etiqueta del mensaje de bienvenida a un mensaje de error, p. "Ya está instalada otra versión de este producto. La instalación no puede continuar".
  2. En el comportamiento al hacer clic en el botón Next simplemente agregue el evento EndDialog. Establezca su condición de ejecución en 1 para que se ejecute siempre. Establezca su Value en Exit
  3. Cambie el texto del botón Next a "Finalizar".
  4. Desactive u oculte el botón Cancel si lo desea.

¡Está todo listo!

Cuestiones relacionadas