Wix#是一种使用WiX工具集创建Windows安装程序的编程方式。它以一种易于接近的方式,使得即使是对WiX工具集了解不多的开发者也能够轻松地创建和维护安装程序。本文将介绍Wix#的背景、优势、基本用法以及如何构建MSI文件。
Wix#()提供了一种编程方式来创建Windows安装程序,它利用了WiX工具集的强大功能和灵活性。发现这是使安装程序可编辑和可维护的最简单的方法,特别是对于一群对WiX工具集本身知之甚少的开发者来说。Wix#的主要优势在于它的易用性。不必成为WiX工具集的专家就能有效地使用Wix#。
在继续之前,将做一些假设。如果这些假设不成立,体验可能会有所不同。
以下是使用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#的另一个优势是它允许使用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.