首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX 3.7使用

WiX 3.7使用
EN

Stack Overflow用户
提问于 2013-03-25 08:36:01
回答 1查看 851关注 0票数 1

我是WiX的新手。我在wix安装项目中找到了教程,其中包括。不幸的是,这在wix3.7中是无法实现的,因为它期望使用WiX,一个引导程序项目来检查先决条件。

如何在我的WiX 3.7 Bootstrapper项目中使用微软提供的引导程序?

EN

回答 1

Stack Overflow用户

发布于 2013-03-30 16:59:16

如果您已经构建了希望包含在WiX Bootstrapper项目中的,那么在Wix/Bundle/Chain下为它创建一个ExePackage元素(通常在一个名为Bundle.wxs的文件中)。列出ExePackage下的Payload元素中所需的每个文件。

列表很容易用文本模板(.tt)生成。不幸的是,WiX项目(.wixproj)没有提供添加或构建此类文件的功能。简单的解决方法是创建一个空的C#项目,在那里添加一个文本模板文件,然后只将生成的WiX文件添加到WiX项目中。

下面是一个示例文本模板:

代码语言:javascript
复制
<?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中使用PackageGroupRef而不是ExePackage。

VS提示:若要在不复制项目的情况下将现有文件添加到项目中,请单击add按钮旁边的下拉箭头,然后选择"Add“。

构建提示:通常,只有在保存模板时才执行文本转换。当输出依赖于其他文件时,这种方法不能很好地工作。要对每个构建进行转换,请使用http://msdn.microsoft.com/en-us/library/ee847423%28v=vs.100%29.aspx

替代方案

另一方面,您可能不喜欢使用Microsoft Bootstrapper。然后,必须将每个引用的包重新创建为一个或多个、ExePackage或MsiPacakges元素。例如,如果您依赖于4.0,您可以查看C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\SQL Server Compact Edition 4.0\EN\package.xml,查看所需的安装文件和命令,并根据该信息编写一个ExePackage元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15610597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档