2011-12-13 6 views
12

Estoy ejecutando calor para generar un archivo wxs. El código es el siguiente.archivos generados por calor no pueden encontrar el directorio de SourceDir

Quiero agregar todos los archivos desde dir.prompts al archivo wxs en el instalador. Y agregué esto para ser parte del proceso de compilación automatizado (de modo que no puedo modificar el archivo wxs una vez que se ha generado).

Se genera el archivo wxs, y tiene el aspecto siguiente. Sin embargo, Light se queja de que no puede encontrar dónde está SourceDir \ Valid.wav. Así que supongo que mi pregunta es, ¿es SourceDir el directorio del que estoy leyendo los archivos, o algún directorio mágico del que no tengo conocimiento? Muchas gracias.

<Fragment> 
    <ComponentGroup Id="COMPONENTS"> 
     <Component Id="dmp120F8C2794******" Directory="dir31A7EE61C56025FE2564A81E28E8C132" Guid="{6D40EBC0-***-***-B972-**********}"> 
      <File Id="fil919100C2******D045EC131" KeyPath="yes" Source="SourceDir\Valid.wav" /> 
     </Component> 



<exec program ="${dir.wix}\heat.exe"> 
    <arg value = "dir"/> 
    <arg line = "${dir.prompts}"/> 
    <arg value= "-gg"/> 
    <arg line="-cg &quot;COMPONENTS&quot;"/> 
    <arg line = "-out &quot;${dir.thisinstaller}\\COMPONENTS.wxs&quot;"/> 
</exec> 

Respuesta

11

Usted debe agregar el interruptor -VAR para calentar la línea de comandos:

De ayuda heat.exe:

-VAR VariableName sustituto Archivo/@ Fuente = "SourceDir"

con un preprocesador o una variable wix. Por ejemplo:

-VAR var.MySource

se convertirá en Archivo/@ Source = "$ (var.MySource) \ miarchivo.txt"

y

Wix -VAR .MySource

se convertirá en archivo/@ Fuente = "! (wix.MySource) \ miarchivo.txt"

+2

Pero entonces tenemos que añadir un "include" de cabecera por lo que reconocerá la variable. ¿derecho? – MichaelS

+2

sí, pero eso es trabajo manual. Me encantaría una respuesta sobre cómo hacer eso automáticamente si es posible. – Pittfall

+0

¿Hay alguna manera, donde podamos dar la ruta del SourceDir sin la variable de entorno? –

16

Tenga en cuenta que Light buscará SourceDir adicionales para su archivo si los agrega a la ruta de búsqueda con -b

p.

light.exe -b Foo ... 

(Respuesta de: https://stackoverflow.com/a/6920979/640282)

+0

¿Cómo hago esto desde un proyecto de estudio visual? –

+4

En Visual Studio: Propiedades del proyecto> Configuración de la herramienta> Enlazador. Tipo -b ruta. O bien, agregue un elemento LinkerBindInputPaths a un PropertyGroup en su archivo .wixproj. –

+0

¡GRACIAS @TomBlodget '-b MyDir' funcionó para mí! –

Cuestiones relacionadas