【问题标题】:Would this method of installing COM+ work?这种安装 COM+ 的方法会起作用吗?
【发布时间】:2014-05-26 00:09:46
【问题描述】:

我一直在尝试使用 WiX 3.7 来安装 COM+ 程序集。我一直在使用我在 StackOverflow 上找到的几个 WiX 代码 sn-ps。虽然我可以生成 MSI,但当我安装 msi 时,它会失败并出现如下错误:

RegisterComPlusAssemblies: DLL: C:\Program Files\Kutana\Kappris\Carson.dll
ComPlusInstallExecute:  ExceptionInfo: Code='0', Source='System.EnterpriseServices',    Description='Could not install type library 'C:\Program Files\Kutana\Kappris\Carson.tlb' into application 'COM+ Carson - Kappris Print Cache'.', HelpFile='', HelpContext='0'
ComPlusInstallExecute:  Error 0x80020009: Failed to invoke RegistrationHelper.InstallAssembly() method
ComPlusInstallExecute:  Error 0x80020009: Failed to register .NET assembly
ComPlusInstallExecute:  Error 0x80020009: Failed to register assembly, key: MyComPlusAssembly
ComPlusInstallExecute:  Error 0x80020009: Failed to register assemblies

无论我尝试什么,WiX 都无法做到这一点。我知道其他人在使用 WiX 安装 COM+ 时遇到了同样的问题,但我认为没有人能比指责 WiX 更进一步。

我想知道是否可以从组件服务控制面板手动导出 COM+ 应用程序,这会创建一个 MSI 安装程序。然后我可以使用 dark.exe 从 MSI 生成 WiX 源代码。

我实际上已经这样做了,我可以构建一个安装 COM+ 应用程序的 MSI。但这是个好主意吗?

我有疑虑:首先,组件现在已在 GAC 中注册,即使当我使用 regsvcs 手动注册程序集时它不在 GAC 中。其次,导出的 MSI 包含三个文件 - dll、其关联的 tlb 和另一个“APL”文件,该文件是作为导出副作用生成的未记录的内部格式。

使用这种安装 COM+ 应用程序的方法人们会遇到什么问题?我应该担心我对 APL 文件一无所知吗?如果你能告诉我如何使用 WiX 来做到这一点,我会很高兴的。只是希望能够进行安装...

【问题讨论】:

  • 你是在组装 .NET 4.0 吗?这个问题似乎只发生在 .NET 4.0 程序集上。
  • 对不起 - 应该说我使用的是 VS2008,程序集是 .NET 3.5
  • 这很奇怪,除了 .NET 4.0 之外,我无法重现 COM+ WiX 问题。是否可以共享您的代码? (欢迎私信我。)

标签: wix installation windows-installer com+


【解决方案1】:

COM+ 部署:我只处理过几次 COM+,尽管我是一位经验丰富的安装开发人员。处理起来似乎真的很混乱,文档记录极差,最糟糕的是:导致 intermittent problems - 最糟糕的调试问题,因为我在不同的 MSI 运行中遇到了不同的结果。通常它可以工作,但有时会崩溃,然后在某些时候反复崩溃。我测试了很多。我得出的结论是,由于 COM+ 是某种用于分布式事件的事件队列(我不太了解该技术),因此在每次设置运行期间都有很多混淆变量的机会。

组件服务:我相信我最终使用了从组件服务导出的 MSI,而在其他时候我在系统上设置了 COM+ 应用程序并在构建时将其导入 Installshield。我记得这两种方法都存在问题。我不记得所有的细节,那是很久以前的事了。 Installshield 注册的 COM 设置少于从组件服务中导出的 COM dll。即使在与 Installshield 支持人员交谈之后,我也不知道为什么。还必须在构建系统上正确安装应用程序才能导入它。在构建计算机上麻烦且不受欢迎。

APL 文件:如果我是你,我会按原样使用导出的 MSI,并且可能会与另一个 MSI 一起单独运行它来安装应用程序的其余部分 -将其全部嵌入批处理文件或使用引导程序。我绝对记得尝试更改导出的 MSI 并在此过程中反复中断。 APL 文件未正确应用于 COM+ 应用程序的某种问题(APL 文件是某种我从未理解的 COM+ 设置文件 - 基本上没有记录)。再说一遍:整个过程的文档记录极差,我从来不知道为什么会这样。

很抱歉没有提供更多帮助,但我仍会发布此内容以确保 这些信息就在那里,人们知道他们得到了什么 使用 COM+。 我的建议是使用组件服务导出的 MSI,导出后不要碰它。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多