我有一个应用程序,它在某些情况下会使用设备(例如打印机)。基本上,在一个办公室将使用此打印机,而在另一个办公室将永远不会使用此打印机。
使用打印机的功能位于应用程序代码中,与打印机通信的dll在代码中引用。因此,dll是安装.msi包的一部分。
但是,如果未安装必备组件(打印机的一组驱动程序,由制造商作为单个安装可执行文件提供),则无法在安装过程中注册这些dll。驱动程序的安装包大小约为50M。
我不想在永远不会使用打印机的办公室的安装包中包含额外的50M文件。该问题的可能解决方法是什么?
最终,我希望在安装过程中能以某种方式跳过这些dll的注册。但我不知道如何处理这个问题。
我想我可以在代码中进行条件编译。但这将涉及大量的工作,以将与这种类型的打印机对话的代码与应用程序代码的其余部分完全分开。
有什么可行的解决方案吗?
发布于 2009-02-20 04:45:15
对要有条件安装/注册组件的DLL进行分组。然后在MSI的Component表中,使用Condition列来依赖于要设置的属性。在MSI的locator tables中,配置行以查找先决条件并设置属性。
您可以通过阅读以下内容来了解更多信息:
http://msdn.microsoft.com/en-us/library/aa371564(VS.85).aspx
https://stackoverflow.com/questions/568268
复制相似问题