我们最近为我们的客户遇到了一些 .dll 地狱问题,所以我想知道所需的 .dll 和 .ocx 的 SxS 安装是否是个好主意。我读到了它并成功地部署了我们的应用程序,至少它的一些依赖项是通过清单来满足的,但它仍然是推荐的部署方式,还是它是过去几年的一种时尚,现在逐渐被放弃了?
2 回答
我不明白为什么它会成为一种时尚。VB6 中的问题是从来没有直接支持它的工具更新,尽管 VB6 SP6 改进了支持并且 XP SP2 提供了更完整的实现。
我们在这里一直使用它,尽管我们发现某些 3rd 方控件没有正确编写并且无法使用它。例如,许多 vbAccelerator 的东西似乎都以这种方式被“破坏”了。
这是我们现在不使用无注册 COM 部署的罕见情况,即使我们将其全部包装在 MSI 包中也是如此。与其他产品的糟糕安装程序(许多 DLL Hell 的来源)隔离是一大优势,而且 Windows 在系统组件方面正在变得更好,这本身就很有帮助。
诀窍是找到好的工具支持。我从来没有耐心通过 SDK 工具应用微软的粗略支持,但我认为其他人有。这种东西至少有一种商业产品。我们使用我们自己内部开发的工具。
时尚?我们认为这是竞争优势。它确实也使在 VB6 中制作便携式软件变得更加容易!与我们从德国来源看到的一些运行时库加载和黑客工具包不同,您也不必在程序中添加大量繁琐的编码。只是普通的旧 VB6 程序可以正常工作。
它启用的另一件事是按用户部署,从而可以轻松创建为没有提升权限的用户安装的 MSI 包。我们主要不是生产隐形软件,但客户有时会在他们的组织内面临一些高墙,这让他们可以安装我们提供的产品并继续他们的工作。由于我们没有触及注册表或受保护的文件系统区域,因此来自管理员类型的负面反馈几乎为零。Windows 7 增强了这一点:
在 Windows 7 中为每用户或每机器安装上下文创作单个包
相同的技术适用于 Vista,尽管您没有获得单包功能。构建隔离的应用程序使该过程更加容易。
当然,SxS 不仅仅意味着无注册的 COM 和隔离,但在 VB6 术语中,这可能就是您所说的。DotNet 使用它,操作系统使用它。我不确定为什么它看起来像是一种“时尚”。也许很多人因为对工具感到沮丧、从 VB6 转向其他东西,或者因为现在的经济竞争非常激烈而对这个主题保持沉默。
我过去曾尝试过 SxS,但在应该运行应用程序的一定百分比的 Windows XP 机器上遇到问题后停止使用它。