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.

Crear una variable de entorno en el instalador de WIX utilizando el comando set /P de cmd.

Tengo un instalador XML (WIX).
Estoy intentando crear una variable de entorno usando el comando “set /P” en WIX de la siguiente manera:

<setproperty id="InstallationPathProf2019" value=""[SystemFolder]cmd.exe" /C set /P TESTPATH=<[TempFolder]fileA.txt" before="InstallationPathProf2019" sequence="execute">NOT REMOVE="ALL"</setproperty>
<customaction id="InstallationPathProf2019" binarykey="WixCA" dllentry="WixQuietExec" execute="deferred" impersonate="no"></customaction>
<installexecutesequence>
   <custom action="InstallationPathProf2019" after="InstallInitialize">NOT REMOVE="ALL"</custom>
</installexecutesequence>

Desafortunadamente, la variable de entorno TESTPATH no se crea después de ejecutar el instalador.
¿Podría indicar por qué sucede esto?

PD:
Cuando realizo lo mismo directamente en cmd, funciona y se crea la variable de entorno TESTPATH:
línea de comandos en CMD

¡Espero que alguien pueda ayudar! ¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema podría estar con la forma en que se está pasando el comando a través del instalador WIX. Es posible que las comillas no se estén escapando o pasando correctamente.

    Una solución podría ser utilizar el elemento “Property” en lugar de “SetProperty” y pasar el comando como un valor directamente. Por ejemplo:

    <property id="TESTPATH" value='[SystemFolder]cmd.exe /C set /P TESTPATH=<[TempFolder]fileA.txt'></property>
    
    <customaction id="InstallationPathProf2019" property="TESTPATH" execute="immediate"></customaction>
    
    <installexecutesequence>
      <custom action="InstallationPathProf2019" after="InstallInitialize"></custom>
    </installexecutesequence>
    

    Esto establecerá la propiedad “TESTPATH” con el valor del comando y ejecutará la acción personalizada de inmediato.

    Otra solución podría ser intentar escapar las comillas utilizando la entidad HTML “””. Por ejemplo:

    <value>cmd.exe /C set /P TESTPATH="<[TempFolder]fileA.txt"</value>
    

    En general, puede ser necesario realizar pruebas adicionales y depuración para determinar la causa raíz del problema.

Comments are closed.