【问题标题】:In Two wix generated msi installers, uninstalling one installer is causing other one not working在两个 wix 生成的 msi 安装程序中,卸载一个安装程序会导致另一个安装程序无法正常工作
【发布时间】: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


【解决方案1】:

虚拟化:您是否在使用这些应用程序的公司环境中?您可以改用现代的 App-V 包 吗?这是一个基本上按需安装的包(在启动时),并允许它部署的应用程序运行“沙盒”或与系统上的其他应用程序隔离。干扰问题应该消失了。您还可以通过 VMWare 等系统使用虚拟机在其自己的操作系统中运行有问题的应用程序。如果需要,虚拟机还允许您以 管理员权限 运行某些应用程序。 如果贵公司有包装团队,可以和他们谈谈吗?

我提出上述建议的原因是我知道 VB6 应用程序基本上没有希望部署。他们有各种奇怪的问题,需要很长时间才能解决,而且解决起来永远不会那么好。

【讨论】:

  • 感谢您的回复。不幸的是,我无法使用 App-V 打包工具。我会按照您的建议尝试使用选项-svb6
  • 您的目标平台是什么? Windows 10?
  • 我们必须支持,Windows 2012,到2016,同样需要支持Windows 7和Windows 10。但是构建机器是Windows 2003 :( .
猜你喜欢
  • 2015-10-22
  • 2010-09-17
  • 2019-05-18
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2022-07-23
  • 1970-01-01
相关资源
最近更新 更多