首页 > 解决方案 > 使用安装程序添加自定义注册表项

问题描述

我为 Solidworks 编写了一个插件(一个 .dll)。为了让 Solidworks 找到它,我需要在ComRegistryFunction. 当我编译它并使用 .dll 注册时regasm.exe \tlb,一切都按预期工作。

现在我想分发插件,并且我正在研究设置项目以将所有东西都很好地打包。我搜索了很多,但坦率地说,很难找到关于这个主题的可靠信息。这是我所做的:

但是,安装程序没有设置自定义注册表项(它似乎没有运行我班级的 ComRegisterFunction)。

我可以通过手动将这些注册表项添加到安装项目的注册表选项卡来使其工作。但这意味着我必须手动输入类的 GUID,以及描述和标题,即使所有这些都已经在类中指定了。我知道我会忘记在未来的某个时候改变其中的一个。

如何让安装程序自动提取这些注册密钥并进行设置?

我正在使用 Visual Studio 2017 和 .Net v4。

标签: c#visual-studio-2017setup-projectsolidworks

解决方案


你是对的,Windows Installer 函数不调用任何注册函数代码。

vsdrpCOM 设置应该完成大部分注册,它应该在构建时提取到 MSI 文件的类表和注册表表中 - 您可以通过在 Orca 中打开 MSI 文件并查看提取的内容来检查。鉴于有类和接口注册表项,您没有确切说明缺少什么。另一个混淆可能是您的 MSI 文件是针对 32 位还是 64 位,以及您希望在哪里创建注册表项(类\根与软件\类以及本机 64 位与 WoW6432)。另请注意,Windows 安装程序从字面上采用每个用户的“Just me”设置,因此您将按用户注册 COM,而不是按系统注册。

这可能会有所帮助,但这些项目多年来没有改变:

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

因此,请检查体系结构和“所有人/仅我”设置,并查看那些 MSI 表以了解其中的内容。


推荐阅读