本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 本文将带大家制作一个简单的 exe 安装包。...本文开始前,请确保你已经可以生成一个最简单的 msi 安装包了: 用 WiX 制作安装包:创建一个简单的 msi 安装包 由于 exe 格式的安装包自己带了 UI,所以 msi 中的 UI 怎么样都是可以不用管的...我们需要在这个捆绑包里面安装我们上一篇教程中创建的 MSI 安装包,所以我们需要引用这个创建 MSI 的项目。...UpgradeCode 如果改成和之前的 MSI 文件的一样,那么无论是做成 MSI 还是 EXE 格式的安装包,他们都是可以互相被升级的。...▲ 卸载包 另外,觉得不错可以提交一下代码,方便后续章节的学习。 附源代码 附上必要的源码,避免你在阅读教程时因模板文件的版本差异造成一些意料之外的问题。
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 前面我们制作完成了一个简单的 exe 安装包。...-- 其他元素 --> 这里引入了两个很重要的概念:产品(Product)和捆绑包(Bundle)。...也就是说,如果哪天你在网上某处扒出来某份 WiX 安装包代码,你需要清楚到底应该把这份代码放到哪个文件中。...WiX 的官方文档中明确说明了这两个元素分别具有的不同特性和子级: Product Element Bundle Element 添加 WixNetFxExtension 引用 在 exe 安装包项目的...将 .NET Framework 的安装包文件嵌入到捆绑包中 如果你在前一个步骤中选择的是通过 Web 的方式来安装 .NET Framework,那么此步骤就不需要了。
题目 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。...解题思路 先比较根节点的值是否相同 && 左子树相同 && 右子树相同 代码 public boolean isSameTree(TreeNode p, TreeNode q) { if
原文: Wix 安装部署(五) Bootstrapper 捆绑安装 Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来...wix又是一个极端,完全依赖xml。这两天想解决自动检测.net framework版本没有就自动安装的功能和注册dll的就很费劲。...但今天要讲的,就是wix中的Bootstrapper 项目,制作一个捆绑安装程序,也是Windows Installer中没有的。将多个需要安装的文件,按照顺序一次性装完。...说几个重要的属性:Compress=“yes” 表示是压缩,no的话,debug中这个安装包就会独立出来,全部是yes的话最终就一个exe文件。...Permanent=”yes” 表示如果是卸载的话,这个文件会保留,为no的话,用户卸载的时候会一起卸载掉。VersionNT 变量代表系统,5.1指的是xp 4.判断是否注册。
我们将做这些事情: 创建一个 WPF 项目,用来做安装包的 UI 处理一下这个 WPF 项目,使其对接 WiX 的捆绑包 修改用来生成 exe 格式安装包的捆绑包项目,使其接入 WPF UI 项目 创建...捆绑包,我们先建一个 Program.cs 文件作为启动文件。...这样,这个 WPF UI 项目就是一个纯 UI 库,用于后面被捆绑包调用。...将 WPF UI 项目对接 WiX 捆绑包 1....); 将此 WPF UI 作为捆绑包负载放入捆绑包中; 将前面编写的 BootstrapperCore.config 文件作为捆绑包负载放入捆绑包中。
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 本文将带大家制作一个简单的 msi 安装包。...本文操作基于系列教程中的一个最简项目,见 准备一个用于学习 WiX 安装包制作的 Visual Studio 解决方案。...如果希望更改 MSI 安装包的文件名,则需要去项目的属性页里去修改,如下图: 测试效果 现在,我们完成了一个最简单的 MSI 安装包,测试安装一下。...虽然这次没什么影响,但后续我们会学到的某个操作可能导致未及时卸载的包再也无法通过正常途径卸载,所以请保持良好的习惯。(虚拟机调试的小伙伴可无视)。...另外,觉得不错可以提交一下代码,方便后续章节的学习。 附源代码 附上必要的源码,避免你在阅读教程时因模板文件的版本差异造成一些意料之外的问题。
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。 前面我们制作完成了一个简单的 msi 安装包。...本文基于前一篇文章已经建好的项目继续: 用 WiX 制作安装包:创建一个简单的 msi 安装包 添加 WixNetFxExtension 引用 在 msi 安装包项目的“Reference”上右键,“添加引用...在 WiX 的配置文件 wxs 里,引用一个属性的方法是使用 元素。...可供判断的 .NET Framework 版本 WiX 已开源,其中 wix3 的代码在这里: wixtoolset/wix3: WiX Toolset v3.x 在 /src/ext/NetFxExtension...如需检查这些环境,要么需要自己写判断方法(不属于此新手教程内容),要么需要升级到 WiX 4(本教程基于 WiX 3)。
在 WiX 安装包制作时,Product.wxs 文件中的 Product 标签中存在一些属性,这些属性应该如何设置才是比较合适的呢?...本文是对我另一篇入门教程博客的一点补充: 用 WiX 制作安装包:创建一个简单的 msi 安装包 Id、Version Id:产品 Id。 Version:产品版本。...关于这两个值的变化: 如果这两个值都没有更改而构建出一个新的 MSI 安装包,那么 Windows Installer 会认为这两个包之间属于“小型更新”(Update)。...如果这两个值都更改了,那么 Windows Installer 会认为这两个包之间属于“主要升级”(MajorUpgrade)。...在没有配置升级策略的情况下,如果有两个不同的 MSI 包设置了相同的 Id 和 Version,那么当安装了其中一个之后,另一个将无法安装。
使用 WiX 的 Burn 引擎制作自定义托管引导程序的 exe 安装包时,你可能会遇到这种情况:明明目标电脑上已经装好了 .NET Framework,但无论如何就是会提示安装,始终不启动自定义的安装界面...然而这是捆绑包中的判断,与 Product.wxs 无关;我们默认用的是 WixNetFxExtension.dll 中的判断,这很靠谱,也不会出问题,所以也与 InstallCondition 和DetectCondition...这可能是两个范围: 我们自定义的 BootstrapperApplication 的第一行代码 Run 之前 我们自定义的 BootstrapperApplication 的第一行代码 Run 之后 这很好区分...,在 Run 的第一句加上一个 “Debugger.Launch()”,看看再启动安装包的时候是否会弹出调试器选择框即可。...所以以上的两个范围只能是范围 1。 小提示 实际上按目前的日志输出,已经足以确定是范围 1 了,不过这需要一些先验知识,即托管引导程序能捕获 Run 方法中的所有异常。
这是使用 WiX Toolset Windows 安装程序的默认界面外观,算不上太好看,而且没有太多对安装程序进行说明的品牌信息。 第2步 安装目录 ? 同样,没有太多的品牌信息。 第3步 安装 ?...安装程序不再捆绑 JRE 而是在操作系统中寻找合适的 JRE。如果用户想要使用一个不同的 JRE,可以在安装时指定。 安装程序已经支持 Java 11,包括在 Java 11 预览上面列出的组件。...安装程序已经升级带有品牌了,这让它看起来更酷并能提供一个更好的用户体验。 截图 以下是新安装程序的系列屏幕截图: 第1步 启动安装程序 ?...安装程序现在允许您指定要运行的帐户的用户名/密码,并检查该帐户是否具有 LogonAsService 权限。 第4步 端口选择 ?...除了基于 MSI 的 Windows 安装程序的更新之外,平台特别兴趣小组还在努力接管 Chocolatey Jenkins 软件包并为每次更新发布一个版本。
如果你使用 WiX 制作安装包,并且遇到了问题,一定需要一个趁手的调试方案。本文介绍如何查看 WiX 制作的安装包的日志。...WiX 使用 Burn 引擎来制作 exe 捆绑包,默认情况下 Burn 引擎使用自带的安装界面来执行安装。...\Walterlv.Demo.MainApp.exe -l "debug.log" 其中,Walterlv.Demo.MainApp.exe 是我在 WiX 入门教程系列中使用的安装包名。...以下是一个成功运行的自定义捆绑包的日志: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [476C:2F20...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。...本文介绍安装 WiX Toolset 的两款 Visual Studio 插件,以便你能直接在 Visual Studio 里完整整套安装包的制作,无需使用命令行工具。...(只是新扩展名,里面的内容还是其他各种项目格式都用的那种) 为 WiX 打包项目提供专属的属性面板页,可供设置一些基本的属性 反正,装了这款插件能让你更容易编写和管理 WiX 安装包相关文件。...方法是: 启动 Visual Studio 2019,选“继续但无需代码”; 选菜单“扩展”->“管理扩展”; 在“联机”页中搜索“WiX”,找到“Wix Toolset Visual Studio 2019...如果你有自己的插件需要升级到支持 VS2022,可阅读我的另一篇博客: Visual Studio 2022 出来啦!
目前,“火绒安全软件”已升级病毒库,可以率先拦截、查杀“Backdoor/Jsctrl”。火绒工程师提醒广大用户,尽量通过官方网站下载软件,以免在被捆绑推广的同时,感染病毒。...捆绑拦截日志 随机名服务 该病毒服务的文件名是通过固定字典随机组合两个英文单词而成,文件名例如:AcceleratorLeaders.exe、AcronymOcclude.exe等等。...病毒服务启动后会创建一个相同的子进程,父进程为守护进程,当子进程被结束时会重启启动子进程。代码逻辑,如下图所示: ? 等待进程退出 ?...推广列表 如上图,虽然病毒安装包释放的动态库名称不尽相同,但是调用参数与前文所述tdzs.dll完全相同,且代码逻辑也完全相同。...软件著作权信息 在下载柠檬输入法软件安装后,我们也发现了具有相同数据和代码逻辑的“zlib1.dll”。如下图所示: ?
AssetBundle 名称“environment/forest”表示,将在 environment 子文件夹下创建名为 forest 的捆绑包 名字不区分大小写,默认小写 指定相同名字的资源会被打到一个包里面...例如,如果音频压缩在 Windows 和 Mac 平台上完全相同,则可以将所有音频数据打包到 AssetBundle 并重复使用这些捆绑包;而着色器往往使用更多特定于平台的选项进行编译,因此为 Mac...所有声音资源打成一个包,所有 shader 打成一个包,所有模型打成一个包,所有材质打成一个包 按照使用分组 将需要同时加载和使用的资源捆绑在一起 可以按照关卡分,一个关卡所需要的所有资源包括角色、贴图...可以把其他包共享的资源放在一个单独的包里面 防止资源的重复打包 把一些需要同时加载的小资源打包成一个包 如果对于一个同一个资源有两个版本,可以考虑通过后缀来区分版本,xx.v1 xx.v2 xx.v3...两种常用方法是: 在应用程序生命周期中具有明确定义的卸载瞬态 AssetBundle 的时间点,例如在关卡之间或在加载屏幕期间。
我们用的是javapackager,javapackager是jdk1.8自带的一个打包工具,可以生成各个系统的安装包 准备工作 innosetup-5.6.0.exe(windows下Java8支持6...版本以下的,不要下载6及其6以上的版本,否则无法打包成功) wix(打包成msi必须下载,没有下载javapackager会提示缺少wix) JDK8 用法 javapackager command...-name name:应用程序的名称。 -native type:生成独立的应用程序包(如果可能)。使用该-B选项为正在使用的捆绑器提供参数。如果指定了类型,则仅创建此类型的捆绑包。...创建原生的镜像(打成window的exe)。 exe: 生成一个 Windows.exe包。 msi:生成一个 Windows 安装程序包。...每种类型的捆绑器都有自己的一组参数。 appVersion=version:应用程序包的版本。一些捆绑器会限制版本字符串的格式。
创建测试用的VSPackage 新建一个VSPackage项目用来测试。为了演示安装后的效果,别忘了在向导中给它添加一个Menu Command。...创建Wix项目 新建一个项目,项目类型选择Wix-》Wix Project,如下图: ? 完成后的解决方案视图如下: ?...这个命令运行成功后,会在相同目录下生成一个VSPackage1.wxs的文件,我们需要把这个文件添加到VSPackageInstaller项目下面。...安装成功之后,重启VS,点击工具菜单,可以看到我们的Package已经被安装进去了: ? 重新运行这个安装程序可以卸载掉我们的Package。...改进安装包 虽然我们的安装包已经可以用了,但还存在几个问题: 它是英文的 如果用户没装VS2008,安装程序会报错 安装时,不想出现license对话框 执行devenv.exe /setup
对系统环境的更改将写入注册表,而且通常需要重启计算机才能生效。通常我们的程序中也会使用环境变量,如何在WiX设置环境变量呢?...在安装/删除程序的时候需要处理我们的环境变量: 安装程序: 如果相同名称的环境变量名称不存在,则创建一个变量: 如果已经存在一个相同名称的变量: 用新的值代替旧值....不修改旧值或者忽略新值 在环境变量的值列表开头插入一个新的值. 在环境变量的值列表末尾插入一个新的值. 删除一个环境变量: 不管它的值 只有当它的值和提供的值匹配时....卸载程序: 不删除环境变量. 删除环境变量. 下面我们来看一个例子: <?xml version="1.0" encoding="UTF-8"?...Environment table 也是一个 formatted field,这也就是说环境变量的值可以是来自一个属性,另一个环境变量,或者是任何一个formatted 字符串,下面的例子就是把环境变量设置成
您可以通过单击该按钮查看任何步骤的帮助,该按钮会显示一个侧边栏,其中包含每个输入框的其他信息 ? image.png 在第一个屏幕中,选择安装的目录。...msi installer service 选择要运行服务的 Windows 帐户时,请确保所选帐户具有足够的权限来访问所选的安装和其他部署目录。还确保帐户能够运行 Windows 服务。...该软件包支持将已安装的Elasticsearch版本升级到较新版本。...通过 GUI 的升级过程可处理升级所有已安装的插件以及保留数据和配置。.msi 下载和双击更新版本的包将启动 GUI 向导。 ? image.png 下一步可以修改各项配置: ?...image.png 使用"添加/删除程序"卸载编辑 MSI 安装程序包不提供卸载功能,可以通过Windows控制面板卸载 ? msi installer uninstall
WiX 本身很强大,使用本来也没那么难。奈何 WiX 3 的官方文档可读性极差且长期不更新,于是新手在使用 WiX 制作安装包时极容易出问题,导致制作的安装包各种行为不正常。...以下是查看日志的方法: 如何查看用 WiX 制作的安装包的日志 Debugger.Launch() 如果安装过程能执行到你编写的 C# 代码中,那么可以在入口处加上 Debugger.Launch()...} } 这里我加上了一个命令行参数的判断,即如果启动安装包 exe 的时候带上了 -debug 参数,那么就启动调试器。...(我用一个 - 而不是 -- 或者 / 的原因是 burn 引擎用的就是单个短线。)...对比测试 如果出现的问题日志上说明不明显,代码也没执行到自定义引导程序部分,那么可以考虑对照正常状态的 WiX 项目替换组件调查。这可以快速将问题范围定位到某个文件甚至是某行代码上。
本系列教程所需的所有源代码都已在 GitHub 上开源,你可以克隆下来学习和试验,也可以选择性忽略。...msi 格式安装包的 Hello World 安装 WiX Toolset 工具集 安装 WiX Toolset Visual Studio 插件 准备一个用于学习 WiX 安装包制作的 Visual...插件 准备一个用于学习 WiX 安装包制作的 Visual Studio 解决方案 使用 WiX 创建一个简单的 msi 安装包 使用 WiX 创建一个简单的 exe 安装包 要求 .NET Framework...解决方案 使用 WiX 创建一个简单的 msi 安装包 为 WiX 制作的 msi 安装包添加 .NET Framework 环境检查 使用 WiX 创建一个简单的 exe 安装包 为 WiX 制作的...Studio 插件 准备一个用于学习 WiX 安装包制作的 Visual Studio 解决方案 使用 WiX 创建一个简单的 msi 安装包 使用 WiX 创建一个简单的 exe 安装包 为 WiX
领取专属 10元无门槛券
手把手带您无忧上云