在BizTalk中,为什么要同时导入和安装MSI文件? [英] In BizTalk why is an MSI file both imported and installed?

查看:64
本文介绍了在BizTalk中,为什么要同时导入和安装MSI文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理BizTalk项目,不知道需要安装(双击)和导入(使用biztalk管理控制台)的原因.

I'm working on a BizTalk project and don't understand the reason for both installing (double-clicking) and importing (using biztalk admin console) is needed.

我有一个BizTalk项目,我向其资源添加了绑定,并导出了一个msi文件.现在,我想在另一台服务器上安装该应用程序.

I have a BizTalk project and I added bindings to it's resources and exported an msi file. Now I want to install the application on another server.

据我所知,这就是MSI安装的作用:

As far as I can tell this is what an MSI install does:

  1. 将文件复制到文件系统
  2. 将程序集注册到GAC
  3. 将应用程序添加到添加/删除程序"小程序中

但是,这是我的问题:

  1. 使用msi安装不会将应用程序添加到Biztalk管理控制台中.我们需要导入msi.
  2. 使用msi进行卸载不会从GAC中删除程序集.它只会删除复制到文件系统中的文件.是否可以通过卸载来删除GAC程序集?
  3. 如果我仅导入MSI,则可以启动biztalk应用程序,并且看起来运行良好.结合问题1和问题2,为什么完全需要MSI?我可以看到仅导入不会将其添加到GAC中,因此,如果其他应用程序依赖于导入,它们将无法正常工作.

我确定我缺少msi提供的功能/配置,但是有人可以帮助我理解为什么需要同时安装msi和将其导入biztalk以及为什么在取消安装时未完全卸载它已安装的所有内容?

I'm sure I'm missing features/configuration that the msi provides, but could someone help me understand why the msi needs to both be installed and imported into biztalk and why when you uninistall it does not fully uninstall everything it installed?

推荐答案

在部署BizTalk解决方案时需要进行两项操作.

Two operations need to be undertaken when deploying a BizTalk solution.

为什么部署BizTalk解决方案需要两步操作?

  1. 将BizTalk解决方案注册到BizTalk管理数据库中
  2. 将BizTalk工件和依赖项安装到文件系统

首先,必须将构成您的解决方案的BizTalk程序集注册到BizTalk管理数据库.这将使BizTalk知道可用的架构,地图,管道和业务流程.

First, BizTalk assemblies that comprise your solution must be registered to the BizTalk Management Database. This will allow BizTalk to know what Schemas, Maps, Pipelines and Orchestrations are available.

这是通过将Windows Installer程序包导入BizTalk来完成的.

This is done by Importing your Windows Installer package to BizTalk.

请记住,典型的BizTalk平台通常由许多物理服务器组成.但是, BizTalk组中的所有服务器都共享一个BizTalk管理数据库.

Please, remember that a typical BizTalk plaform usually consists of many physical servers. However, all the servers in the BizTalk Group share a single BizTalk Management Database.

因此, 整个BizTalk组的导入操作只需完成一次 .

Therefore, the import operation needs to be done once for the whole BizTalk Group.

第二,已注册到BizTalk的BizTalk程序集需要物理存在某处.因此,必须将它们安装到文件系统.

Second, the BizTalk assemblies that have been registered to BizTalk need to physically exist somewhere. Therefore, they must be installed to the file system.

这是通过双击Windows Installer程序包完成的.

This is done by double-clicking the Windows Installer package.

请注意, 必须在BizTalk组中的任何物理服务器上重复安装操作 .而且,由于BizTalk管理数据库中关于解决方案中包含哪些程序集的定义只有一个,因此可以解释为什么必须将BizTalk程序集安装到全局程序集缓存(GAC)中.

Notice that the install operation needs to be repeated on any physical server that is part of the BizTalk Group. And since, there is only one definition in the BizTalk Management Database as to what assemblies are part of the solution, this explains why BizTalk assemblies must be installed to the Global Assembly Cache (GAC).

请注意,到目前为止,规则很简单:

Notice that, so far, the rule is simple :

  • 必须在BizTalk组中每台服务器上的GAC中安装BizTalk程序集
  • 必须一次将BizTalk程序集导入(或注册)到BizTalk管理数据库中

但是,我们仅处理BizTalk程序集.此两步操作未涵盖BizTalk解决方案在运行时所需的所有其他程序集或其他依赖项(业务规则定义,COM对象,绑定,配置文件等).

However, we have only dealt with BizTalk assemblies. All other assemblies or other dependencies (Business Rules definitions, COM objects, bindings, configuration files, etc.) that a BizTalk solution needs at runtime are not covered by this two-step operation.

跨环境部署

但是,当解决方案运行时,这些依赖项也必须适当地出现在每个BizTalk服务器上.

However, when the solution runs, those dependencies must also be present on each BizTalk server as appropriate.

这就是为什么大多数伪像也都注册到BizTalk管理数据库中的原因.但是这一次,这样做只是为了在创建BizTalk解决方案的Windows Installer程序包时引入依赖项,以便可以在目标服务器上适当地安装这些依赖项.

That is why most of those artefacts are also registered to the BizTalk Management Database. But this time, this is only done so that the dependencies are brought in when the Windows Installer package for a BizTalk solution is created, and so that those dependencies can be installed appropriately on the target servers.

为什么在卸载时未从GAC中删除BizTalk程序集?

作为一般经验法则,已注册到全局程序集缓存的程序集被视为共享的资源.因此,出于安全原因,在卸载时不会从GAC中删除BizTalk程序集.考虑当一个以上的应用程序使用自定义BizTalk管道时会发生什么.在这种情况下,BizTalk管道必须是单独的通用BizTalk应用程序的一部分.卸载此共享的BizTalk应用程序将破坏所有其他依赖此管道的应用程序...

As a general rule of thumb, assemblies that are registered to the Global Assembly Cache are considered shared resources. Therefore, for safety reasons, BizTalk assemblies are not removed from the GAC upon uninstall. Consider what would happen when a custom BizTalk pipeline is used by more than one application. In that case, the BizTalk pipeline must be part of a separate, common, BizTalk application. Uninstalling this shared BizTalk application would break all other applications that depend on this pipeline...

将资源添加到BizTalk管理数据库时,您可以选择在 import install 时将程序集安装到GAC.我强烈建议您不要使用" GacOnImport "功能,在大多数典型的多服务器BizTalk组中没有意义.

When adding resources to the BizTalk Management Database, you have the choice to have assemblies be installed to the GAC at import or at install time. I strongly recommend against using the "GacOnImport" feature, that does not make sense in most typical multi-server BizTalk Groups.

但是,对于Windows Installer程序包,有一种更简单,最灵活的方法来定制可以对BizTalk程序集或其他依赖项执行的操作.这是通过预处理和后处理脚本完成的.

However, there is an easier and most flexible way to customize what can be done to BizTalk assemblies or other dependencies, with regards to the Windows Installer package. This is done with Pre Processing and Post Processing Scripts.

这些脚本允许在导入/安装操作期间的四个特定时间运行任意应用程序.

Those scripts allow for running arbitrary applications at four specific times during the import/installation operations.

  • 导入之前
  • 导入后
  • 安装之前
  • 安装后

如果要在卸载时从GAC中删除程序集,只需在操作的安装前"阶段安排适当的命令行即可.

If you want assemblies to be removed from the GAC upon uninstall, it is a simple matter of scheduling the appropriate command-line during the "Before Installing" phase of the operation.

这篇关于在BizTalk中,为什么要同时导入和安装MSI文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆