这种安装COM +的方法有效吗?

问题描述 投票:1回答:1

我一直试图使用WiX 3.7安装COM +程序集。我一直在使用在StackOverflow上找到的几个WiX代码段。尽管我可以生成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。

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

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

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

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

wix installer windows-installer com+
1个回答
0
投票

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

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

[APL文件:如果我是我,则将按原样使用导出的MSI,并可能与另一个安装了应用程序其余部分的MSI一起单独运行-将它们全部嵌入批处理文件中或使用引导程序。我绝对记得要尝试更改导出的MSI,并在此过程中反复中断它。 APL文件未正确应用于COM +应用程序时出现某种问题(APL文件是某种我从未理解过的COM +设置文件-很大程度上未记录)。再次:对整个过程的记录非常差,我从不知道为什么会发生。

很抱歉没有更多帮助,但是我仍然会发布此信息以确保这些信息在那里,人们知道他们正在得到什么与COM +。 我的建议是使用从组件服务导出的MSI,导出后请勿触摸。

© www.soinside.com 2019 - 2024. All rights reserved.