es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo eliminar características instaladas condicionalmente al desinstalar una aplicación?

Estoy usando Wix para crear un instalador que instala diferentes características basadas en una propiedad “CURRENCY” pasada desde la línea de comando.

Aquí está el elemento “Feature” del archivo Wix:

<feature id="Complete" level="1" title="My Service" display="expand" installdefault="local">
  <feature id="MainProgram" title="My Service" display="expand" level="1" absent="allow">
    <componentref id="MyCoordinator"></componentref>

    <feature id="Foo" title="Foo" display="expand" installdefault="followParent" level="1" absent="disallow">
      <feature id="UK" title="UK Settings" description="Plugin Reino Unido" level="0" installdefault="followParent" absent="disallow">
        <condition level="1">CURRENCY = "GBP"</condition>   <<-- CONDICIÓN
        <componentref id="UK_Settings_Component"></componentref>
      </feature>

      <feature id="US" title="US Settings" description="Plugin Estados Unidos" level="0" installdefault="followParent" absent="disallow">
        <condition level="1">CURRENCY = "USD"</condition>   <<-- CONDICIÓN
        <componentref id="US_Settings_Component"></componentref>
      </feature>

    </feature>

  </feature>
</feature>

El proceso de instalación funciona excelentemente. Paso una moneda y obtengo el componente de configuración correspondiente del país instalado.

Pero cuando intento desinstalar la aplicación a través del applet “Agregar o quitar programas”, requiere que el usuario desinstale la aplicación dos veces antes de eliminarla de la lista de programas instalados. Así que ejecuté la desinstalación desde la línea de comandos con registro detallado.

> msiexec /x {identificador-de-producto} /L*v "desinstalar_1.txt"
> msiexec /x {identificador-de-producto} /L*v "desinstalar_2.txt"

Después de indagar en el registro detallado de la desinstalación, creo que esto se debe a que el instalador no puede eliminar el componente de configuración específico de la moneda.

Desde el registro de desinstalación después de la segunda desinstalación, puedo ver que encontró:

Componente: UK_Settings_Component; Instalado: Local; Solicitado: Null; Acción: Local

Si paso la moneda al comando de desinstalación, solo se requiere una desinstalación.

> msiexec /x {identificador-de-producto} CURRENCY="GBP"

Pregunta: ¿Cómo puedo indicar que siempre se eliminen todos los componentes de moneda al desinstalar la aplicación?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que todos los componentes de la moneda se eliminen durante el proceso de desinstalación, puede modificar el elemento Feature en el archivo wix para incluir un elemento RemoveRegistryKey con un valor de “yes” para cada función específica de la moneda. Esto garantizará que se elimine la clave del registro correspondiente durante la desinstalación.

    Aquí hay un ejemplo de cómo modificar el elemento de función del Reino Unido:

    <feature id="UK" title="Configuraciones del Reino Unido" description="UK Plugin." level="0" installdefault="followParent" absent="disallow"> 
        <condition level="1">CURRENCY = "GBP"</condition>
        <componentref id="UK_Settings_Component"></componentref>
        <removeregistrykey root="HKCU" key="Software\MyService\UK" action="yes"></removeregistrykey> <-- AGREGUE ESTA LÍNEA
    </feature>
    

    Puede agregar esta línea de código a cada elemento de función específico de la moneda para que se eliminen todas las claves de registro correspondientes durante la desinstalación. Esto debería asegurar que la aplicación se elimine correctamente sin requerir múltiples desinstalaciones.

Comments are closed.