0

我不是全职程序员,但必须做一点工作来构建工具来支持我的工作。我已完成编写我现在需要部署的应用程序。在Visual Studio 2012中缺少部署项目类型

我不希望因为我需要在配置时,“本地”文件夹,修改文件使用“的ClickOnce”。我的理解是,如果我使用Build菜单下的Publish选项,那么我使用“ClickOnce”。

我的研究让我相信“您可以通过向您的解决方案添加一个或多个部署项目来实现这一目标”。 MSDN然后说,为了实现这个,我需要选择'添加项目'和'在生成的添加新项目对话框中,选择安装和部署项目文件夹。“

问题是,我没有这样的选项?!

有人可以解释为什么会出现这种情况,以及我如何解决它。我已经花了半天的时间使用Google搜索,无法想出前进的方向?在项目和系统的

详情如下:

环境:的Visual Studio 2012 Express的Windows桌面。
当前项目:Windows窗体应用程序。操作系统:Windows 7专业版。

回答

0

我强烈建议看维克斯#。请参阅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安装程序技术。

相关问题