Wix 'неопределенная переменная препроцессора'

Я видел подобные вопросы, но, похоже, они мне не помогли.

Я играю с тестовым веб-приложением.

введите описание изображения здесь

Я добавил это в свой RStp.wixproj, мне было нелегко, но он работает, он генерирует Frags.wxs:

<Target Name="BeforeBuild">
    <Exec Command=" &quot;$(WiX)bin\heat.exe&quot; project &quot;..\WebR\WebR.csproj&quot; -cg Portals.Vendor -gg -pog Binaries -pog Content –configuration &quot;release&quot; -platform &quot;AnyCPU&quot; –out &quot;Frags.wxs&quot; " />
    <ItemGroup>
      <Compile Include="Frags.wxs" />
    </ItemGroup>
  </Target>

Мой Frags.wxs выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="WebR.Binaries" />
    </Fragment>
    <Fragment>
        <ComponentGroup Id="WebR.Binaries">
            <ComponentRef Id="cmp7AE3B693619BAD570BB795DC740F74CA" />
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="WebR.Content">
            <Directory Id="dirBB5AA78A6132241A7A39F7899E66D36C" Name="Fold" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="WebR.Content">
            <ComponentRef Id="cmp434BA57B5F42786DB41F7D30B9C8A2AA" />
            <ComponentRef Id="cmp827A8854133966F2160835E612413FA7" />
            <ComponentRef Id="cmpF279DD78D3B3BE5386C8535E2A85FC5F" />
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="Portals.Vendor">
            <Component Id="cmp7AE3B693619BAD570BB795DC740F74CA" Directory="WebR.Binaries" Guid="{9F6BEFC1-6226-4C1D-A1B0-1C7D6355DB60}">
                <File Id="filB23D27862A7D96131D5E2F7C7CCCAA8B" Source="$(var.WebR.TargetDir)\WebR.dll" />
            </Component>
            <Component Id="cmp434BA57B5F42786DB41F7D30B9C8A2AA" Directory="WebR.Content" Guid="{F0733DE8-9B04-4F65-ABA3-954B71E6CC00}">
                <File Id="fil85B5BB89317EA74AFB68409ADF6BA4C7" Source="$(var.WebR.ProjectDir)\Default.aspx" />
            </Component>
            <Component Id="cmp827A8854133966F2160835E612413FA7" Directory="WebR.Content" Guid="{ADF5B995-9002-469F-BA2F-9A88621DAF13}">
                <File Id="filFD9C307A451419BA8B1308C1786045D2" Source="$(var.WebR.ProjectDir)\Web.config" />
            </Component>
            <Component Id="cmpF279DD78D3B3BE5386C8535E2A85FC5F" Directory="dirBB5AA78A6132241A7A39F7899E66D36C" Guid="{8BFCFDD6-E995-482D-9AA3-4EE8926E9CB0}">
                <File Id="filB2AF43969CEF48A8A2E362F2D8E5DD20" Source="$(var.WebR.ProjectDir)\Fold\F2.aspx" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

Я еще не вносил никаких изменений в Product.wxs:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="RStp" Language="1033" Version="1.0.0.0" Manufacturer="Prive" UpgradeCode="cfbe56e5-e27a-42c3-af88-262956974943">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="RStp" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="RStp" />
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
            <!-- <Component Id="ProductComponent"> -->
                <!-- TODO: Insert files, registry keys, and other resources here. -->
            <!-- </Component> -->
        </ComponentGroup>
    </Fragment>
</Wix>
  1. Что мне нужно сделать, чтобы фасад A.R. находился внутри Frags.wxs?
  2. Как связать Frags.wxs с Product.wxs?
  3. Как исправить ошибку "Неопределенная переменная препроцессора" $ (var.WebR.TargetDir) 'ОБНОВЛЕНИЕ Щелкните правой кнопкой мыши RStp, добавьте ссылку, выберите Web prj - исправлено
  4. Куда мне добавить код свечи (например, RStp.wixproj для тепла?) И как он должен выглядеть?
  5. Если это будет безопасным исходным кодом, следует ли мне включать Frags.wxs в исходный код?
  6. Мне нужен конкретный путь для установки, который выглядит следующим образом: «E: \ Inetpub \ wwwroot», как я могу это настроить?

Спасибо


person Ash    schedule 25.09.2015    source источник


Ответы (1)


1.) Вам нужно будет сослаться на Components / ComponentGroups внутри вашей функции.

    <Feature Id="ProductFeature" Title="RStp" Level="1">
        <ComponentGroupRef Id="Portals.Vendor" />
        <ComponentGroupRef Id="WebR.Content" />
        <ComponentGroupRef Id="WebR.Binaries" />
    </Feature>

2.) В WiX нет ссылок в традиционном понимании. На все ваши компоненты можно ссылаться из других файлов WiX в этом проекте.

3.) В Свойствах проекта RStp на вкладке Сборка вы можете определить WebR.TargetDir как путь к каталогу, по которому запускается тепло.

4.) Поскольку вы уже используете Visual Studio, почему бы просто не позволить ему выполнить компиляцию?

5.) Поскольку Frags.xml будет генерироваться каждый раз, я бы не стал добавлять его в Source Safe, где ему нужно было бы заблокировать файл для его редактирования. Мы используем SVN и добавили файлы автогенерации, так как мы сочли полезным при работе над установками видеть файлы, которые были добавлены или удалены.

6.) Взгляните на это

person Rick Bowerman    schedule 28.09.2015
comment
1. При перестройке я получаю новый Frags.wxs, поэтому я не могу добавить его в Frags.wxs. Добавил в Product.wxs, ничего не вышло. Что я делаю неправильно? 2. Хорошо, поэтому мне нужно добавить что-нибудь для Frags.wxs в Product.wxs? Как это будет выглядеть? и где его разместить? 3. Я перепробовал множество форматов, например: $ (var.WebR.TargetDir) = 'C: \ something \'. - person Ash; 29.09.2015
comment
Что бы я ни изменил (использованные кавычки, двойные кавычки, скобки), это дает мне. Определение переменной недействительно. Определения переменных должны быть в форме -dname = value, где значение не является обязательным. 4. хорошо 5. имеет смысл 6. посмотрим на это через 1-2-3 - person Ash; 29.09.2015
comment
@RickBowerman Кажется, ваше решение связано с этим сообщением. У вас будет время посмотреть сообщение и дать мне свой совет? Заранее спасибо. - person nam; 27.12.2017