tag metaetiqueta encabezado ejemplos código code agrega wix custom-action dtf

metaetiqueta - tags de encabezado wix



Acción personalizada de WiX con DTF... bastante confusa (1)

¿Podemos volver al por qué crees que necesitas una acción personalizada por un momento?

Dependiendo del problema que trates de resolver, deberías poder hacer una de estas dos cosas

1) Coloque el archivo XML en su propio componente, marcado como archivo de clave y configurado como permanente.

2) Crea una DLL ficticia y dale una versión de 1.0.0.0. Nunca incremente el número de versión de este archivo DLL en el futuro. Coloque el archivo DLL y XML en un componente con la DLL establecida en el archivo de claves y el componente establecido en permanente.

Ahora debería poder hacer actualizaciones importantes y conservar el contenido del archivo XML, independientemente de si alguna vez se ha modificado para incluir datos de usuario o no.

De acuerdo, he decidido que la única forma en que puedo hacer lo que quiero hacer con WiX (gracias a un instalador antiguo que no escribí y que ahora tengo que actualizar) es con algunas ACCIONES PERSONALIZADAS.

Básicamente, necesito hacer una copia de seguridad de un archivo antes de RemoveExistingProducts y restaurar ese archivo nuevamente después de RemoveExistingProducts. Creo que esto es lo que se llama una "acción personalizada de tipo 2".

La secuencia que creo que entiendo, sin embargo, lo que no entiendo es, ante todo, cómo paso los datos a mi acción C # (el directorio en el que está el archivo desde el WiX) y cómo hacer referencia a mi acción C # (DTF? las etiquetas Binary y CustomAction.

Además, ¿todo esto debe estar en una etiqueta? Todos los ejemplos lo muestran de esa manera.

Esto es lo que tengo hasta ahora en el archivo .WXS ...

<Binary Id="backupSettingsAction.dll" SourceFile="backupSettingsAction.CA.dll"/> <CustomAction Id="BackupSettingsAction" BinaryKey="backupSettingsAction.dll" DllEntry="CustomAction" Execute="immediate" /> <InstallExecuteSequence> <Custom Action="backupSettingsAction.dll" Before="InstallInitialize"/> <RemoveExistingProducts After="InstallFinalize" /> <Custom Action="restoreSettingsAction.dll" After="RemoveExistingFiles"/> </InstallExecuteSequence>

El archivo que necesito respaldar es un archivo de configuración de la instalación anterior (que debe permanecer intacto), se encuentra en el directorio:

<Directory Id="CommonAppDataFolder" Name="CommonAppData"> <Directory Id="CommonAppDataPathways" Name="Pathways" /> </Directory>

E incluso tiene una etiqueta de Componente, aunque necesito respaldar el archivo que ya existe:

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes" > <File Id="settingsXml" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="//fileserver/Release/Pathways/Dependencies/Settings/settings.xml" Vital="yes" /> </Component>

Y esto hace referencia al archivo C # que Visual Studio (2005) creó para mí:

namespace backupSettingsAction { public class CustomActions { [CustomAction] public static ActionResult CustomAction1(Session session) { session.Log("backing up settings file"); //do I hardcode the directory and name of the file in here, or can I pass them in? return ActionResult.Success; } } }

Cualquier ayuda es muy apreciada. ¡Gracias!