我是Wix的新手,我遇到了一个我自己无法解决的问题,所以任何帮助都会非常感激。
快速背景: 我代表一个软件供应商构建一个基于SOA的综合应用程序套件,以便在大型企业中进行部署。我们的架构由许多层组成,可以独立安装/升级,因此我正在构建多个安装程序,从头开始编写(如:平台,核心框架组件,服务层,业务层,应用程序层等)。
软件版本:
-Wix 3.5.1309.0(wix.dll)
- Visual Studio 2008,.Net 3.5
- 构建操作系统:Windows 2008 R2 Standard 64位
- 部署操作系统:Windows 2008 Standard 32位
我的问题是在COM +应用程序中安装.Net程序集。我继续收到错误“无法安装类型库”。我一直在阅读我能找到的所有文档,而且我已经谷歌了好几天了。我找到了很多关于这个主题的帖子,但我仍然无法解决这个问题。
为了隔离问题,我已将问题解压缩到单独的安装程序中。首先我运行主安装程序:
1.将所有组件安装到GAC中,包括要在COM +中安装的组件
2.创建本地用户和组
3.创建目标COM +应用程序,包括角色等
4.将目标程序集和随附的类型库安装在一个文件夹中(以删除任何GAC查找问题)
这个安装程序我可以安装/修复/卸载,一切正常。
然后我运行仅包含问题的最小安装程序,尝试:
1.在现有COM +应用程序(服务器)中安装程序集,引用预安装的.dll和.tlb。
安装失败,并显示日志:
MSI (s) (AC:64) [19:16:01:127]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI1BAB.tmp, Entrypoint: ComPlusInstallExecute
ComPlusInstallExecute: ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='Could not install type library 'c:\Program Files\MyManufacturer\ComPlus\WDA.ServiceProviders.Update.11.tlb' into application 'WDA.ServiceProviders.Update.11'.', 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: MyAssembly
ComPlusInstallExecute: Error 0x80020009: Failed to register assemblies
Action ended 19:16:02: InstallFinalize. Return value 3.
我还注意到回滚删除了COM +应用程序,即使它不是由此安装程序创建的 我可以使用服务器管理器从安装程序引用的同一物理文件中手动安装程序集。从COM +应用程序手动删除组件后,安装程序工作!
另外,为什么我必须首先提供一个类型库?无论如何,EnterpriseServices.RegistrationHelper正在动态生成类型库。
这是失败的最低测试安装程序:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:complus="http://schemas.microsoft.com/wix/ComPlusExtension"
>
<Product Id="48EDB258-BD84-47EF-94A2-B4950EE48139"
UpgradeCode="F29B8EBD-DFD1-4B7E-96FF-86842CAAE4A4"
Name="ComPlusInstalls"
Language="1033"
Version="1.0.0"
Manufacturer="MyManufacturer">
<Package Id="ABA41719-BC28-4A57-BA9A-58F4F3B2194F" InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="WixTest.cab" EmbedCab="yes" />
<complus:ComPlusApplication Id="MyApplication" ApplicationId="1FCF220A-A1FE-44FE-BE91-B37341BA6D4A" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyManufacturer" Name="MyManufacturer">
<Directory Id="INSTALLLOCATION" Name="ComPlus">
<Component Id="MyComponent" Guid="6D46A007-6669-487B-BAA0-DFA7314C141D" KeyPath="yes">
<complus:ComPlusAssembly Id="MyAssembly" Type=".net" Application="MyApplication"
RegisterInCommit="no" DllPathFromGAC="no"
DllPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.dll"
TlbPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.tlb"/>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="MainFeature" Title="WixTest" Level="1" Absent="disallow" InstallDefault="local">
<ComponentRef Id="MyComponent" />
</Feature>
</Product>
</Wix>
干杯,
-Nils
答案 0 :(得分:1)
我有同样的问题。香港专业教育学院尝试过Wix 3.5和3.6.2012.0并且它还没有使用过。它适用于
您是否设法找到解决方案?
答案 1 :(得分:0)
首先,您可以尝试升级到最新版本的WiX v3.5。最后在COM +中有一些错误修复。如果这不起作用,请查看open bugs around COM+。由于COM +的复杂性,安装代码存在一些已知问题。
如果这些错误中的任何一个听起来适用,也许您可以帮助修复社区?