- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 WiX 比较陌生。这是一个很棒的工具,但我还需要一些时间
更好地学习它。
我遇到了一个COM注册和注销的问题
成分。我为两个应用程序创建了安装程序,我们称它们为 A
和 B. 两者都使用相同的 COM 组件。我使用了加热工具,因为
受到推崇的。安装 A 或 B 时,组件注册时没有任何
问题。
但是当我安装 A 和 B,然后删除 A(使用添加/删除程序)COM
类被取消注册,B 不能再使用它。有没有干净
防止这种情况发生的解决方案?我想注销 COM
当 A 和 B 都卸载时。
任何帮助,将不胜感激,
此致,
疯狗
编辑:感谢您的回复。我在两个安装程序中将 GUID 设置为相同的值,现在正在正确删除注册表项,即从系统中删除最后一个程序。
然而,问题仍然存在是有原因的。我已经检查了 HKEY_CLASSES_ROOT/CLSID/[适当的 COM GUID] 下的注册表。这是发生的事情:
- 我安装了 A 并且 COM 的路径设置为 [A/component.dll 的路径]
- 我安装了 B 并且 COM 的路径设置为 [路径到 B/component.dll]
- 我删除了 B 并且到 COM 的路径仍然是 [路径到 B/component.dll]
- 现在 A 无法访问 COM 组件,因为它已注册,因为 [B/component.dll 的路径] 不再存在
现在我认为必须将两个应用程序的 COM 组件放在同一目录中。 Windows Installer 是否无法恢复到旧路径,还是我遗漏了什么?
最佳答案
Windows 安装程序将为您执行此操作,但前提是您的 COM 组件在 A 和 B 上具有相同的 GUID(并且两个应用程序都将 dll 安装在同一位置。)
Windows 安装程序通过对每个组件(整个系统)进行引用计数来工作。组件由其 GUID 标识。
如果 COM 组件具有相同的 GUID,则会发生以下情况:
KeyPath="foo.dll"
设置哪个文件是“ key ”文件。 .如果组件包含一个或多个注册表项,则类似。
Program Files\Common Files\YourCompanyName
)。您可以像这样在 Wix 中输入:
Directory="[CommonFilesFolder]\YourCompanyName"
关于com - WIX:删除两个程序之一时 COM 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488840/
我是一名优秀的程序员,十分优秀!