Я пытаюсь использовать MSBuild (под CruiseControl) для сборки установки для моего .NET 4 приложения. В этом случае сборка установки должна создать ускоритель, чтобы установить предварительное условие (.NET 4 и Windows Installer 4.5 в этом случае), это делается с помощью Задачи GenerateBootstrapper.
Запуск MSBuild.exe project.msbuild.xml
из командной строки на машине разработки, на которой установлен VS 2010, отлично работает. Запуск на машине сборки, в которой установлен только последний Windows 7 SDK, не удается выполнить ошибку:
(ProductDistributions target) -> bootstrapper.xml(236,5): error MSB3147:
Could not find required file 'setup.bin' in '<project path>\ProductDistributions\Engine'.
На машинах dev у меня есть папка C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine
, содержащая файл setup.bin
, но на машине сборки нет Bootstrapper
внутри C:\Program Files\Microsoft SDKs\Windows\v7.1
(7.1 против 7.0A, по-видимому, потому, что VS2010 устанавливает 7.0 A, но автономный SDK равен 7.1).
Кроме того, на машине сборки нет ключа реестра 4.0 внутри HKLM\Software\Microsoft\GenericBootstrapper\
, но у машин-разработчиков есть один, содержащий строку пути со значением c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\
Похоже на то, что мне нужно установить на машине сборки, чтобы добавить папку Bootstrapper в "Microsoft SDKs\Windows\v7.1" (и настроить разделы реестра), но я не уверен, что это такое. Любая идея, что мне нужно получить?
Или есть что-то еще, что мне нужно, чтобы моя работа по сборке работала?
Обновлено: У меня есть эта работа в настоящий момент, вручную скопировав папку bootstrapper 7.0A с машины-разработчика на машину сборки и вручную добавив этот путь к разделу реестра HKLM\Software\Microsoft\GenericBootstrapper\4.0
. Кажется, что это работает, но похоже, что это не может быть то, что я должен сделать, чтобы исправить эту проблему. Поэтому я был бы признателен, если бы у кого-то было менее хреновое решение.