Как определить пользовательские переменные связующего в настройках инструмента проекта установщика Wix

#c# #wix

Вопрос:

надеюсь, кто-нибудь сможет помочь с этим вопросом об установщике Wix. Я отредактировал свой проект Wix -> Настройки инструмента ->> Дополнительные параметры ->>> Компоновщик, чтобы включить следующую пользовательскую переменную связующего:

-dabcde=D:pnhПроектыWpfWixWpfWixbinОтладка

Я вижу, что этот параметр присутствует в командной строке «light», но переменная привязки «abcde», похоже, недоступна при анализе этого кода:

 <Component Id="WpfWix.exe" Guid="{D498BDED-57E8-4FED-AE7F-3C8C63ADEAA2}" Directory="INSTALLFOLDER">
    <File Id="WpfWix.exe" KeyPath="yes" Source="!(bind.abcde)WpfWix.exe" />
</Component>
 

Заполнитель ‘!(bind.abcde)…’ не заменен значением, установленным в настройках компоновщика проектов, и я получаю следующую ошибку:

Код серьезности Описание Ошибка состояния подавления строки файла проекта Система не может найти файл ‘!(bind.abcde)WpfWix.exe». Installer_WpfWix D:pnhProjectsWpfWixInstaller_WpfWixApplicationFiles.wxs 6

У меня был этот метод определения пользовательских переменных связующего, работавший в прошлом, и я не уверен, чего мне не хватает, чтобы заставить это работать в моем новом проекте.

Заранее спасибо, Питер.

Ответ №1:

Вы получаете ошибку в .wxs файле, который используется candle.exe для создания .wixobj файлов, используемых light.exe . Другими словами, вы должны передавать аргументы на этапе сборки проекта, а не во время компоновки.

В .wxs исходном файле вы должны иметь доступ к переменным проекта wpf. В вашем случае добавление следующей строки перед <Product ... > будет указывать на каталог отладки вашего проекта:

 <?define MyDirectory=$(var.WpfWix.TargetDir)?>
 

Чтобы получить путь к исполняемому файлу, вы можете просто добавить имя исполняемого файла

 Source="$(var.MyDirectory)WpfWix.exe"
 

Комментарии:

1. Спасибо за ответ, это одно из решений. Немного покопавшись, я нашел еще 2: <br /> 1. Используйте-d<br /><имя>=»<имя><значение>» настройка в свойствах проекта Wix -<значение>> Настройки инструмента -<значение>> Компилятор и ссылка в Wix XML с использованием: $(var.<значение>>><имя>) 2. Используйте -b <имя>=<имя><значение> настройка в свойствах проекта Wix -<значение>> Настройки инструмента -<значение>>> Компоновщик и ссылка в Wix XML с помощью: !(путь привязки.<значение>>><имя>)