为了升级到Visual Studio 2012,我们需要将这些.vdproj项目迁移到Wix,因为vs2012不再支持这些项目类型。
这些项目大多是简单的项目,可以将文件安装到给定位置。我们在安装过程中使用自定义操作,使.config文件具有特定于位置的属性(用实际值替换标记)。
如何以最少的工作量将这些项目转换为Wix是最好的方法?
我会在这里发布我的反应。因为更好的格式和一些我想要解释的事情。
在您对评论的回复中。答案还包含了某人使用powershell制作的脚本。您可以创建另一个powershell,通过该脚本循环执行您的项目。但是,您只会拥有wxs文件,仍然需要创建100多个wix项目并将文件添加到该项目中。
您还可以在要安装的项目上创建后期构建事件,使用heat.exe。例如(可能需要进行一些调整/更改以适应您的项目)
call "C:\Program Files (x86)\WiX Toolset v3.6\bin\heat.exe" project
"$(ProjectDir)$(ProjectFileName)" -directoryid INSTALLDIR -pog Content
-gg -scom -sreg -sfrag -out "$(SolutionDir)Installed\$(ProjectName).Content.wxs"
然后,您可以将输出文件链接到WiX项目,因此每当您添加文件或dll时,它都会自动生成,并且您的文件将保持同步。现在,您只需要创建某种product.wxs模板,即可在所有wix项目中使用。
我认为这里的解决方案是使用PowerShell和heat.exe的组合。您可以使用上述命令为您的项目生成wxs文件。但是,您仍然需要手动添加wix项目。
我建议看一下Wix#。http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX。
对于需要创建Windows Installer MSI以部署其应用程序的C#开发人员来说,Wix#可能是替代Microsoft在VS2012中删除的“打包和部署”项目类型的最佳选择。Wix是WiX工具集的C#前端,允许使用C#语言构建完整的Windows Installer MSI。
您特别提到所有安装程序都是简单项目,它们将文件安装到给定位置,并在设置期间使用自定义操作使.config文件位置特定(将标记替换为实际值)。
如果您的项目确实非常相似,那么Wix#将是满足此类要求的好选择。您可以为一个典型程序开发一个良好的C# Wix#示例,然后将其克隆100次(或任意数量),以替换每个额外的.vdproj安装程序。更好的是,如果您有一个擅长T4模板的团队成员,您可能能够使用它来自动化将第一个C# Wix#原型安装程序转换为模板的过程,然后使用该模板自动生成其余99个.cs Wix#代码文件,以用于您其余的项目。
以下是您请求的Wix#安装程序类型的C#代码示例。这假定您编写了一个名为“TailorMyConfig.exe”的实用程序,例如,一个简单的C#程序,它使用ConfigurationManager.AppSettings例程,并且您正在部署此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;
}
}
您可以使用XML注入方法将一些WiX XML插入到您的安装程序中,以完成配置文件编辑。以下是修改配置文件的一些典型WiX XML示例: 如何在安装过程中修改.NET配置文件?
我知道这是一个比较旧的问题,但它出现在我的搜索结果中,所以我想让其他搜索者了解这个额外的Wix#选项。在我的环境中,Wix#方法非常有用,它允许使用熟悉的C#技能集,而无需跳入WiX XML安装程序技术的全部复杂性。
你是否严格依赖于Wix?
也许你可以转向免费(开源)的NSIS或Inno Setup系统。
有一个Visual Studio扩展程序可用于处理NSIS/Inno Setup,它可以处理VS安装程序项目(.vdproj)并将其转换- http://visualstudiogallery.msdn.microsoft.com/5e57fe9a-ae5d-4740-a1c3-7a8e278e105b。