我正在开发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.dll
和Interop.ExApp.dll
。
还有一个额外的问题:由于ExApp API没有有意义的改变,如何编译my.dll
的一个版本以使用任何已安装的ExApp版本?
答案 0 :(得分:1)
在项目的参考文献中,dll的Specific Version
设置为True还是False?如果将其设置为True,您可以尝试将其设置为False。
这显然不会阻止新版本破解(API更改),但目前看来似乎是这种情况
答案 1 :(得分:1)
为什么不构建具有3个不同文件名的interop,然后在应用程序中创建工厂模式以决定在运行时使用哪个提供程序?
我可以向您展示搜索系统以安装3个互斥文件之一的方法,但我不认为安装程序中存在这种复杂性。如果有人升级了你正在创建互操作的应用程序,它就会崩溃。