【问题标题】:The best way to deploy COM classes from a .NET assembly on the user's computer [closed]从用户计算机上的 .NET 程序集部署 COM 类的最佳方法 [关闭]
【发布时间】:2014-05-29 18:47:18
【问题描述】:

我编写了一个程序集,它使用 regasm 在我的开发机器上注册并正常工作。我想知道在用户计算机上部署此类库的推荐方法是什么。我的用户将使用 Excel VBA 中的 COM 库。

我知道我可以编写一个简单的脚本来调用 regasm 并将其交付给用户,但我不确定这是否是最佳做法。例如,在交付了几次更新之后,我的用户可能最终注册了几个版本的库,所以我想为他们提供一种在不再需要时卸载旧版本的方法。用户将自己编写 VBA 脚本,因此他们将知道他们使用的 COM 库的版本,因此他们应该能够知道可以卸载哪些版本。

最佳做法是什么?

【问题讨论】:

  • 如果您根本不说您希望使用该服务器的客户端程序的类型,则无法有意义地回答这个问题。 COM 有一个强大的 DLL Hell 问题,您通过随意删除或替换旧版本而陷入麻烦。您破坏客户端程序的几率非常高。
  • @HansPassant - 已编辑。
  • 所以你不知道客户端程序员使用的是什么版本。不要自动卸载旧版本,你必须让他们自己去做。确保新版本可以与旧版本和平共存。这意味着您必须使用新的 [AssemblyVersion] 部署到 GAC。并遵循 COM 规则,接口的更改需要新的 guid,因此新版本的注册不会覆盖旧版本。

标签: .net com installation .net-assembly regasm


【解决方案1】:

我使用WiX 来安装应用程序,它支持使用其套件中名为Heat 的工具创建这些注册条目。它有一点学习曲线,但我发现它是一个很棒的安装程序套件。它是免费的,并且被广泛使用。

如果您正在寻找更简单的解决方案,您可以创建一个批处理文件,就像您所说的手动注册/取消注册 dll 并安装/卸载文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多