首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于要在MSBUILD中使用的用户定义目录创建wix片段文件的最佳方法

在MSBUILD中使用用户定义目录创建WiX片段文件的最佳方法是使用WiX Toolset。WiX Toolset是一个用于创建Windows安装程序的开源工具集,它提供了一组用于创建安装程序的XML文件和命令行工具。

要在MSBUILD中使用WiX Toolset,您需要首先安装WiX Toolset。您可以从官方网站下载WiX Toolset的最新版本,并按照安装说明进行安装。

接下来,您需要在MSBUILD项目文件中添加WiX Toolset的相关任务和目标。您可以使用MSBUILD的<UsingTask>元素来定义WiX Toolset的任务,并使用<Target>元素来定义构建过程中的目标。

例如,您可以使用以下代码来创建一个名为“BuildWixFragment”的MSBUILD目标,该目标将使用WiX Toolset的candle.exelight.exe命令行工具来编译和链接WiX片段文件:

代码语言:xml<UsingTask TaskName="Candle" AssemblyFile="$(WixToolPath)\Wix.dll" /><UsingTask TaskName="Light" AssemblyFile="$(WixToolPath)\Wix.dll" /><Target Name="BuildWixFragment">
复制
  <Candle
    Source="$(MSBuildProjectDirectory)\path\to\wixfragment.wxs"
    Output="$(MSBuildProjectDirectory)\path\to\wixfragment.wixobj"
    ToolPath="$(WixToolPath)" />
 <Light
    Output="$(MSBuildProjectDirectory)\path\to\wixfragment.wixlib"
    Input="$(MSBuildProjectDirectory)\path\to\wixfragment.wixobj"
    ToolPath="$(WixToolPath)" />
</Target>

在上面的代码中,$(WixToolPath)是WiX Toolset的安装目录,$(MSBuildProjectDirectory)是MSBUILD项目文件的路径。

最后,您可以在MSBUILD的构建过程中调用“BuildWixFragment”目标来创建WiX片段文件。例如,您可以在MSBUILD的<Project>元素中添加以下代码:

代码语言:xml<Target Name="Build" DependsOnTargets="BuildWixFragment" />
复制

这将使得在构建MSBUILD项目时,“BuildWixFragment”目标将被自动调用,从而创建WiX片段文件。

总之,基于要在MSBUILD中使用的用户定义目录创建WiX片段文件的最佳方法是使用WiX Toolset,并在MSBUILD项目文件中定义相关的任务和目标。这样可以确保在构建MSBUILD项目时,WiX片段文件能够被正确地创建和编译。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET5 中静态文件的各种使用方式服务端的静态文件开启目录浏览呈现默认文件使用UseFileServer方法文件类型基于IIS的考虑最佳实践

服务端的静态文件 默认情况下,静态文件被存放在项目的wwwroot目录下,而wwwroot的地址被定义在project.json文件中: { "webroot": "wwwroot",...... } 静态文件被存储在wwwroot下的任何目录中,它被客户端以相对路径的方式访问,例如,当你在Visual Studio中创建一个默认的Web应用程序时,一些文件夹就已经创建在了wwwroot目录下...假如你知识这样简单的调用了UseDefaultFiles方法并且使用一个目录的Url进行访问,那么这个中间件将会搜索下列中的一个文件,假如他们中有一个被找到,那么这个文件将会作为默认的文件被展示: default.htm...ASP.NET 静态文件中间件定义了将近400中文件类型,加入用户视图访问一个中间件不包含的文件类型,ASP.NET将不会尝试去提供这个文件。...使用这样的目录结构,你可以通过上文中所述方法开启目录浏览和静态文件访问的功能,你可以通过http://localtion/images 目录看到test.image文件,但是当你点击这个文件,你将收到一个

2K80

WiX 3.6——强大的.NET部署工具

Visual Studio 2012去除了“VS Setup”,取而代之以开源的WiX工具包来创建安装包。...最近发布的WiX3.6包括Burn引导程序/安装链,这意味着不仅可以创建像MSI文件这样的安装包,还可以将多个安装包组成安装链(比如安装准备)以向用户提供更加流畅的安装体验。...新发布的WiX还包含了一些新的特性,并且修复了500多个bug。 如果你已经在使用VS Setup,可以通过这段PowerShell脚本将既有的VS Setup工程转化为WiX工程格式。...另外,相比于在文本编辑器中编辑XML文件,你可以使用Votive——一个VS包。...使用Votive,可以在Visual Studio中编写WiX脚本,还可以使用智能感知、MSBuild支持和工程模板等功能。

1K100
  • 用 WiX 制作安装包:制作 WPF 安装包界面(入门篇)

    小提示 本教程前面为了不引入过多的复杂度,没有使用 NuGet 包中的工具集而是单独下载了;所以实际上大家已经有了现成的工具集可供引用,我们才能使用此方法修改引用路径...并且此方法也能确保 WiX 打包项目使用的工具集版本和 WPF UI 项目使用的工具集版本一致。...在这段代码中,我们做了这些事情: 在 Run 方法中全程记录日志(使用 BootstrapperApplication 基类 Engine 属性的 Log 方法来记); 做了全局异常处理(避免因出现未知异常导致安装程序无法退出又看不到界面...在最终生成的捆绑包中,这个配置文件必须严格使用此名称。...如果发现无法运行,请前往此篇文章调试和解决问题: 使用 WiX 创建最简单的安装包过程中可能出现的问题和解决方案汇总 如果可以正常运行,那么恭喜你,完成了 WiX 安装包入门教程的 Hello World

    1.1K20

    用 WiX 制作安装包:安装 WiX Toolset 工具集

    本文是 WiX Toolset 安装包制作入门教程 系列中的首篇,可前往阅读完整教程。 WiX 提供一组工具集,我们的安装包正是通过这一组工具集来编译生成的。...从官网下载安装 WiX Toolset 请前往其 GitHub 发布页下载: Releases · wixtoolset/wix3 为了简单,可下载其中的 wix311.exe 文件。...使用 NuGet 的方式是按项目安装的,仅此解决方案(sln)有效。安装了此 NuGet 包的项目将可完全使用 WiX 工具集(因为包里包含了构建安装包需要的 MSBuild 属性)。... 如果感兴趣通过 NuGet 的方式来安装 WiX Toolset,我可以再写一篇专门使用此方式安装并在团队所有人电脑上可直接构建安装包的博客...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    2.7K30

    0.C#Make自动化构建-简介

    熟悉大名鼎鼎的Make的小伙伴,应该已经知道Cake大致是个什么样的工具了,Cake具有以下几个特点: 方便编写:使用基于C#的DSL,非常易于编写自动化的脚本。...丰富的工具集:支持MSBuild,MSTest,xUnit,NUnit,Nuget,ILMerge,Wix和SignTool等等,以及支持丰富的插件(Cake Addins)。...1.1 下载引导脚本 首先第一步下载一个基于Powershell的引导脚本文件build.ps1,这个文件并不是必须的,你可以直接用调用cake脚本文件),在项目所在的目录下运行: Invoke-WebRequest...首先,创建了一个参数target(名字和build.ps1中指定的参数名一致),默认值是“default”。...其次,创建了一个名为build的Task,这个task调用MSBuild来build我们的项目。

    1.6K50

    .NET 基金会项目介绍-WiX Toolset

    WiX Toolset 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译、如与原文存在出入,请以原文为准。...WiX Toolset 如果你想构建一个 Windows 安装工具,那么 WiX Toolset 已经准备了一组强大的工具随时待命。...创建安装包的过程可以无缝的接入你的开发过程中,完美与 Visual Studio 集成。...而假若需求并不复杂,那么 WiX Toolset 就是一个有力的替代方案。 因此,作为免费方案被很多开源软件所使用。...】 Peachpie Compiler Platform - 【.Net上运行PHP】 Polly - 【服务调用工具库】 Prism - 【客户端MVVM开发框架】 Protobuild - 【项目文件生成工具

    94500

    用 WiX 制作安装包:为 WiX 制作的 exe 安装包添加 .NET Framework 前置的安装步骤

    本文基于前一篇文章已经建好的项目继续: 用 WiX 制作安装包:创建一个简单的 exe 安装包 背景知识 在开始给我们的 exe 安装包增加 .NET Framework 环境检查之前,我们先了解一点背景知识...WiX 已开源,其中 wix3 的代码在这里: wixtoolset/wix3: WiX Toolset v3.x 在 /src/ext/NetFxExtension/wixlib 目录下有已定义好的各种...: 解释一下: 我创建了一个“Assets”文件夹用于存放刚下载好的 .NET Framework 的离线安装包(为了避免读者在概念上产生混淆,我刻意避开使用 redist 这个名字,以示说明解决方案内的文件夹结构仅为开发文件夹结构...(WiX 中定义这些文件名是全大写的,下载下来的是全小写的,虽然实际上大小写并不影响)。...如果你希望避免用户选择文件,那么就需要把安装包放到 exe 文件同级目录下的 redist 文件夹中。

    85410

    使用WiX制作简单MSI安装程序

    创建一个新的WiX项目 1、文件--〉新建--〉项目 2、选择项目类型WiX,选择Wix项目模板点击确定 我们就创建了一个没有安装什么内容的WiX项目,内容如下: 要在 WiX 源文件中定义多个 Media 元素,并根据需要将资源分配到每个磁盘中。...是 Cabinet 字符串 Cabinet 的名称(如果将存储在媒体上的部分文件或所有文件都压缩到了 Cabinet 文件中)。如果未使用任何 Cabinet,此属性必须为空。...在安装目录里面是Component元素,每一个Component就是一组我们要放置到WiX的资源,就是在这个地方放置我们的安装文件。...下面我们来自定义一个安装程序。 添加安装的图形界面 WiX的安装界面使用的是命令行模式,我们现在在增加一个图形的安装界面。

    3.7K90

    用 WiX 制作安装包:创建一个简单的 msi 安装包

    本文操作基于系列教程中的一个最简项目,见 准备一个用于学习 WiX 安装包制作的 Visual Studio 解决方案。...注意,选择的模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介中说明这是在创建“MSI”文件 引用目标项目 在 WiX MSI 项目(在本教程中,我取的名字为 Walterlv.Installer.Msi...编辑 Product.wxs 文件 添加要打包的文件 在 Product.wxs 文件中,找到提示你放文件、注册表项和其他资源的注释“文件的输出目录(在项目目录的 bin\Debug 下): ▲ 前往 MSI 文件的输出目录 安装完后,可以在系统设置“应用和功能”以及“Program Files”目录中找到它:...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    2K60

    .NET 基金会项目介绍-MSBuild

    MSBuild 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译、如与原文存在出入,请以原文为准。...MSBuild Microsoft Build Engine, 简称 MSBuild , 是一个构建应用程序的平台。...@microsoft.com 笔者简评 MSBuild 作为构建工具是.Net开发中的重要一环。...csproj/sln文件之所以能够工作,都是 MSBuild 在起作用。 在日常使用中除了使用 VS 一键调用 MSBuild 进行生成和发布之外。...在编写自动化脚本时也无法离开 MSBuild 的调用。 开发者可以自定义 MSBuild 的 Target 任务,实现在代码构建时进行代码生成、自动化调用、输出信息等等各种各样的操作。

    80610

    初试WIX加SQL LocalDB

    最近有个项目需要生成一个自动打包安装App和数据库的MSI文件,经同事推荐WIX,于是乎就试了一试。...遇到了一些问题觉得有分享的价值,所以写篇博客记录一下 :) 使用感觉: WIX特点:功能很强大,用XML配置实现,没有界面,弹性很大,但learning curve比较长。...& '[#SetupDatabase]' ; exit $$($Error.Count)"" /> 问题二: Window 7 对权限管控比较严,SQL Scripts对C:盘大多数目录没有创建文件的权限...\Microsoft SQL Server Local DB 问题三: 怎么把一个%UserProfile%目录从Powershell中传给SQL Script使用 解决方案: 在Powershell中拿到...123','sa'" 以上是本人实践的一些方法和遇到的问题及解决方案,可能不是最佳解决方案,但确实可运行\可工作的方案。 如有问题或建议,希望能和大家探讨,同时也希望本文能帮到一部分人~~

    1.3K60

    如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

    我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...想了解 PrivateAssets 的含义一起相关属性,可以阅读我的另一篇文章项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。...(如果你想了解更多 csproj 中的 NuGet 属性,可以阅读我的另一篇文章:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅)...关于这些属性更详细的解释,依然可以参见:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。...,就不会随便在 csproj 中写死常量啦) - 吕毅 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 当然,还有一些正在编写,过一段时间可以阅读到

    1.4K10

    用 WiX 制作安装包:为 WiX 制作的 msi 安装包添加 .NET Framework 环境检查

    本文基于前一篇文章已经建好的项目继续: 用 WiX 制作安装包:创建一个简单的 msi 安装包 添加 WixNetFxExtension 引用 在 msi 安装包项目的“Reference”上右键,“添加引用...在 WiX 的配置文件 wxs 里,引用一个属性的方法是使用 元素。.../wixlib 目录下有已定义好的各种 .NET Framework 版本的判断逻辑。...更低版本的 .NET Framework 没有直接的“是否安装”判断方法,需要根据版本号比较来判断,所以我不在此入门教程中列出。...如需检查这些环境,要么需要自己写判断方法(不属于此新手教程内容),要么需要升级到 WiX 4(本教程基于 WiX 3)。

    1.2K30

    6种事件驱动的架构模式

    在 Wix,我们将这些压缩主题用作内存中的 kv-store,我们在应用程序启动时加载(消费)来自主题的数据。这有一个 Redis 没有提供的好处,这个主题还可以被其他想要获得更新的用户使用。  ...Wix Payments Subscriptions 服务就是一个例子,它管理基于订阅的支付(例如瑜伽课程的订阅)。 对于每个月度或年度订阅用户,必须通过支付提供程序完成续订过程。...为此,Wix 自定义的 Job Scheduler 服务调用由 Payments Subscription 服务预先配置好的 REST 端点。 订阅续期过程在后台进行,不需要(人类)用户参与。...Wix 开发人员使用我们自定义的 Greyhound 消费者,因此,他们只需指定一个 BlockingPolicy,并根据需要指定适当的重试间隔。...当配置重试策略时,Greyhound 消费者将创建与用户定义的重试间隔一样多的重试主题。

    2.5K20

    如何创建一个基于命令行工具的跨平台的 NuGet 工具包

    一篇介绍写基于 MSBuild Task 的 dll,一篇介绍写任意的命令行工具,可以是用于 .NET Framework 的 exe,也可以是基于 .NET Core 的 dll,甚至可以是使用本机工具链编译的平台相关的各种格式的命令行工具...我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...(如果你想了解更多 csproj 中的 NuGet 属性,可以阅读我的另一篇文章:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅)...关于这些属性更详细的解释,依然可以参见:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。...,就不会随便在 csproj 中写死常量啦) - 吕毅 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 当然,还有一些正在编写,过一段时间可以阅读到

    1K20

    聊聊事件驱动的架构模式

    在过去一年里,我一直是数据流团队的一员,负责Wix事件驱动的消息传递基础设施(基于 Kafka)。有超过 1400 个微服务使用这个基础设施。...Wix Payments Subscriptions 服务就是一个例子,它管理基于订阅的支付(例如瑜伽课程的订阅)。 对于每个月度或年度订阅用户,必须通过支付提供程序完成续订过程。...为此,Wix 自定义的 Job Scheduler 服务调用由 Payments Subscription 服务预先配置好的 REST 端点。 订阅续期过程在后台进行,不需要(人类)用户参与。...Wix 开发人员使用我们自定义的Greyhound消费者,因此,他们只需指定一个 BlockingPolicy,并根据需要指定适当的重试间隔。...当配置重试策略时,Greyhound 消费者将创建与用户定义的重试间隔一样多的重试主题。

    1.5K30

    基于Kafka的六种事件驱动的微服务架构模式

    在过去的一年里,我一直是负责Wix的事件驱动消息基础设施(基于Kafka之上)的数据流团队的一员。该基础设施被 1400 多个微服务使用。...Wix Events(允许 Wix 用户管理活动门票和 RSVP)还可以使用Bookings的时区主题,并在一个国家/地区更改其时区以实现夏令时自动获取其内存中 kv 存储的更新。...一个例子是管理基于订阅的支付(例如订阅瑜伽课程)的Wix 支付订阅服务。对于每个每月或每年订阅的用户,必须与支付提供商进行续订过程。...配置重试策略后,Greyhound Consumer 将创建与用户定义的重试间隔一样多的重试主题。...这种重试机制的灵感来自这篇uber 文章。 Wix 最近开源了Greyhound,很快就会对 beta 用户开放。要了解更多信息,您可以阅读 github自述文件。

    2.3K10

    用 WiX 制作安装包:创建一个简单的 exe 安装包

    本文开始前,请确保你已经可以生成一个最简单的 msi 安装包了: 用 WiX 制作安装包:创建一个简单的 msi 安装包 由于 exe 格式的安装包自己带了 UI,所以 msi 中的 UI 怎么样都是可以不用管的...注意,选择的模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介中说明这是在创建“EXE”文件 创建完后,记得去项目属性里改一下输出的文件名。...我们需要在这个捆绑包里面安装我们上一篇教程中创建的 MSI 安装包,所以我们需要引用这个创建 MSI 的项目。...前往 EXE 文件的输出目录(在项目目录的 bin\Debug 下): ▲ 前往 EXE 文件的输出目录 双击安装,可以出现默认的安装界面: ▲ 默认的安装界面 安装完后,可以在系统设置“应用和功能...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    1.5K20

    .NET 项目自定义 MSBuild Task

    1 MSBuild Task 利用 MSBuild Task, 可以在编译阶段,完成很多自定义的操作。比如最常见的,就是在编译完成之后,复制一些额外的文件到输出目录中。...但 Roslyn Analyzer 对 API 使用的限制很严格,代码必须是 Pure 的,不能访问和操作任何外部的东西。 也就是不能使用 IO 相关的 API,想要在这里读写本地文件是不可以的。...想法的源头来自这里:git 禁止大文件提交到仓库中 参考资料 团队项目利用Msbuild自定义Task实现增量发布 - Starup - 博客园 MSBuild入门(续) - Timetombs...- 博客园 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - walterlv 如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild...Target(附各种自带的 Task) - walterlv 使用 MSBuild 代码编写自己的任务 - MSBuild | Microsoft Learn 使用 MSBuild 创建自定义任务

    8510
    领券