在 WiX 中创建安装程序以分发升级的应用程序
环境
- Visual Studio
-
- Visual Studio Community 2017
- Visual Studio Community 2019
- WiX Toolset
- 3.11.2
* 它适用于其他版本,但尚未确认
入门
提供有关如何在升级应用程序时创建安装程序的分步说明。 它基于创建安装程序的第一个版本的分步文章。 制作方法可能存在差异。
如果要在更新之前保留上一个项目,请以某种方式备份它,例如复制文件。
提前准备
- 您已经创建了安装程序的第一个版本,并且该项目存在。
关于升级类型
有几种升级方法可以升级,如以下文章所示。 此处的过程描述了主要升级。 除非有特殊情况,否则此方法没有问题。
更改产品.wxs
启动虚拟工作室并打开已创建的项目(解决方案文件)。
打开产品.wxs 并更改以下参数:
Wix/Product/@Id
如果要进行重大升级,请将此 ID 替换为新的 GUID。
您无需更改"次要升级"或"小升级",但此处不介绍。
<Wix>
<Product Id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />
Wix/Product/@Version
用于确定在安装过程中是新版本,因此请增加比以前的版本更多的数字。 有四个数字:"主要版本.次要版本.修订版.内部版本"。 有三个主要版本,次要版本,修订版,将决定版本是否已升级。
数字越多,数字就越好,但基本上与应用程序的版本一起使用是可以的。
<Wix>
<Product Version="1.8.0.0" />
Wix/Product/@UpgradeCode
此代码标识同一应用程序的版本升级。 因此,如果要在覆盖安装中升级,请不要从首次发布时的代码进行更改。
相反,如果要升级但作为单独的应用程序安装,请将其替换为新的 GUID。
<Wix>
<Product UpgradeCode="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
Wix/Product/MajorUpgrade/@DowngradeErrorMessage
在已安装应用程序的新版本中启动旧安装程序时要显示的消息。 它用于旧版本的安装程序,因此,如果您已经在早期版本中设置了消息,则无需更改它。 如果要更改它,请重写它。
如果要显示日语,则必须将语言和摘要代码属性设置为日语(日语支持在另一篇文章中介绍)。 产品名称将替换为产品名称。
<Wix>
<Product>
<MajorUpgrade DowngradeErrorMessage="すでに新しいバージョンの [ProductName] がインストールされているため、インストールを中断します。" />
放置要安装的文件
就像第一次创建安装程序一样 请重新输入新程序和相关文件。 删除不再使用的文件。
更新许可证.rtf
如果要更改要在安装屏幕上显示的许可协议,请更改内容。
更新产品.wxs 的安装文件信息
* 如果安装的文件或文件夹配置与以前的版本没有变化,则无需处理此项目。
此项目的高级任务是删除并重新创建以前文件的所有安装设置。 如果只增加或减少一个文件,则直接摆弄 Product.wxs 代码可能更快。
启动"WixEdit"。
打开您的产品.wxs 文件。
从左侧图标中选择"文件"。 删除"程序文件文件夹"下的文件夹。
右键单击"程序文件文件夹"文件夹,然后选择"导入文件夹"。
选择要安装的文件所在的文件夹。
一系列文件将添加到树中。
要与其他参数关联,请选择添加的文件夹,并将"ID"重新设置为"INSTALLFOLDER"。
创建"开始"菜单的快捷方式。 因为每次创建此快捷方式的作业都是相同的, 保留 XML 代码并稍后粘贴可能更快。 (下图的选择部分)
从 exe 文件的右键单击菜单中选择"新建"和"短"。
添加 Shortcut 后,选择它,然后右键单击空白以添加属性。
添加以下参数: (请根据程序重新命名唯一名称。
属性 | 值 |
---|---|
Id | LITTLESAVIORTRIAL. EXE_shortcut |
Name | 小剑试用版 |
Directory | ProgramMenuDir |
WorkingDirectory | INSTALLDIR |
Icon | LITTLESAVIOR. ICO |
IconIndex | 0 |
Advertise | yes |
然后选择"功能"选项卡。
添加任何添加的文件,并删除任何不再需要的文件。
如果 UI 中的操作很麻烦,则可以直接编辑 XML。
保存。
生成和运行确认
在视觉工作室中生成并创建安装程序。
在安装早期版本时,请运行新版本的安装程序,以确保安装它。
此外,请确保在安装新版本时运行安装程序的早期版本时无法安装它。