【发布时间】:2018-12-03 05:47:46
【问题描述】:
我有两个使用 wix(版本 3.11)创建的安装程序。安装程序共享一些 dll/ocx 文件(旧的 VB 模块)。
单独安装时,安装程序运行良好。或者当两个安装程序都安装时。但是,如果我卸载了任何一个应用程序,那么另一个应用程序将无法启动(甚至无法启动)。
我正在使用以下类型的 Component 标签。
<Component Id="cmpFF2764B47716F09AAAEBF0C6DC2324E9" Guid="{6A11D493-3293-45DE-B169-B624A26B6D98}" Shared="yes" SharedDllRefCount="yes">
<File Id="filB539B5FD161C1FA29A10F82339F88A83" KeyPath="yes" Source="$(var.SourceBasePath)\COMMON_FILES\Common\Servers\libsrv.dll" SelfRegCost="1"/>
</Component>
由于错误 error CNDL0047 : The TypeLib element is non-advertised and therefore requires a
parent File element. (https://github.com/wixtoolset/issues/issues/3412/),我无法使用 heat.exe 获取 dll。
所以我把它做成了SelfReg。现在我坚持这个问题。有什么线索可以解决这个问题吗??
【问题讨论】:
-
这可能涉及更多,但从臀部拍摄:please open this page 并搜索
-svb6。在卸载一个 MSI 后,验证这些条目是否仍在注册表中。至少值得一试。 -
您是否使用 ProcMon.exe 进行分析以找到导致问题的缺少注册?我可以稍后提供这方面的详细信息,但现在不行。
-
我想提一下registrationless COM - 本质上是将注册表项放在清单文件中。 SO answer。不是微不足道的,但可以在没有注册表参与的情况下进行 VB6 部署。我会先推荐
procmon.exe看看它是否是微不足道的。例如缺少共享注册表项。
标签: windows wix installation wix3