Я использую надстройку Visual Studio 3.0 для Visual Studio. Я создал WIX Setup Library, которая инкапсулирует некоторые общие компоненты, которые будут использоваться различными проектами развертывания служб. Эта библиотека содержит ссылки на несколько файлов решений, которые необходимо упаковывать в каждое развертывание.Как сохранить целостность ссылки на файл из библиотеки установки WIX
Эти зависимости используются в моих фрагментах библиотеки Wix несколько различных способов. Например:
<Binary Id="InstallationScript" SourceFile=".\Dependency1.vbs" />
<CustomAction Id="DependencyAction"
BinaryKey="InstallationScript"
VBScriptCall=""
Execute="deferred"
Return="check"
HideTarget="no"/>
<Component Id="DLL_Component" Guid="4745D9E2-0EBA-EE57-D8DB-677ADA9E9EC8">
<File Id="DLL1" Name="Dependency1.DLL" Source=".\Dependency1.dll" Vital="yes" KeyPath="yes" DiskId="1"/>
</Component>
установки параметров WIX Библиотека строит отлично добавить ли я файлы в проекте в качестве ссылки или скопировать их в директорию проекта, и смогу ли я ссылаться на них в директории проекта или использовать относительный путь к их первоначальное местоположение. Проблема возникает, когда я включаю фрагмент в мой проект установки WIX для развертывания службы.
<Custom Action="DependencyAction" Before="InstallFinalize">
NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE
</Custom>
установки параметров проекта не в одной и той же относительной глубины в структуре папок, так что относительный путь не указывает на то же место, как это происходит, когда ссылки из библиотеки WIX. Когда я ссылаюсь на действие или функцию из библиотеки WIX, я получаю такие ошибки, как The system cannot fine the file '.\Dependency1.dll'
. XML читается точно так, как он есть, и ссылается из местоположения проекта установки, а не из местоположения проекта библиотеки, поэтому относительная директория неверна. Я могу установить относительный путь в библиотеке WIX к тому, что он должен использовать для проекта установки, который он использует, или я могу также скопировать файлы решений в каталог Setup Project, но, конечно, это полностью побеждает цель использования общая библиотека WIX. Существуют другие проекты развертывания служб, которые должны потреблять эту библиотеку.
Итак, вопрос в том, как я могу ссылаться на файлы решений в библиотеке WIX таким образом, который может быть использован Проектом установки, который его использует, независимо от того, в котором находится проект установки?
А ... Я нашел флажок «Связать файлы в файл библиотеки» на в нижней части вкладки Build, увидел, что он добавил свойства BindFiles и LibBindFiles в файл проекта и понял, что надстройка Votive = Visual Studio. Связь работает так, как я ожидал сейчас. Размер .wixlib больше, указывая, что файлы связаны внутри. И что более важно, ссылка источника имеет смысл только во время сборки .wixlib. Когда функции, компоненты или действия ссылаются на зависимые проекты, они автоматически связаны независимо от этого относительного местоположения проектов. –
Для других, у кого может быть такая же проблема ... Я обнаружил, что в свойствах проекта Build Tab не отображается флажок «Bind Files in the library file». Я вижу ту же проблему в VS2010 и VS2012. Если окно достаточно маленькое, вертикально, чтобы потребовать полосу прокрутки, вы не можете прокрутить вниз достаточно низко, чтобы увидеть этот флажок. Но если вы дадите окну достаточно места, чтобы он не нуждался в полосе прокрутки, флажок появляется внизу. Кроме того, отредактируйте файл проекта и добавьте свойства вручную для узлов Debug и Release PropertyGroup. –
Пришлите, пожалуйста, ошибку. Я не уверен, что мы можем это исправить, если это проблема в Visual Studio, но прокрутка должна работать. –