使用Wix#创建Windows安装程序

Wix#是一种使用WiX工具集创建Windows安装程序的编程方式。它以一种易于接近的方式,使得即使是对WiX工具集了解不多的开发者也能够轻松地创建和维护安装程序。本文将介绍Wix#的背景、优势、基本用法以及如何构建MSI文件。

Wix#()提供了一种编程方式来创建Windows安装程序,它利用了WiX工具集的强大功能和灵活性。发现这是使安装程序可编辑和可维护的最简单的方法,特别是对于一群对WiX工具集本身知之甚少的开发者来说。Wix#的主要优势在于它的易用性。不必成为WiX工具集的专家就能有效地使用Wix#。

假设

在继续之前,将做一些假设。如果这些假设不成立,体验可能会有所不同。

  • 使用的IDE是Visual Studio 2017。
  • 已经安装了WiX工具集。
  • 正在使用C#进行编码(VB.NET有类似的原理,但需要一些转换)。
  • 正在使用WixSharp项目模板扩展来为Visual Studio创建项目。

开始

以下是使用Wix#创建安装程序的简单示例:

using System; using WixSharp; class Script { static public void Main(string[] args) { var project = new Project( "MyProduct", new Dir( "@%ProgramFiles%\\My Company\\My Product", new File("Files\\Docs\\Manual.txt"), new File("Files\\Bin\\MyApp.exe"))); project.GUID = new Guid("6f330b47-2577-43ad-9095-1861ba25889b"); Compiler.BuildMsi(project); } }

在这个示例中,首先为项目命名,然后定义了一个目录以及应该复制到该目录的文件。接着,添加了一个GUID(需要替换这个)。最后,构建了MSI文件。构建这个项目会在项目中添加一个"wix"文件夹,并将生成的WiX文件放入其中。

Wix#与WiX的优势

Wix#的另一个优势是它允许使用LINQ来创建更易于理解的复杂规则集,特别是对于熟悉C#和LINQ的人来说。Wix#的方式不需要在WiX文件中单独列出每个文件,但同时也失去了一些功能,因为可以根据需要以任何方式评估文件。

var TestDir = new Dir( "@%ProgramFiles%\\My Company\\My Product"); TestDir.Files = System.IO.Directory.GetFiles( "\\path\\to\\solution\\WixSharp Tutorial\\WixSharp Tutorial\\SampleApp\\bin\\Release") .Where(file => file.EndsWith(".dll") || file.EndsWith(".exe")) .Select(file => new File(file)).ToArray(); var project = new Project("MyProduct", TestDir);

这种方式生成的XML文件将包含所有指定目录下的DLL和EXE文件,而不需要单独列出每个文件。

在本系列的第二部分,将探讨如何将多个项目作为单独的MSI文件安装,设置功能集,并安装.NET Framework的先决条件。

注意事项

探索Wix#的更复杂设置通常需要参考Wix教程和示例,然后寻找Wix#中的等效实现。Wix#的GitHub仓库有大量示例项目,非常有用。

处理错误

如果在构建过程中遇到错误,例如:

Severity Code Description Project File Line Suppression State Error The command ""Path\to\Project\WixSharp Setup\bin\Debug\WixSharp Setup.exe" "/MSBUILD:WixSharp Setup"" exited with code -532459699. Debug "Path\to\Project\WixSharp Setup\bin\Debug\WixSharp Setup.exe" "/MSBUILD:WixSharp Setup". In my case, it ended up being that it was looking for a directory that did not exist to pull files from for the MSI.
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485