Как переопределить WixVariable из задачи Nant Light - PullRequest
0 голосов
/ 05 марта 2011

В моем файле Product.wxs есть следующий элемент:

<WixVariable Id="MySourceDir" Overridable="yes" Value="C:\somePath\files\"/>

затем в файле wxs, генерируемом теплом, у меня есть что-то вроде:

<Fragment>
    <ComponentGroup Id="FunctionalLibs">
        <Component Id="cmp3A42AC690DA7590004EC5796B1C6BA95" Directory="dir5DCBEA4AA069AE7BD92B4A3EA9C5EC79" Guid="{8FD7F7BF-68C1-492C-8F29-8E3003A6F441}">
            <File Id="fil007BA1D3A56EDEA1D669D51D8C61F518" KeyPath="yes" Source="!(wix.MySourceDir)\file1.dll" />
        </Component>
    </ComponentGroup>
</Fragment>

в моем файле сборки nant у меня есть

<light exedir="${wix.dir}"
       out="${output.dir}\PluginInstaller.msi"
       cultures="en-us"
       rebuild="true"
       suppresspdb="true">
  <sources basedir="${release.dir}\obj\\${configuration}">
    <include name="*.wixobj" />
  </sources>
</light>

Как установить значение wix.MySourceDir из легкой задачи?

1 Ответ

1 голос
/ 05 марта 2011

Как описано в справочнике задач NAnt для Light , вы можете добавить дополнительные аргументы в Light.exe, используя тег <arg>. Ссылка командной строки для light.exe говорит, что мы используем -d для определения WixVariables, поэтому:

<light exedir="${wix.dir}"
       out="${output.dir}\PluginInstaller.msi"
       cultures="en-us"
       rebuild="true"
       suppresspdb="true">
  <sources basedir="${release.dir}\obj\\${configuration}">
    <include name="*.wixobj" />
  </sources>
  <arg line="-dMySourceDir=C:\somePath\files\" />
</light>

Это должно сработать. Однако, возможно, более простой, более поддерживаемый и более распространенный способ определения исходного каталога, как вы делаете, - использование переменной препроцессора. Candle Task поддерживает их напрямую, используя тег <defines>, и единственным изменением в вашем исходном коде будет изменение Source="!(wix.MySourceDir)\file1.dll" на Source="!(var.MySourceDir)\file1.dll".

...