SOA应用程序安装最佳实践:sigle安装程序或几个单独的MSI?

时间:2013-09-03 09:45:34

标签: wix installer soa

我有一个应用程序,包括2个网站,3个Windows服务(其中2个托管WCF服务)和3个SQL数据库。

所有系统都可能安装在1台或2台服务器上,但如果性能受到严重影响,某些服务可能会安装在不同的机器上。

我需要为所有这些员工创建WIX安装程序。问题是我不确定创建单个复杂的安装程序是否会更好,它可以安装任何组件集(某些服务可能是安装的),或者几个单独的安装程序。

如果整个产品安装在同一台机器上,

单一安装程序方法具有重要优势 - 我们只需要向用户显示少量对话框,我们就可以自动设置组件之间的连接配置。但是当然这种安装程序的开发非常复杂:应该根据功能显示安装程序向导页面,当前安装在计算机上。将有多种条件并且测试它们将是一个地狱。

多安装程序方法更易于实施和测试。但是用户安装产品当然会更难 - 他需要设置相同的服务安装URL几次(每个安装程序一次) - 设置到WCF服务的连接配置。

我搜索了这个领域的最佳实践,但看起来没有太多的信息。任何人都可以建议哪种方式更合适?

3 个答案:

答案 0 :(得分:1)

我会选择多个安装程序,捆绑到一个大的单一安装程序中,这样您就可以轻松地分离和测试它们。捆绑包安装程序的目的是一次性捕获用户的数据,并将其传递给选定安装的所有安装程序。

您可以使用Burn support from Wixother setup authoring tools(为您提供GUI,允许您轻松创建项目和对话框)来执行此操作。 Wix是一个非常好的工具,但是你需要创建项目的时间太多,与一个好的安装创作工具的许可证相比,它提供并拖放IDE来设计对话框并链接安装单独的安装程序。

修改

要将值从引导程序传递到后台安装程序非常简单,您不需要编写任何自定义代码。这可以直接从设置创作工具处理。您需要做的就是确保该工具能够创建符合Windows Installer的软件包。这样,您可以在安装程序的命令行中将用户所做的选择作为属性值传递给后台安装程序。

引导程序安装程序不应该向Windows Installer注册,因此它不会出现在控制面板中,作为单独的应用程序,您应该只看到单独的后台安装程序。

答案 1 :(得分:1)

如果您正确设计,可以在两种方法之间来回切换。我个人使用过InstallShield,它有一个名为RELEASE flags和Product Configurations的功能。它基本上是一种定义多个构建的方法,这些构建引入不同的功能并应用不同的品牌(ProductName,ProductVersion,ProductCode,UpgradeCode,INSTALLDIR等等。)这就是你如何说多个单一产品安装然后再次构建它作为产品家庭套件。这种模式非常适用于SOA。在WiX中可以使用预处理器语句来控制编译。

我曾经为一家制造基于SOA的服务器产品的公司工作过。该系统有26个安装程序,包括5个类别(Win客户端,移动客户端,服务层,Web UI层和SSRS报告),我每个人都使用自己的安装程序,这确实有助于降低复杂性。每个服务都有自己的数据库,这使得编写SQL脚本可以更轻松地创建和更新数据库。它还减少了每个安装必须完成的配置量,因为它只需要知道如何设置自己以及与之通信的另一个部分。

将所有这些部件组合在一起的引导程序可能需要也可能不需要。我们选择SOA的部分原因是让我们完全控制如何扩展系统。这种灵活性(1台服务器上26件,26台服务器上1件,2层,3层,n层)使得很难通过简单的向导UI进行封装。

答案 2 :(得分:1)

我提供了第二个答案,以提供与我的第一个不同的观点。 Microsoft Team Foundation Server安装是针对不同角色的单个安装程序。您可以扩展系统的各个层,但安装完全相同:安装它。

他们所选择的是投资于角色配置向导,该向导在安装后执行以激活给定的已安装功能并配置其设置以及需要与之通信的下一层的设置。

这也是一个非常好的方式。