WiX 本身很强大,使用本来也没那么难。奈何 WiX 3 的官方文档可读性极差且长期不更新,于是新手在使用 WiX 制作安装包时极容易出问题,导致制作的安装包各种行为不正常。...以下是查看日志的方法: 如何查看用 WiX 制作的安装包的日志 Debugger.Launch() 如果安装过程能执行到你编写的 C# 代码中,那么可以在入口处加上 Debugger.Launch()...对比测试 如果出现的问题日志上说明不明显,代码也没执行到自定义引导程序部分,那么可以考虑对照正常状态的 WiX 项目替换组件调查。这可以快速将问题范围定位到某个文件甚至是某行代码上。...例如在制作 WPF 安装包界面的教程中,我们有四个项目。这个示例已经开源到 GitHub 上了。于是我们可以尝试将出问题的项目中的部分模块替换成这个正常的项目对应部分。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
查看 WiX 帮助文件文档中 Package 元素的其他可用属性。请注意,我们可以指定安装程序版本、文件压缩,甚至安装权限(如果面向 Windows Vista)。...但是,更大的安装程序可能需要跨多个磁盘。在这种情况下,您需要在 WiX 源文件中定义多个 Media 元素,并根据需要将资源分配到每个磁盘中。...复杂引用和反向引用的处理,可能是链接程序必须实现的最难的工作。 下面我们来自定义一个安装程序。 添加安装的图形界面 WiX的安装界面使用的是命令行模式,我们现在在增加一个图形的安装界面。...WiX 3的图形界面在一个WixUIExtension里面定义,WixUI对话框库包含一套"stock"多话框,用来提供wizard风格的安装用户界面。用一个UIRef为安装包添加一个界面。...WixUI可以自定义,比如在界面上显示图片或者添加、删除某个界面。
在本教程中,我们将介绍如何在CentOS 7上的代理/主设置中安装开源Puppet 4。...这些主机将由其专用网络接口引用,这些接口映射到DNS中的“.nyc3.example.com”子域。这与准备教程中描述的基础结构相同:如何在CentOS 7上将BIND配置为专用网络DNS服务器。...您应该根据主服务器有多少可用内存以及它将管理多少个代理节点来自定义此设置。 首先,在您喜欢的文本编辑器中打开/etc/sysconfig/puppetserver。...可以添加不属于默认事实集的自定义事实。 收集的事实在许多情况下都很有用。例如,您可以创建Web服务器配置模板,并自动为特定虚拟主机填写适当的IP地址。...查看以下教程:10分钟带你光速入门运维工具之-Puppet 想要了解更多关于在主代理安装程序中安装Puppet 4的相关教程,请前往腾讯云+社区学习更多知识。
在本教程中,我们将介绍如何在Ubuntu 14.04上的主代理设置中安装开源Puppet 4。...您应该根据主服务器有多少可用内存以及它将管理多少个代理节点来自定义此设置。 首先,在您喜欢的文本编辑器中打开/etc/default/puppetserver。...让我们学习如何安装和添加Puppet代理! 安装Puppet Agent Puppet代理软件必须安装在Puppet master将管理的任何服务器上。在大多数情况下,这将包括基础架构中的每个服务器。...可以添加不属于默认事实集的自定义事实。 收集的事实在许多情况下都很有用。例如,您可以创建Web服务器配置模板,并自动为特定虚拟主机填写适当的IP地址。...查看以下教程:10分钟带你光速入门运维工具之-Puppet 想要了解更多关于在主代理安装程序中安装Puppet 4的相关教程,请前往腾讯云+社区学习更多知识。
其实有很多种打包的方式,在这里我只介绍在VS2008下用Wix制作VSPackage的安装程序。您首先要下载并安装Wix toolset(http://wix.codeplex.com/)。...为了演示安装后的效果,别忘了在向导中给它添加一个Menu Command。 创建Wix项目 新建一个项目,项目类型选择Wix-》Wix Project,如下图: ?...安装成功之后,重启VS,点击工具菜单,可以看到我们的Package已经被安装进去了: ? 重新运行这个安装程序可以卸载掉我们的Package。...改进安装包 虽然我们的安装包已经可以用了,但还存在几个问题: 它是英文的 如果用户没装VS2008,安装程序会报错 安装时,不想出现license对话框 执行devenv.exe /setup...(请稍等几分钟) 如果想在安装时先判断客户端有没有安装VS2008,需要指定Condition,如: <Condition Message="[ProductName
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 前面我们制作完成了一个简单的 exe 安装包。...如果我们要安装的程序运行需要 .NET Framework 环境,那么可以检查 .NET Framework 是否安装,如果未安装则可将其装上。...也就是说,如果哪天你在网上某处扒出来某份 WiX 安装包代码,你需要清楚到底应该把这份代码放到哪个文件中。...做两件事情: 将 .NET Framework 的安装加入到捆绑包的安装过程中; 将 .NET Framework 的安装包文件嵌入到捆绑包中或随包放到单独的文件中(可选)。...如果用户此时双击这个 exe 安装文件并且当前的 .NET Framework 版本不满足要求,则会弹出一个文件选择对话框,要求用户选择正确的 .NET Framework 安装文件以继续安装过程。
使用 WiX 的 Burn 引擎制作自定义托管引导程序的 exe 安装包时,你可能会遇到这种情况:明明目标电脑上已经装好了 .NET Framework,但无论如何就是会提示安装,始终不启动自定义的安装界面...现象 即使是在开发机上(.NET Framework 已经装好),双击制作的 exe 安装包也依然会提示安装 .NET Framework: 图片 如果强行安装,装完也依然不会启动自定义的引导程序。...加载安装前置的引导程序,因为托管宿主无法被加载,错误代码 0x80070490。...所以导致弹出 .NET Framework 安装界面的原因是引导程序无法加载我们的自定义界面,误认为前置没有装好,所以弹出了前置安装界面。...也就是说无论你的代码怎么写,托管引导程序都能把你引导起来,而不会出现此日志中输出的那样“无法加载托管宿主”。
Wix 是 Windows Installer XML 的缩写,它是微软提供的一组工具和规范的集合,用来制作MSI格式的安装包。另外值得一提的是,Wix是微软少有的开源软件之一。...制作MSI的工作有InstallShield,Wise,他们都是商业程序,需要付费,你也可以使用WiX来完成安装程序制作。...WiX和这些MSI的工具比较有不同的地方: 它完全用xml描述,使用命令行来生成,这非常容易整合到开发流程中,通过Nant,Msbuild调用 WiX是开源的,定制性非常好,你能够做用Wise或者InstallShield...微软内部的程序打包也是使用WiX的。...Deployment Tools Foundation (DTF) DTF就是msi.dll(Windows installer library)的.net包装,DTF使得为MSI安装包编写自定义Actions
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 前面我们制作完成了一个简单的 msi 安装包。...如果我们要安装的程序运行需要 .NET Framework 环境,那么也可以先进行 .NET Framework 版本检查。...[CDATA[ 和 ]]> 包裹起来了,避免判断条件中出现了一些会破坏 XML 语法的字符(如 等)出现导致意外的问题(但实际上在本例中,我们只用了字母和下划线,所以你也可以直接写 WIX_IS_NETFRAMEWORK...更低版本的 .NET Framework 没有直接的“是否安装”判断方法,需要根据版本号比较来判断,所以我不在此入门教程中列出。...下图是我魔改了 DEMO 后在 Windows 11 上的截图(放上来就是为了平衡美感的): 不过为了真实性,我还是找了台 Windows 7 纯净系统来测试: 如果点击“OK”,安装程序将直接退出
使用 WiX 的 Burn 引擎制作自定义托管引导程序的 exe 安装包时,双击生成的安装包没有反应。如果查看日志可以发现有 0x80070002 错误。本文介绍其调查和解决方法。...现象 双击制作的自定义引导程序的 exe 安装包没有反应,通过查看 Burn 引擎的输出日志可以发现如下关键的错误码: 1 2 3 4 5 6 7 8 9 ... [1874:8D8C][2021-07...这篇入门教程中,涉及到找不到托管引导程序(WiX 官方喜欢称之为 MBA,Managed Bootstrapper Application)的地方可能有这些: Bundle.wxs 文件中将托管引导程序加入到负载的地方...那么只剩下原因 2 了,如果发现其名称与实际程序集名称不一样(例如改了项目名,或者从教程中复制了代码却没有对应改成自己项目中的名字),那么原因就是这个了。...解决 修改 BootstrapperCore.config 文件(在这篇教程中是 App.config 文件),将 assemblyName 的值改为正确的托管引导程序(MBA)的名字。
WiX 全称为 Windows Installer XML,是使用 XML 文件创建 Windows 安装程序的一组工具集。它开源且完全免费。...制作的 exe 安装包添加 .NET Framework 前置的安装步骤 使用 WPF 制作安装界面(入门篇) 你可能在 Hello World 系列中遇到的问题和解决办法汇总 方法与汇总 使用 WiX...创建最简单的安装包过程中可能出现的问题和解决方案汇总 如何查看用 WiX 制作的安装包的日志 如何调试用 WiX 制作的安装包 具体问题 用 WiX 制作安装包:设置的 .NET Framework...- 已处理证书链,但是在不受信任提供程序信任的根证书中终止。...完成主要安装流程 // 未完待续… 可供查阅的资料汇总 可在 wxs 中编写的项目引用变量 $(var.ProjectName.Xxx) 系列) 其他 WiX Toolset 教程系列 WiX Toolset
如果没有预先安装 JRE 环境,又想直接运行 Java 程序,该怎么办呢? 这篇文章我们会先学习如何将 Java 程序打包成一个可执行的 Java JAR 文件。...工具还提供了常见的自定义操作,如应用名,应用图标等。...Winx3.14 下载:https://github.com/wixtoolset/wix3/releases/tag/wix314rtm 由于 hello.jar 是一个命令行程序,没有 UI界面,因此打包时使用...常见的 Windows 下 jpackage 参数还有: • --type : 指定打包后的格式,如 msi、exe,默认 exe。...• --win-console:使用控制台窗口启动我们的应用程序 • --win-shortcut : 在 Windows 开始菜单中创建快捷方式文件 • --win-dir-chooser:让最终用户指定自定义目录来安装可执行文件
在 Wix,我们的 MetaSite 服务就面临着这样的情况,它为 Wix 用户创建的每个站点保存了大量的元数据,比如站点版本、站点所有者以及站点上安装了哪些应用程序——已安装应用上下文(The Installed...其次,他们创建了一个有自己数据库的“只写”服务(反向查找写入器),该服务使用站点元数据对象,但只获取已安装应用上下文并写入数据库。即将站点元数据的某个“视图”(已安装的应用程序)投影到数据库中。...已安装应用上下文消费与投影 第三,他们创建了一个“只读”服务,只接受与已安装应用上下文相关的请求,通过查询存储着“已安装应用程序”视图的数据库来满足请求。...在 Wix,我们将这些压缩主题用作内存中的 kv-store,我们在应用程序启动时加载(消费)来自主题的数据。这有一个 Redis 没有提供的好处,这个主题还可以被其他想要获得更新的用户使用。 ...内置的重试生成器将在出错时生成一条下一个重试主题的消息,该消息带有一个自定义头,指定在下一次调用处理程序代码之前应该延迟多少时间。 还有一个死信队列,用于重试次数耗尽的情况。
使用 WiX 的 Burn 引擎制作自定义托管引导程序的 exe 安装包时,双击生成的安装包没有反应。如果查看日志可以发现有 0x80131508 错误。...本文介绍其调查和解决方法 现象 双击制作的自定义引导程序的 exe 安装包没有反应,通过查看 Burn 引擎的输出日志可以发现如下关键的错误码: 1 2 3 4 5 6 7 8 9 ......参考这篇入门教程中的代码,如果 AssemblyInfo.cs 文件中缺少标记 BootstrapperApplication 类型的特性,那么就会出现此错误。...然而呀,官方在教大家写托管引导程序的时候,翻遍了整个文档都没有提醒过要写这个特性!所以特别容易被官方文档带偏,这里记录此文章避免大家踩坑。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
在 Wix,我们的MetaSite服务就是这种情况,它为 Wix 用户创建的每个站点保存了大量元数据,例如站点版本、站点所有者以及站点上安装了哪些应用程序-已安装的应用程序上下文。...即,它将站点元数据的某个“视图”(已安装的应用程序)投射到数据库中。...使用和项目安装的应用程序上下文 第三,他们创建了一个“只读”服务,只接受与已安装应用程序上下文相关的请求,他们可以通过查询存储计划的“已安装应用程序”视图的数据库来完成这些请求。...为此,Wix 自定义Job Scheduler服务调用由Payments Subscription服务预先配置的 REST 端点。 订阅续订过程发生在幕后,无需(人类)用户参与。...内置的重试生产者将在出错时生成消息到下一个重试主题,并带有一个自定义标头,指定在下一次处理程序代码调用之前应该发生多少延迟。 对于所有重试尝试都已用尽的情况,还有一个死信队列。
2009年4月18日发布的Wix RC2(v3.0.5217.0),就意味着Wix v3.0RTM将要到来。...Visual Studio 2010将会配备WiX 3.5,SharpDevelop 3.0中已经即成了Wix 3.0.4917.0。 我们都习惯了安装程序有个向导,一步一步的进行。...wix 提供了中文的资源文件。在使用light.exe链接时,增加命令行参数 -loc xxx.wxl 即可。wix2.0 发布了 wixui_zh-cn.wxl,期待3.0快点发布。...mallow:http://download.csdn.net/source/990783 WiX: Windows开发人员安装/部署项目的未来: http://www.infoq.com/cn/news.../2008/12/WiX 使用Visual Studio 2010和WiX 3.0开发托管自定义操作: http://www.infoq.com/cn/news/2009/02/WiX30
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。...在这段代码中,我们做了这些事情: 在 Run 方法中全程记录日志(使用 BootstrapperApplication 基类 Engine 属性的 Log 方法来记); 做了全局异常处理(避免因出现未知异常导致安装程序无法退出又看不到界面...); 正常退出安装过程(通过调用 Engine.Quit); 设置 WPF 资源程序集(默认情况下 WPF 会去入口程序集中找,但在 WiX 引导启动后入口程序集为 null,所以我们需要手动指定资源程序集为本程序集...接下来,在 AssemblyInfo.cs 文件中,我们将 Program 类标记为自定义的引导程序: 1 2 3 4 5 6 7 ... ++ using Microsoft.Tools.WindowsInstallerXml.Bootstrapper...如果发现无法运行,请前往此篇文章调试和解决问题: 使用 WiX 创建最简单的安装包过程中可能出现的问题和解决方案汇总 如果可以正常运行,那么恭喜你,完成了 WiX 安装包入门教程的 Hello World
如果你使用 WiX 制作安装包,并且遇到了问题,一定需要一个趁手的调试方案。本文介绍如何查看 WiX 制作的安装包的日志。...WiX 使用 Burn 引擎来制作 exe 捆绑包,默认情况下 Burn 引擎使用自带的安装界面来执行安装。...Burn 引擎提供了自定义引导程序的功能,于是你可以利用 Burn 引擎做出自己的 UI 来。比如 用 WPF 来制作安装包界面。...因此,我们有通用的方法来查看安装日志,只需要在启动安装程序时传入参数: 1 > ....\Walterlv.Demo.MainApp.exe -l "debug.log" 其中,Walterlv.Demo.MainApp.exe 是我在 WiX 入门教程系列中使用的安装包名。
在 Wix,我们的 MetaSite 服务就面临着这样的情况,它为 Wix 用户创建的每个站点保存了大量的元数据,比如站点版本、站点所有者以及站点上安装了哪些应用程序——已安装应用上下文(The Installed...即将站点元数据的某个“视图”(已安装的应用程序)投影到数据库中。...已安装应用上下文消费与投影 第三,他们创建了一个“只读”服务,只接受与已安装应用上下文相关的请求,通过查询存储着“已安装应用程序”视图的数据库来满足请求。...Wix 开发人员使用我们自定义的Greyhound消费者,因此,他们只需指定一个 BlockingPolicy,并根据需要指定适当的重试间隔。...内置的重试生成器将在出错时生成一条下一个重试主题的消息,该消息带有一个自定义头,指定在下一次调用处理程序代码之前应该延迟多少时间。 还有一个死信队列,用于重试次数耗尽的情况。
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 本文将带大家制作一个简单的 msi 安装包。...本文操作基于系列教程中的一个最简项目,见 准备一个用于学习 WiX 安装包制作的 Visual Studio 解决方案。...注意,选择的模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介中说明这是在创建“MSI”文件 引用目标项目 在 WiX MSI 项目(在本教程中,我取的名字为 Walterlv.Installer.Msi...本例的目标程序只有一个文件,因此我们只放了一行,如果你要打包多个文件,可返回本教程目录页查阅其他文章。 编辑基本的安装包信息 此时,我们距离完成 msi 打包只剩最后一步了,就是填写基本的安装包信息。...,当然也是控制面板“卸载程序”中的名字。
领取专属 10元无门槛券
手把手带您无忧上云