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.

¿Por qué WiX se queja de que mi directorio no está listado en la tabla RemoveFile?

Tengo esta fuente de WiX, que tiene la intención de crear un acceso directo en el menú de inicio. Esto se basa en el ejemplo de los documentos de WiX en https://wixtoolset.org/documentation/manual/v3/howtos/filesandregistry/createstartmenu_shortcut.html#:~:text=How%20To%3A%20Create%20a%20Shortcut%20on%20the%20Start,3%20Tell%20Windows%20Installer%20to%20install%20the%20shortcut

lang=xml
<?xml version="1.0" encoding="UTF-8"?>
<wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include $(sys.CURRENTDIR)\Config.wxi?>
<fragment>
<directoryref id="dirStartMenuFolder">
<component id="cMyShortcut" guid="my-guid">
<shortcut id="shMyShortcut" name="MyApp" description="My Great App" target="[fMyApp]" workingdirectory="dirIniFolder"></shortcut>
<registryvalue root="HKCU" key="Software\$(var.Manufacturer)\$(var.ProductName)" name="InstalledMyShortcut" type="integer" value="1" keypath="yes"></registryvalue>
<removefolder id="rmStartMenuFolder" directory="dirStartMenuFolder" on="uninstall"></removefolder>
</component>
</directoryref>
</fragment>
</wix>

Candle.exe acepta esto, pero Light.exe se queja de la siguiente manera:

D:…\Installer\Directories.wxs(27) : error LGHT0204: ICE64: El directorio dirStartMenuFolder está en el perfil del usuario pero no está listado en la tabla RemoveFile.

Estoy un poco desconcertado por eso, porque el directorio tiene un elemento explícito .

¿Alguna idea?

Tags:  

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el directorio ‘dirStartMenuFolder’ no está listado en la tabla RemoveFile, lo que significa que puede que no se elimine durante el proceso de desinstalación. Esto puede causar problemas si el directorio se encuentra en el perfil del usuario, ya que la mayoría de los paquetes de instalación deben eliminar cualquier archivo o directorio creado durante la instalación del perfil del usuario durante la desinstalación.

    Para resolver este error, puedes intentar agregar un elemento RemoveFile explícito para el directorio ‘dirStartMenuFolder’ en tu código fuente de Wix. Por ejemplo:

    <fragment>
      <directoryref id="dirStartMenuFolder">
        <component id="cMyShortcut" guid="mi-guid">
          <!-- Elementos Shortcut and RegistryValue -->
          <removefile id="rmStartMenuFolder" name="*.*" on="uninstall"></removefile>
        </component>
      </directoryref>
    </fragment>
    

    Esto garantizará que el directorio ‘dirStartMenuFolder’ se elimine correctamente durante la desinstalación, incluso si se encuentra en el perfil del usuario.

    Alternativamente, puedes intentar usar el elemento RemoveFolderEx en lugar de RemoveFolder, que te permite especificar atributos adicionales como ‘On’ y ‘Component’. Por ejemplo:

    <removefolderex id="rfStartMenuFolder" on="uninstall" directory="dirStartMenuFolder"></removefolderex>
    

    Esto también garantizará que el directorio se elimine correctamente durante la desinstalación.

Comments are closed.