我是WiX的新手。我在wix安装项目中找到了直接包含Microsoft Bootsrappers的教程。不幸的是,wix3.7无法实现,因为它希望使用WiX一个Bootstrapper项目来检查先决条件。
如何在我的WiX 3.7 Bootstrapper项目中使用Microsoft提供的Bootstrappers?
答案 0 :(得分:0)
如果您已构建要包含在WiX Bootstrapper项目中的Microsoft Bootstrapper,则在Wix / Bundle / Chain下创建一个ExePackage元素(通常位于名为Bundle.wxs的文件中)。列出ExePackage下Payload元素中所需的每个文件。
使用文本模板(.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>
它在.wxs文件中生成WiX片段。在Bundle.wsx中使用PackageGroupRef而不是ExePackage。
VS提示:要将现有文件添加到项目而不复制它,请单击“添加”按钮旁边的下拉箭头,然后选择“添加为链接”。
构建提示:通常,文本转换仅在保存模板时执行。当输出依赖于其他文件时,这不起作用。要转换每个构建版本,请使用TransformOnBuild。
另一方面,您可能更喜欢不使用Microsoft Bootstrapper。然后,您必须将每个引用的包重新创建为一个或多个Wix Bootstrapper ExePackage或MsiPacakges元素。例如,如果您依赖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元素。