我强烈建议看维克斯#。请参阅http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX。如果你正在用C#编写代码,Wix#这可能是最简单和舒适的添加技能,而且它是免费的,并且可以直接集成到你正在使用的Visual Studio环境中。
在为维克斯#CodePlex上首页更多信息:http://wixsharp.codeplex.com/
对于C#开发者需要创建一个Windows Installer MSI来部署他们的应用程序,维克斯#也许是对于“打包和部署”的最佳替代项目Microsoft从VS2012开始从Visual Studio中删除的类型。 Wix是WiX(Windows Installer Xml)工具集的C#前端。使用Wix#可以用C#语言构建完整的Windows Installer MSI。
维克斯#是一个广泛的安装/部署方案中非常有用,并使其本身相当不错,以持续集成方案。有Wix#示例用于部署Windows桌面应用程序,安装Windows服务,安装ASP.NET网站以及更多类型的安装。
问题提到需要安装在Windows 7上的应用程序维克斯#支持这样的环境,并处理典型安装的要求,并进行简单的项目维克斯#安装代码确实是简单的。对于更为复杂且需要高级功能的应用程序安装,Wix#可在需要时利用完整的WiX Toolset的功能。例如,安装.NET应用程序时,通常需要安装应用程序的exe和dll文件,并在目标系统上定制一些.NET配置文件和/或注册表项。
下面是用于安装在目标系统上的应用的简单维克斯#安装程序的C#代码的一个例子,并修改一些配置文件。这个例子假设你已经编写了一个名为“TailorMyConfig.exe”的实用程序,例如一个使用ConfigurationManager.AppSettings例程的简单C#程序,并且你正在将这个exe与你的应用程序一起部署。
using System;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Deployment.WindowsInstaller;
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\Bin\MyApp.exe"),
new File(@"Files\Bin\TailorMyConfig.exe")),
new ManagedAction("UpdateConfigFile"));
project.Id = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");
Compiler.BuildMsi(project);
}
}
public class MyCustomAction
{
[CustomAction]
public static ActionResult UpdateConfigFile(Session session)
{
if (DialogResult.Yes == MessageBox.Show("Config file update ready to run.\n Update config file(s) now?",
"Config Tailoring Utility",
MessageBoxButtons.YesNo))
{
Process.Start("TailorMyConfig.exe", "Run utility to tailor config file to current system");
}
return ActionResult.Success;
}
}
请注意,有更好的方法来使用WiX XML功能修改配置文件。为了简单起见,上面的示例假设了一个用于修改配置文件的自定义编写的C#exe实用程序。我建议使用WiX XML功能来做到这一点。您可以使用“XML注入”的Wix#技术将几乎任何WiX XML功能直接并入您的Wix#设置中。请记住,Wix#只是一个发布WiX XML语法的C#前端。在Wix#发布了WiX XML(wxs文件)之后,该wxs文件可以轻松进行后期处理,以插入其他WiX XML功能。然后由WiX工具集将生成的wxs文件编译为MSI。
对于使用XML注入纳入维克斯XML功能集成到维克斯#(C#)安装的一个例子,看看这里In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries? 在这个问题,看我的答案是使用委托挂接到“WixSourceGenerated”的技术事件。
然后,您可以使用此XML注入的方式插入一些维克斯XML到您的安装程序,将完成配置文件编辑。一些典型的WiX XML修改配置文件的例子如下: How to modify .NET config files during installation?
安装程序的另一个典型要求是在目标系统上添加或修改Windows注册表项。 Wix#使用“RegValue”类提供直接支持。使用Wix#的优点是,您还可以免费获得完整的“卸载”功能,包括卸载/恢复注册表项到预安装状态。这是Wix#建立在WiX Toolset和Windows Installer技术之上的自然结果。仅限注册表的Wix#安装程序的示例如下:In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries?
Wix#方法在我的环境中非常有用,它允许使用熟悉的C#技能集,而不必直接跳到完整复杂的WiX XML安装程序技术。