Если вы создали Microsoft Bootstrapper, который хотите включить в проект WiX Bootstrapper, создайте для него элемент ExePackage в разделе Wix/Bundle/Chain (обычно в файле с именем Bundle.wxs). Перечислите все файлы, необходимые в элементе Payload в разделе ExePackage.
Список легко создается с помощью текстового шаблона (.tt). К сожалению, проекты WiX (.wixproj) не позволяют добавлять или создавать такие файлы. Простой обходной путь — создать пустой проект C#, добавить туда файл текстового шаблона и добавить только сгенерированный файл WiX в ваш проект WiX.
Вот пример текстового шаблона:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".wxs" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<!--
Generated file list for a WixBootstrapper project
<#=DateTime.Now.ToString("s")#>
-->
<#
// Assumes all projects are in sibling folders so relative paths can be used
var thisProjectDir = new FileInfo(this.Host.TemplateFile).Directory;
var appProjectDir = Path.GetFullPath(thisProjectDir + @"\..\DemoApplication");
var sourceFiles = Directory
.GetFiles(appProjectDir + @"\publish", "*.*", SearchOption.AllDirectories)
.Select(s => s.Replace(appProjectDir, @"..\DemoApplication"));
var payloads = sourceFiles
.Select(s => String.Format("<Payload SourceFile='{0}' Name='{1}' />", s, s.Replace(@"..\DemoApplication\publish\", "")));
#>
<Fragment>
<PackageGroup Id="DemoApplicationBootstrapper">
<ExePackage InstallCommand="Setup.exe" SourceFile="<#=sourceFiles.FirstOrDefault(s=>s.Contains("setup.exe"))#>">
<# foreach (var payload in payloads) { #>
<#=payload#>
<# } #>
</ExePackage>
</PackageGroup>
</Fragment>
</Wix>
Он генерирует фрагмент WiX в файле .wxs. Используйте PackageGroupRef вместо ExePackage в вашем Bundle.wsx.
Совет VS. Чтобы добавить существующий файл в проект, не копируя его, щелкните стрелку раскрывающегося списка рядом с кнопкой "Добавить" и выберите "Добавить как ссылку".
Совет по сборке. Обычно преобразования текста выполняются только при сохранении шаблона. Это не работает, когда вывод зависит от других файлов. Для преобразования каждой сборки используйте TransformOnBuild.
Альтернатива
С другой стороны, вы можете предпочесть не использовать Microsoft Bootstrapper. Затем вам нужно будет воссоздать каждый упомянутый пакет как один или несколько элементов ExePackage или MsiPacakges Wix Bootstrapper. Например, если у вас есть зависимость от SQL Server Compact Edition 4.0, вы можете заглянуть в C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\SQL Server Compact Edition 4.0\EN\package.xml
, увидеть необходимые установочный файл и команду и создать элемент ExePackage на основе этой информации.
person
Tom Blodget
schedule
30.03.2013