WIX Неопределенная переменная препроцессора - PullRequest
1 голос
/ 12 июля 2011

Используя WIX, я не могу заставить свои переменные работать - есть идеи?

Я использую: WIX версии 3.5 и Visual Studio 2010

Вот ошибка, которую я получаю (это вывод из Visual Studio):

------ Началась сборка: Проект: InstallProject, Конфигурация: Отладка x86 ------ "C: \ Program Files \ XML установщика Windows v3.5 \ bin \ heat.exe" dir "c: \ publish \ ems" -cg EMSPublishedFiles -gg -scom -sreg -sfrag -srd -dr INSTALLLOCATION -var env.EMS_PUBLISHDIR -out "C: \ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Fragments \ FilesFragment.wxs" Microsoft (R) Windows Installer Xml Toolset версия Harvester 3.5.2519.0 Copyright (C) Microsoft Corporation. Все права защищены.

C: \ Program Files \ Windows Installer XML v3.5 \ bin \ свечей - dEMS_PUBLISHDIR = c: \ publish \ ems -dDebug -d "DevEnvDir = C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \" -dSolutionDir = C: \ Projects \ ems \ Trunk \ Code \ Installer \ -dSolutionExt = .sln -dSolutionFileName = InstallProject.sln -dSolutionName = InstallProject -dSolutionPath = C: \ Проекты \ ems \ Trunk \ Code \ Installer \ InstallProject.sln -dConfiguration = Debug -dOutDir = Packages \ -dPlatform = x86 -dProjectDir = C: \ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ -dProjectExt = .wixproj -dProjectFileName = InstallProject.wixproj -dProjectName = InstallProject -jectdProPro : \ Проекты \ Эмс \ Ствол \ Code \ Installer \ InstallProject \ InstallProject.wixproj -dTargetDir = C: \ Projects \ Эмс \ Ствол \ Code \ Installer \ InstallProject \ Packages \ -dTargetExt = .msi -dTargetFileName = EMSSetup.msi -dTargetName = EMSSetup -dTargetPath = C: \ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Packages \ EMSSetup.msi -out obj \ Debug \ Fragments \ -arch x86 -ext "C: \ Program Files \ XML установщика Windows v3.5 \ bin \ WixUtilExtension.dll" -ext "C: \ Program Файлы \ Windows Installer XML v3.5 \ bin \ WixUIExtension.dll "-ext "C: \ Program Files \ Windows Installer XML v3.5 \ bin \ WixSqlExtension.dll" -ext "C: \ Program Files \ XML установщика Windows v3.5 \ bin \ WixIIsExtension.dll" Fragments \ FilesFragment.wxs

C: \ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Fragments \ FilesFragment.wxs (6,0): ошибка CNDL0150: неопределенная переменная препроцессора '$ (env.EMS_PUBLISHDIR)'.

Стоит также отметить, что, хотя я определил переменные в свойствах проекта Visual studios: переменные обработчика (EMS_PUBLISHDIR = c: \ publish \ ems;), если я добавлю имя переменной в событие предварительной сборки проекта $ (EMS_PUBLISHDIR), я получу пустая строка. Я проверил каталог файлов проекта, используя блокнот, и отклонения для отладки / выпуска и т. Д. Все выглядит хорошо.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Вы ищете переменную окружения, а не переменную WiX.

$(env.EMS_PUBLISHDIR) - ищет переменную окружения EMS_PUBLISHDIR $(var.EMS_PUBLISHDIR) - ищет переменную, определенную через WiX

1 голос
/ 27 октября 2011

Вы уверены, что это выполняется из Visual Studio?Я вижу призыв к свече, который я не вижу в своих пробежках из Votive.У меня была похожая проблема, которая возникла при сборке установщика с использованием сервера сборки.Переменная была потеряна в дополнительном слое.1) На уровне сервера сборки 2) На уровне MSBuild 3) Что было распознано wixproj.

0 голосов
/ 27 ноября 2013

Если вы определяете -dEMS_PUBLISHDIR = ... в вызове свечи, в Wix он становится $ (var.EMS_PUBLISHDIR), а не $ (env.EMS_PUBLISHDIR).

...