Неопределенная переменная препроцессора '$ (var.WixInstall.TargetPath)'. WixInstaller D: работа \ Extractor \ WixInstaller \ Product.wxs

Я столкнулся со следующей ошибкой при создании установщика Windows с помощью wix. Неопределенная переменная препроцессора '$ (var.WixInstall.TargetPath)'. WixInstaller D: \ работа \ Extractor \ WixInstaller \ Product.wxs

Обратите внимание: я пробовал следующие ответы, но безрезультатно [неопределенная переменная препроцессора Wix , [неопределенная переменная препроцессора WiX, [WiX - Неопределенная переменная препроцессора '$ (var.SetupProject1.TargetDir)'

Код продукта.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="WixInstaller" Language="1033" Version="1.0.0.0" Manufacturer="" UpgradeCode="PUT-GUID-HERE">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

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

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

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
             <Component Id="ProductComponent">
        <File Source="$(var.WixInstall.TargetPath)" />
      </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

person Abrar Ahmad    schedule 09.05.2019    source источник


Ответы (2)


Получение пульса. Перво-наперво: скомпилируйте исходный код, чтобы вы могли проверить, есть ли другие проблемы:

  1. Абсолютный путь: попробуйте жестко запрограммировать полный путь к файлу, который, как вы знаете, существует в целевом расположении:

     <File Source="D:\My Files\MyBinary.exe" />
    
  2. Производитель. Затем установите что-нибудь для "Manufacturer" attribute. Все, что угодно, пока что-то есть. Разумеется, укажите название вашей компании.

= ›Попробуйте скомпилировать. Это должно быть успешным.


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

<File Source="$(var.WixInstall.TargetPath)" />

Это какой-то образец или что-то в этом роде? Я предполагаю, что "WixInstall" относится к самому проекту WiX внутри решения Visual Studio? Как правило, вы можете ссылаться на проекты внутри вашего решения следующим образом - по имени - но обычно вы ссылаетесь на другой проект, например MyBinaryProject, и обращаетесь к его выводам сборки следующим образом:

<File Source="$(var.MyBinaryProject.TargetPath)" />

Вам необходимо убедиться, что проект, на который вы ссылаетесь, действительно находится в решении Visual Studio. И на него нужно добавить ссылку:

  1. Щелкните правой кнопкой мыши "References" в своем проекте WiX = ›Add Reference...
  2. В разделе "Projects" выберите проект, к которому вы хотите обратиться, нажмите Add и OK.

Документация WiX: Использование Ссылки на проекты и переменные - см. Эту запись в документации WiX для получения подробной информации о встроенных переменных, доступных при обращении к другим проектам Visual Studio.


Обычная переменная препроцессора. Помимо встроенной переменной препроцессора, которую вы получаете при добавлении ссылки на другой проект Visual Studio, вы также можете определять свои собственные переменные:

<?define MyTest= "D:\My Files\MyBinary.exe" ?>
<...>
<File Source="$(var.MyTest)" />

Ссылки:

person Stein Åsmul    schedule 09.05.2019
comment
Кажется, исчерпывающий ответ. Я постараюсь вернуться сюда. - person Abrar Ahmad; 11.05.2019

Этот код ссылается на проект под названием WiXInstall в вашем решении.

Рекомендую посмотреть: https://github.com/iswix-llc/iswix-tutorials

person Christopher Painter    schedule 10.05.2019