Как установить переменную -var, определенную в heat.exe, в файл wxs?

Я запускаю следующую команду:

heat.exe dir bin\Release -sfrag -sreg -var var.sourcebin -dr myappfolder -cg myapp_comp_group

Это создает хороший файл wxs, который выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Fragment>
    <ComponentGroup Id="myapp_comp_group">
      <ComponentRef Id="cmpE519314043C2FFE1104E067D33CBC652" />
      <ComponentRef Id="cmp0431CFEC47E793CE59C185A8BDD9D865" />
    </ComponentGroup>
  </Fragment>
  <Fragment>
    <DirectoryRef Id="myappfolder">
      <Directory Id="dir4ADCEBD4F8C9DC384017088D96B7A1C3" Name="somebinfolder">
        <Component Id="cmpE519314043C2FFE1104E067D33CBC652" Guid="EB84C1A8-7BF5-4967-878D-8DAD9DFFA0A6">
          <File Id="filD8C8D39058B0FF5C9608B1F99B0CD5BA" KeyPath="yes" Source="$(var.sourcebin)\app.config" />
        </Component>
      </Directory>
    </DirectoryRef>
  </Fragment>
</Wix>

Я использую это в файле сгенерированного тепла wxs в моем проекте, но я получаю ошибку, потому что $(var.sourcebin) не был установлен.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <?define sourcebin="C:\svn\myapp\bin\Release"?>

  <!-- leaving some stuff out of course -->
  <Module>
    <ComponentGroupRef Id="myapp_comp_group"/>
  </Module>
</Wix>

ошибка CNDL0150: неопределенная переменная препроцессора '$(var.sourcebin)'.

Как определить эту переменную, чтобы она была подхвачена файлом, генерируемым теплом? Я не хочу менять файл, генерируемый теплом вручную, потому что он создается заново каждый раз.

1 ответ

Решение

Откройте Свойства проекта, выберите вкладку "Сборка" и добавьте переменную препроцессора по мере необходимости.

sourcebin="C:\svn\myapp\bin\Release";

В разделе определения используйте:

<?define sourcebin = $(var.sourcebin)?> 

Тепловую команду вы можете оставить как есть.

Это будет то же самое, когда вам нужно будет передать переменные из msbuild (файл Wixproj) в другие файлы вашего проекта (wxs, wxi...). Общее использование при использовании TFS.

Другие вопросы по тегам