前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 WiX 制作安装包:创建一个简单的 exe 安装包

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

作者头像
walterlv
发布2023-10-23 11:23:08
1.2K0
发布2023-10-23 11:23:08
举报
文章被收录于专栏:walterlv - 吕毅的博客

本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。

本文将带大家制作一个简单的 exe 安装包。

本文开始前,请确保你已经可以生成一个最简单的 msi 安装包了:

由于 exe 格式的安装包自己带了 UI,所以 msi 中的 UI 怎么样都是可以不用管的(不用纠结 msi 做成了扫什么样,能像上文结尾一样正常安装就好)。

创建 WiX EXE 项目

在解决方案上右键,“添加”->“新建项目…”,然后在“添加新项目”窗口中搜索“WiX”,找到“Bootstrapper Project for WiX v3”。按“下一步”取个名字,然后“创建”。

注意,选择的模板要注意这些要点:

  1. 图标上标记了“wix”,标签上标记了“WiX”
  2. 模板简介中说明这是在创建“EXE”文件

创建完后,记得去项目属性里改一下输出的文件名。例如可以改成主项目的名称,也可以改成“XXX_Setup”这些大家喜欢用的名称。

引用 MSI 项目

我们现在的这个项目生成的是捆绑包(Bundle),是为了将多个安装包集合到一起进行安装的。

我们需要在这个捆绑包里面安装我们上一篇教程中创建的 MSI 安装包,所以我们需要引用这个创建 MSI 的项目。

编辑 Bundle.wxs 文件

在 Bundle.wxs 文件中,找到放 MSI 文件的注释处,将其替换成我们想安装的 MSI 文件。

1 2 3 4 5 6

<Chain> -- <!-- TODO: Define the list of chained packages. --> -- <!-- <MsiPackage SourceFile="path\to\your.msi" /> --> ++ <MsiPackage Compressed="yes" ++ SourceFile="$(var.Walterlv.Installer.Msi.TargetPath)"/> </Chain>

注意:

  1. 这里的 Walterlv.Installer.Msi 是前一篇教程中引用的项目的名称,你可以改成你自己的生成 MSI 的项目的名称。
  2. Compressed="yes" 表示此 MSI 包会被嵌入到最终生成的 exe 文件中(反之则会松散地放到外部文件中)。可选值为 yes no default,对于 MSI 文件会默认嵌入,所以也可以不指定。

编辑基本的安装包信息

与 MSI 包一样,不填写基本的安装信息也会报编译错误:

▲ 缺少厂商信息

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

<Product Id="*" -- Name="Walterlv.Installer.Msi" ++ Name="Walterlv.Demo.MainApp" Language="1033" Version="1.0.0.0" -- Manufacturer="" ++ Manufacturer="walterlv" UpgradeCode="2aeffe1a-8bb6-4b06-b1c0-feca18e17cf7"> -- <Bundle Name="Walterlv.Installer.Exe" ++ <Bundle Name="Walterlv.Demo.MainApp" Version="1.0.0.0" -- Manufacturer="" ++ Manufacturer="walterlv" -- UpgradeCode="528f80ca-a8f5-4bd4-8131-59fdcd69a411"> ++ UpgradeCode="2aeffe1a-8bb6-4b06-b1c0-feca18e17cf7">

这里的 UpgradeCode 如果改成和之前的 MSI 文件的一样,那么无论是做成 MSI 还是 EXE 格式的安装包,他们都是可以互相被升级的。

当然,对于一个 Bundle 来说可以集合多个安装包。当要一次安装多个 MSI 包的时候,建议选不一样的 UpgradeCode

关于设置 MSI 和 EXE 安装包的 UpgradeCode 的更多细节,可以阅读我的另一篇博客:

测试效果

现在,我们完成了一个最简单的 EXE 安装包,测试安装一下。

前往 EXE 文件的输出目录(在项目目录的 bin\Debug 下):

▲ 前往 EXE 文件的输出目录

双击安装,可以出现默认的安装界面:

▲ 默认的安装界面

安装完后,可以在系统设置“应用和功能”以及“Program Files”目录中找到它:

▲ 系统设置应用和功能

测试完成后,记得及时卸载掉这个包。虽然这次没什么影响,但后续我们会学到的某个操作可能导致未及时卸载的包再也无法通过正常途径卸载,所以请保持良好的习惯。(虚拟机调试的小伙伴可无视)。

▲ 卸载包

另外,觉得不错可以提交一下代码,方便后续章节的学习。

附源代码

附上必要的源码,避免你在阅读教程时因模板文件的版本差异造成一些意料之外的问题。

Bundle.wxs

// 除了本文所说的改动外,本文件的其他内容均保持模板文件的原始模样。

1 2 3 4 5 6 7 8 9 10 11 12 13 14

<?xml version="1.0" encoding="UTF-8"?><br><Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"><br> <Bundle Name="Walterlv.Demo.MainApp"<br> Version="1.0.0.0"<br> Manufacturer="walterlv"<br> UpgradeCode="528f80ca-a8f5-4bd4-8131-59fdcd69a411"><br> <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /><br><br> <Chain><br> <MsiPackage Compressed="yes"<br> SourceFile="$(var.Walterlv.Installer.Msi.TargetPath)"/><br> </Chain><br> </Bundle><br></Wix>

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/getting-started-with-wix-toolset-exe-hello-world.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建 WiX EXE 项目
  • 引用 MSI 项目
  • 编辑 Bundle.wxs 文件
    • 编辑基本的安装包信息
    • 测试效果
    • 附源代码
      • Bundle.wxs
      相关产品与服务
      腾讯云服务器利旧
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档