【问题标题】:Replacing VDPROJ Setup files with InstallShield/WIX用 InstallShield/WIX 替换 VDPROJ 设置文件
【发布时间】:2012-08-22 14:58:23
【问题描述】:

我们的产品目前通过 4-5 个 MSI 安装,这些 MSI 由 .vdproj 文件创建,这些文件由 vs 2010 项目的输出和合并模块中的其他信息创建。

由于 VS2012 不再支持 VS 设置项目,我一直在寻找 InstallShield 和 WIX 作为可能的替代品(哦,不!)所以我们必须找到其他东西。

我在 InstallShield 上玩过一些游戏,但我无法真正掌握它,除了安装产品之外​​,安装程序还必须接受一些参数,例如数据库名称和位置等。我似乎无法找到将这些信息导入 InstallShield 项目的方法 - 这是使用 Visual Studio 的 InstallSHield 限量版

我不确定哪个最好用?有人有从 VDPROJ 转换为 WIX 或 IS 的经验吗?

编辑 看起来 WIX 将是最简单的,我正在努力掌握它。 我似乎找不到任何有用的帖子可以让我将项目输出定向到我的 WIX 安装程序,以及如何创建变量。 (不使用插件)

【问题讨论】:

  • 我现在也在经历同样残酷愚蠢的浪费时间。 WiX 的学习曲线非常疯狂。 Installshield 易于使用,但 Installshield LE 除了 32 位无附加文件部署外,对任何东西都无用。您也可以使用 OneClick。
  • 任何使用 wix 设置项目的完整示例?

标签: visual-studio-2010 wix windows-installer installshield vdproj


【解决方案1】:

很难给出一个简单的答案,因为您实际上是在问非常高层次的问题,这些问题需要了解您的安装需求以及在创建安装程序方面接受大量培训。

就我个人而言,我的安装程序是 100% WiX、100% InstallShield(限量版和首映版)以及两者的混合。

限量版是有限的,但它也做了一些非常好的事情,并提供了一些在 WiX 中并不真正存在和/或易于实现的功能。

一个好的策略是将 InstallShield LE 用作一个简单的容器,然后在 WiX 中进行大部分创作。我在我的博客中描述了这种模式:

Augmenting InstallShield using Windows Installer XML - Certificates

InstallShield Professional 及更高版本有一个用于迁移 VDPROJ 项目的工具,但我会谨慎使用它。大多数 VDPROJ 安装程序都有一些糟糕的创作,最好重构而不是迁移。

【讨论】:

    【解决方案2】:

    我强烈建议查看 Wix#。见http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX
    另请参阅 CodePlex 主页:http://wixsharp.codeplex.com/

    对于主要使用 C#、Wix# 编码的开发人员,这可能是最简单、最舒适的技能组合,而且它是免费的并且直接集成到 Visual Studio 环境中。我在 Visual Studio 2012 和 2013 中使用它取得了巨大成功。

    对于需要创建 Windows Installer MSI 以部署其应用程序的 C# 开发人员来说,Wix# 可能是 Microsoft 从 VS2012 开始从 Visual Studio 中删除的“打包和部署”项目类型的最佳替代品。 Wix 是 WiX (Windows Installer Xml) 工具集的 C# 前端。使用 Wix# 允许以 C# 语言构建完整的 Windows Installer MSI。

    Wix# 适用于广泛的安装/部署场景,并且非常适合持续集成场景。有用于部署 Windows 桌面应用程序、安装 Windows 服务、安装 ASP.NET 网站以及更多类型的安装的 Wix# 示例。

    Wix# 处理典型的安装程序要求,而用于简单项目的 Wix# 安装程序代码确实很简单。对于更复杂且需要高级功能的应用程序安装,Wix# 可以在需要时利用完整 WiX 工具集的强大功能。例如,在安装 .NET 应用程序时,典型的要求是安装应用程序 exe 和 dll 文件,并在目标系统上定制一些 .NET 配置文件和/或注册表项。

    以下是简单 Wix# 安装程序的 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 功能。然后生成的 wxs 文件由 WiX 工具集编译成 MSI。

    有关使用 XML 注入将 WiX XML 功能合并到 Wix# (C#) 安装中的示例,请查看此处In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries? 在那个问题中,请参阅我的答案,该答案使用将委托连接到“WixSourceGenerated”事件的技术。

    然后您可以使用这种 XML 注入方法将一些 WiX XML 插入到您的安装程序中,从而完成配置文件的编辑。下面是一些用于修改配置文件的典型 WiX XML 示例: How to modify .NET config files during installation?

    安装程序的另一个典型要求是在目标系统上添加或修改 Windows 注册表项。 Wix# 使用“RegValue”类提供直接支持。使用 Wix# 的好处是,您还可以免费获得完整的“卸载”功能,包括将注册表项卸载/恢复到预安装状态。这是基于 WiX 工具集和 Windows Installer 技术构建的 Wix# 的自然结果。仅注册表 Wix# 安装程序的示例如下:In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries?

    Wix# 方法在我的环境中非常有用,它允许使用熟悉的 C# 技能集,而无需一头扎进 WiX XML 安装程序技术的全部复杂性。

    第一个被接受的答案提倡这种方法:

    一个好的策略是使用 InstallShield LE 作为一个简单的容器和 然后在 WiX 中完成大部分创作。我在这里描述了这种模式 我的博客: http://blog.iswix.com/2011/01/augmenting-installshield-using-windows_19.html

    虽然这是一种很好且可行的方法,但我在这里建议的方法具有以下优点:

    使用 Wix# PLUS WiX 方法的优势

    • 无需处理 InstallShield LE 或任何其他专有安装程序产品
    • 大部分安装程序都是用 C# 代码编写的,这是一项熟悉的技能
    • 无需预先学习完整的 WiX 工具集环境;您可以从 C# 代码开始,然后根据需要使用 XML 注入添加高级 WiX 功能。
    • 该方法在持续集成环境中运行良好,所有组件都可以通过 XCopy-deploy 安装在构建服务器上,并且所有组件都非常适合通过脚本实现自动化,例如 Powershell 脚本。
    • 如果 Microsoft 再次更改与 Visual Studio 捆绑的安装程序工具的课程,您将不会受到影响。

    IS LE + WIX 的共同元素

    • 建立在 WiX 工具集功能之上,因此可以将 WiX XML 的所有功能合并到安装程序中
    • 在 SO 和其他地方提供了许多针对部署问题的 WiX 解决方案的优秀“操作指南”
    • 生成真正的 MSI Windows 安装程序,具有卸载功能和该技术的所有强大功能。
    • 在创建安装程序时,您需要了解有关 WiX 和 Windows Installer 技术的更多信息。高级功能通常需要下拉到 WiX XML。
    • 两者都或多或少地无缝集成到 Visual Studio 环境中。 (如果有的话,Wix# 方法会有一点优势)

    因此,虽然另一种方法是可行的解决方案,但我推荐 Wix# + WiX 工具集作为 VS2012、VS2013、VS201x 的最小恶化路径。或许最大的优势在于,您不太可能必须再次更改底层部署技术和方法,从而被微软再次蒙蔽双眼,无论如何微软的营销经理为了在 Visual Studio 中包含或提取部署技术做了哪些幕后交易。

    【讨论】:

      【解决方案3】:

      对于免费工具,WiX 是您的最佳选择。如果您也对商业工具感兴趣,Advanced Installer 可以帮助您更快地创建/转换项目,而无需任何脚本。它还具有用于导入 VDPROJ 的预定义项目模板。您需要企业许可证,因为您需要访问其 对话框编辑器SQL 脚本 功能。但是您可以在试用期内测试所有这些。

      【讨论】:

        【解决方案4】:

        如果你想迁移到其他安装系统 - NSIS 或 Inno Setup,试试这个 Visual Studio 扩展:http://visualstudiogallery.msdn.microsoft.com/5e57fe9a-ae5d-4740-a1c3-7a8e278e105b

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多