Неопределенная переменная препроцессора '$ (var.WixInstall.TargetPath)'. WixInstaller D: работа \ экстрактор \ WixInstaller \ Product.wxs - PullRequest
1 голос
/ 09 мая 2019

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

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

код Product.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>

Ответы [ 2 ]

1 голос
/ 09 мая 2019

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

  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)" />

Ссылки

0 голосов
/ 10 мая 2019

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

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

...