繁体   English   中英

如何使用安装程序部署类库(dll 或 tbl 文件)

[英]How to deploy Class Library (dll or tbl file) with Installer


我在 Visual Studio 上使用 .Net Framework (VB.NET) 开发了一个新的(小)类,并在 VBA-Excel 上做了一个参考来执行任务。 它在我的机器上运行良好,所以这里真正的问题是在客户端的机器上部署这个类。

当我在 Visual Studio 上进行构建时,我选择了“Register for COM Interop” ,因此它创建了一个 .dll 和 .tbs 文件。 我以为我可以在 VBA 上使用对这些文件的引用,一切都会正常工作,但这并不是那么简单。 我必须先在系统上注册 dll,然后才能使用它,Visual Studio 会在构建时自动完成。

问题是,我怎样才能制作一个通用的安装程序来只将那些 dll 和 tbl 文件安装到任何人的机器上 这些文件必须保留在已知文件夹中,以便我可以在 VBA 上引用它们,但 Windows 寄存器必须知道它们存在!

到目前为止我知道什么:

  • 在构建过程中,Visual Studio 使用 Regasm.exe 来注册 dll; 我可以使用 bat 文件来调用 regasm.exe 但这不是一个选项,因为我必须引用它并且每个客户端可能有不同的 .Net Framework 版本,所以我无法知道完整路径其中。

  • regsvr32.exe 也不起作用,因为我们需要管理员权限,并且
    客户没有。

  • 我可以使用 ClickOnce,但它是一个类库,因此发布选项不存在。

这里我有一些参考资料,但我还没有找到好的解决方案。

https://www.red-gate.com/simple-talk/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/

https://social.msdn.microsoft.com/Forums/windows/en-US/70f5558c-cf53-4bc0-b3ea-435b6f5b3956/how-to-get-setup-project-to-register-assembly-for-com-互操作?论坛=winformssetup

https://social.msdn.microsoft.com/Forums/en-US/47d6dc58-37ce-4a34-9524-20dc1c1ffd90/how-to-use-clickonce-deployment-technology-for-class-library-project?forum= winformssetup

更新 1

似乎在寄存器中安装的唯一方法是通过 regasm.exe 或 regsvr32,并且两者都需要提升的命令提示符(具有管理员权限),这是客户端没有的。

我想解决方案是使用COM 组件的免注册激活,它不需要更新注册表或在 GAC 中放置程序集。 这是参考:

是否可以在不添加注册表项的情况下为 COM 互操作注册 .NET 程序集?

更新 2

我找到了这个答案,我觉得我真的很接近解决方案:

在没有管理员权限的情况下注册 .Net COM DLL/regasm

问题是,我开发的类正在使用另一个类,即 PdfSharp。 当我取消注册 dll 并尝试再次注册(通过 regasm.exe)时,我的 VBA 宏不是在创建对象时出现错误,而是在我执行类的函数时出现错误,说 PdfSharp 不能'找不到。

这个问题的解决方案并没有说明使用 3rd 方库,我认为我的 .dll 也会带来 pdfsharp.dll。

有什么想法吗? 我真的很接近解决这个问题。

您是否尝试过使用 Install Shield Limited Edition 来打包您的应用程序? 免费。

我放弃了在没有管理员权限的机器上安装 DLL 的尝试,所以我在 Visual Studio 上开发了一个控制台应用程序,并通过 VBA 上的 Shell 命令运行它,它的工作就像一个魅力。

我将其设置为正确答案,因为它解决了我的问题,但我找不到通过其他机器上的安装程序部署 dll 的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM