我目前正在使用WIX编写安装程序。
我把每个项目都放到它自己的ComponentGroup
中:
<ComponentGroup Id="CG.MyLib" >
<Component Id="C.MyLib" Guid="{349e5aa6-d935-48fe-9170-a36928c13545}" Directory="INSTALLFOLDER">
<File Id="MyLib" Source="$(var.MyLib.TargetPath)" KeyPath="yes" Checksum="yes" />
</Component>
<!-- #region Referenced Projects -->
<ComponentGroupRef Id="CG.A_COMPONENT_I_NEED_IN_MyLib" />
<ComponentGroupRef Id="CG.AnotherDependendComponent" />
<!-- #endregion Referenced Projects -->
<!-- #region References -->
<Component Id="MyLib_References" Guid="{0c77a027-2b1e-44fc-9c1d-fcda80acb740}" Directory="INSTALLFOLDER">
<File Id="SomExtraDll_I_Need.dll" Source="$(var.MyLib.TargetDir)\SomExtraDll_I_Need.dll" />
</Component>
<!-- #endregion References -->
</ComponentGroup>
但现在我必须将相同的组件组安装到多个目录中。
我怎样才能做到这一点?
您需要使用ComponentGroup ELement中的Directory元素。
目录 - 设置子Component元素的默认目录标识符。
我在使用ComponentGroup的示例项目中尝试了这个,但我无法在多个位置部署相同的组件。所以我通读了Windows安装程序文档,这是我遇到的内容:
总结一下,它是Windows安装程序的限制。如果要在多个位置安装相同的文件,则必须将它们定义为具有不同ID的单独组件。单个组件只能使用MSI安装到一个位置。另一种选择是使用CopyFile Element