我有一个应用程序,在某些情况下会使用设备(即打印机)。基本上,在一个办公室中将使用该打印机,而在另一个办公室中,该打印机将永远不会被使用。
使用打印机的功能位于应用程序代码中,代码中引用了与打印机通信的dll。所以dll是安装.msi包的一部分。
但是,如果未安装先决条件(由制造商提供的一组驱动程序作为单个安装exe),则无法在安装期间注册这些dll。驱动程序的安装程序大小约为50M。
我不想在永远不会使用打印机的办公室的安装包中包含额外的50M文件。该问题有哪些可行的解决方法?
最终,我想要一个选项以某种方式在安装过程中跳过这些dll的注册。但我不知道如何处理这个问题。
我想我可以在代码中进行条件编译。但这将需要大量工作才能将与此类打印机对话的代码与其他应用程序代码完全分开。
任何可能的解决方案?
答案 0 :(得分:3)
将要有条件安装/注册组件的DLL分组。然后在MSI的Component表中,使用Condition列依赖于要设置的属性。在MSI的locator tables中,配置行以查找先决条件并设置属性。
您可以阅读以下内容了解更多信息:
http://msdn.microsoft.com/en-us/library/aa371564(VS.85).aspx