关于c#:安装合并模块以及”使用”

Installing a merge module as well as “consuming”

我有几个解决方案,它们代表了我在工作中建立的代码框架。一种解决方案称为"框架",另一种称为"扩展"。

之所以将它们拆分,是因为"扩展"解决方案包含由扩展方法组成的项目,并且对这些项目进行了组织,以使生成的程序集反映.NET程序集。

我为"扩展程序"创建了一个合并模块项目,并使用了该安装程序。一切都很好,但现在我想为"框架"创建一个安装程序,该安装程序也使用相同的合并模块。因此,我想修改"扩展程序"安装程序以将"扩展程序"合并模块文件复制到C :\\Program Files\\Common Files\\Merge Modules,以便"框架"安装程序具有一个众所周知的路径,通过该路径可以为"扩展",而不是引用我的VS解决方案所处的任何晦涩路径(原因是该框架有时会构建在不同的机器上,而通往VS项目的路径可能会有所不同)。

MSDN文档仅简要地解决了这一问题,只说不能将合并模块安装到文件系统,而只能"消耗"。

失败。

有人知道解决这个问题的方法吗?自定义动作? Visual Studio安装程序如何安装其合并模块?


晚了聚会,但是

我曾经通过重命名合并模块(更改了文件扩展名),将其作为普通文件安装到文件系统,然后重命名已安装的文件来执行此操作。


简单的答案是:没有办法做到这一点,除非编写您自己的安装框架。


在文件系统编辑器中创建MergeModule安装程序时,会存在一个名为" Module Retargetable Folder "的文件夹(这是默认名称,可以更改,也可以添加其他名称)。

如果已建立.msm,如果转到主安装项目并向其中添加合并模块,则可以在解决方案资源管理器中选择.msm,然后在属性窗口中查看一个名为" MergeModuleProperties的条目",将其展开,您应该会看到列出的所有可重定位文件夹,然后可以将它们指向正确的位置。