Невозможно собрать WixStdBootstrapperApplication - ошибка "C:\tools\WixBuild.props" не найдена

Я пытаюсь внести изменения в WixStandardBootstrapperApplication.cpp и сгенерировать DLL в соответствии с предложением из этой ссылки. Я загрузил исходный код wix310-debug и изменяю файл, находящийся в каталоге wix310-debug\src\ext\BalExtension\wixstdba\. В этом месте находится файл wixstdba.vcxproj, который я пытаюсь открыть с помощью Visual Studio 2012. Всякий раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке:

Unable to read the project file "wixstdba.vcxproj". The imported project "C:\tools\WixBuild.props" was not found.

Я не уверен, что я должен сделать, чтобы исправить это. Кроме того, основываясь на указанной ссылке, я думаю, что обновляю правильный файл, но дайте мне знать, если это не так. Любая помощь в этом была бы отличной. Заранее спасибо.

1 ответ

В вашем vcxproj есть такая строка:

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />

Источник отладки на самом деле не является источником wix. Он включает в себя все исходные файлы wix, но на самом деле его невозможно собрать. Этот zip имеет все встроенные pdbs и используется только для отладки.

Вы хотите скачать исходный код wix с github wixtoolset, чтобы вы могли собрать wixstdba. Но, это в настоящее время для версии 3.10.3 и может иметь некоторые специфические для версии изменения, но я не вижу ничего, что могло бы быть проблемой при использовании dll, построенного здесь для wix 3.10.2, так как интерфейсы приложений движка и загрузчика должны были остаться так же.

Но вы должны иметь возможность построить все это только с помощью проекта WixStdBA. Вам придется скопировать в папку wixstdba. Отредактируйте vcxproj и удалите строку импорта, упомянутую выше (она должна быть внизу).

Теперь добавьте этот проект к вашему новому решению или к вашему инсталляционному решению в visual studio. Нам нужно добавить дополнение include и библиотечные каталоги. Все эти включаемые каталоги будут находиться в вашем каталоге установки wix (по умолчанию C:\Program Files (x86)\WiX Toolset v3.10). В Свойствах -> C/C++ -> General -> дополнительные каталоги включения добавьте путь включения wix SDK. Если вы используете Visual Studio 2013, вы можете использовать полный путь или "$(WIX)\SDK\vs2013\inc". $(WIX) должен ссылаться на переменную среды WIX, которая указывает на каталог установки, который добавляется при установке wix. Это должно быть лучшим вариантом, если вы будете собирать систему сборки с установленным wix, поскольку расположение на разных машинах может быть разным.

Теперь для добавления каталогов библиотеки, мы идем в Свойства -> Линкер -> Общие -> Дополнительные каталоги библиотеки и добавляем правильный путь к библиотеке. Если вы используете Visual Studio 2013, вы должны поместить в $(WIX)\SDK\vs2013\lib\x86. Наконец, нам нужно сослаться на библиотеки, необходимые для создания загрузочной библиотеки DLL. Под Linker -> Input -> Additional Dependencies, добавьте в "dutil.lib;balutil.lib". У моих дополнительных зависимостей намного больше вещей, и я не помню, было ли это там по умолчанию. Вот мои дополнительные зависимости в любом случае в полном объеме

dutil.lib;balutil.lib;advapi32.lib;comctl32.lib;comdlg32.lib;gdi32.lib;gdiplus.lib;kernel32.lib;msimg32.lib;odbc32.lib;odbccp32.lib;ole32.lib;oleaut32.lib;shell32.lib;shlwapi.lib;user32.lib;uuid.lib;wininet.lib;winspool.lib;version.lib;%(AdditionalDependencies)

При этом вы сможете собрать проект wixstdba и собрать dll. Без редактирования какого-либо кода это должно быть точно так же, как wix, включенный в wixstdba.dll.

Вы можете попробовать ссылаться на эту dll вместо включенного wix (нужно определить свое собственное BootstrapperApplication вместо использования BootstrapperApplicationRef для одного из wix) или просто вставить этот dll в корзину вашего wix-хранилища.

Другие вопросы по тегам