假设我有两个功能,都使用abc.dll,并且都从它们各自的当前目录中引用它。
所以输出看起来像这样:
特征1
abc.dll
特征2
abc.dll
我为此创建了2个组件。实际上我有许多功能和许多共享的dll,我的安装程序大小接近1GB。
我正在寻找的是使用IS 2015专业人士的更聪明的方法。
到目前为止我看过的内容:
合并模块:不确定这是否可行,这也意味着我需要在升级文件时手动维护合并模块。
DuplicateFile,通过直接编辑器,但这不起作用,因为没有办法将它绑定到一个功能,只有一个组件。
将共享文件安装到目标系统的隐藏功能,然后是将这些文件复制到各自功能的后脚本,并删除此功能的文件夹。
是否有最佳实践方法来实现我的需求?
答案 0 :(得分:0)
在这种情况下,最合适的方法是合并模块。我不确定为什么要维护它们 - 你应该有一个自动构建过程来创建所有合并模块,然后使用新创建的模块构建主安装程序。
但是,在我看来,如果你有很多自定义操作,合并模块使用起来有点麻烦。
合并模块的替代方案 - 假设您正在使用Windows Installer项目 - 正在使用您“链接”到主安装程序的小型MSI包(您可以链接具有不同条件的多个包并提供不同的属性)。在这里,你应该有一个构建过程,它构建所有那些小的msi包,然后构建主安装程序。
如果你不想拥有这种“子项目”,那么可以接受带有后期操作的隐藏功能选项,我已经看过了,并且已经完成了几次。请注意,如果您定位Windows 7或更高版本,而不是物理复制文件并删除它们,您可以使用符号链接(使用mklink
命令),这有助于减少安装在目标系统上的占地面积(并使修补更容易 - 您替换原始文件,并自动更新其所有链接。