Windows安装程序可以根据外部应用程序的版本部署程序集吗?

时间:2012-01-24 23:32:29

标签: .net visual-studio-2010 interop windows-installer tlbimp

我正在开发Visual Studio 2010 / .NET 4中的一个小程序(一个dll),它通过COM互操作与外部应用程序(我们称之为ExApp)集成。我正在使用TlbImp.exe自己生成互操作程序集,因为外部应用程序都没有提供。 ExApp有三个流行的版本,每个版本都有一个实际上相同的API,但每个版本都有不同的(并且不兼容)生成的互操作dll。目前,这意味着我有三个独立的安装程序:

  • my.dll v1
  • 建立/链接的Interop.ExApp.dll安装程序
  • my.dll v2
  • 建立/链接的Interop.ExApp.dll安装程序
  • my.dll v3
  • 建立/链接的Interop.ExApp.dll安装程序

必须有比这更好的解决方案。

如何配置Visual Studio / Windows Installer以便我只需要安装一个.exe?这意味着安装程序将检测ExApp的版本,并安装相应版本的my.dllInterop.ExApp.dll

还有一个额外的问题:由于ExApp API没有有意义的改变,如何编译my.dll的一个版本以使用任何已安装的ExApp版本?

2 个答案:

答案 0 :(得分:1)

在项目的参考文献中,dll的Specific Version设置为True还是False?如果将其设置为True,您可以尝试将其设置为False。

这显然不会阻止新版本破解(API更改),但目前看来似乎是这种情况

答案 1 :(得分:1)

为什么不构建具有3个不同文件名的interop,然后在应用程序中创建工厂模式以决定在运行时使用哪个提供程序?

我可以向您展示搜索系统以安装3个互斥文件之一的方法,但我不认为安装程序中存在这种复杂性。如果有人升级了你正在创建互操作的应用程序,它就会崩溃。