txt texto reemplazar modificar lineas leer escribir crear archivos archivo agregar c# wix custom-action

texto - modificar archivo txt c#



Wix: Escribir archivo en acción personalizada (2)

Tengo un problema con wix y gestioné acciones personalizadas: en mi acción personalizada, creo un archivo y lo guardo en la ruta INSTALLLOCATION . Parece que funciona, no se lanza ninguna excepción. Pero después de la instalación, el archivo recién creado no existe en INSTALLLOCATION .

Archivo WiX:

<CustomAction Id="SetInstallPath" Property="CreateTimeStamp" Value="[INSTALLLOCATION]" Execute="immediate"/> <CustomAction Id="CreateTimeStamp" BinaryKey="SetupActions.dll" DllEntry="CreateTimeStampFile" Execute="deferred" Return="check"/> <InstallExecuteSequence> <Custom Action="SetInstallPath" Before="InstallFinalize"/> <Custom Action="CreateTimeStamp" Before="InstallFinalize"/> </InstallExecuteSequence>

Custom-Action-Methode:

... var keys = new string[session.CustomActionData.Keys.Count]; session.CustomActionData.Keys.CopyTo(keys, 0); var cad = keys[0]; var filepath = cad + "myfile.xml"; File.Create(filepath); ...

Alguien una idea?

Editado: después de la publicación de Scott Boettger y editado el contenido del archivo wix.


Creo que tus acciones personalizadas deben estar entre InstallInitialize e InstallFinalize. Prueba esto:

<InstallExecuteSequence> <Custom Action="SetInstallPath" After="InstallInitialize"/> <Custom Action="CreateTimeStamp" Before="InstallFinalize"/> </InstallExecuteSequence>


No creo que tu configuración sea correcta. Estos son algunos de los problemas:

  1. No debe usar propiedades privadas en InstallExecuteSequence (CREATE_TIME_STAMP es mejor que CreateTimeStamp porque es una propiedad pública).
  2. Está configurando la propiedad CreateTimeStamp y leyendo CustomActionData dentro de su acción personalizada. Debe establecer la propiedad CustomActionData en la ruta INSTALLLOCATION.
  3. Como su acción personalizada es crear un archivo en la carpeta de instalación, debe ejecutarse como diferido y el atributo Suplantar se debe establecer en "no". De esta manera tendrá suficientes privilegios para crear el archivo.

Intente hacer estas modificaciones y vea si el problema persiste.