Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wix为不同目录重用ComponentGroup_C#_Wix_Windows Installer - Fatal编程技术网

C# wix为不同目录重用ComponentGroup

C# wix为不同目录重用ComponentGroup,c#,wix,windows-installer,C#,Wix,Windows Installer,我目前正在用WIX编写一个安装程序 我将每个项目放入自己的组件组中,如下所示: 但现在我必须将同一个组件组安装到多个目录中。 我如何才能做到这一点?您需要使用ComponentGroup元素中的Directory元素 目录-设置子组件元素的默认目录标识符 我在一个使用ComponentGroup的示例项目中尝试了这一点,但无法在多个位置部署同一个组件。因此,我通读了windows installer文档,以下是我遇到的情况: 用户计算机上只安装了任何组件的单个实例 切勿创建两个组件

我目前正在用WIX编写一个安装程序

我将每个项目放入自己的
组件组中,如下所示:


但现在我必须将同一个组件组安装到多个目录中。


我如何才能做到这一点?

您需要使用ComponentGroup元素中的Directory元素

目录-设置子组件元素的默认目录标识符

我在一个使用ComponentGroup的示例项目中尝试了这一点,但无法在多个位置部署同一个组件。因此,我通读了windows installer文档,以下是我遇到的情况:

  • 用户计算机上只安装了任何组件的单个实例

  • 切勿创建两个组件,以相同的名称和目标位置安装资源。如果资源必须在多个组件中重复,请更改其名称或在每个组件中的目标位置。此规则应跨应用程序、产品、产品版本和公司应用

  • 总而言之,这是windows安装程序的一个限制。如果要在多个位置安装同一文件,必须将它们定义为具有不同ID的单独组件。单个组件只能使用MSI安装到一个位置。另一个选择是利用


    您需要使用ComponentGroup元素中的Directory元素

    目录-设置子组件元素的默认目录标识符

    我在一个使用ComponentGroup的示例项目中尝试了这一点,但无法在多个位置部署同一个组件。因此,我通读了windows installer文档,以下是我遇到的情况:

  • 用户计算机上只安装了任何组件的单个实例

  • 切勿创建两个组件,以相同的名称和目标位置安装资源。如果资源必须在多个组件中重复,请更改其名称或在每个组件中的目标位置。此规则应跨应用程序、产品、产品版本和公司应用

  • 总而言之,这是windows安装程序的一个限制。如果要在多个位置安装同一文件,必须将它们定义为具有不同ID的单独组件。单个组件只能使用MSI安装到一个位置。另一个选择是利用


    是的,但我想在多个目录中使用相同的文件。你知道-对不同的文件夹重复使用相同的
    ComponentGroup
    。创建具有不同ID的多个ComponentGroup,然后指定新的目录ID。@Peter,Windows Installer的组件规则可防止混乱,并可在任何时间对当前从任何安装程序安装的所有组件进行可靠的系统操作。是的,但我希望在多个目录中使用相同的文件。您知道-对不同的文件夹重复使用相同的
    组件组
    。创建多个具有不同ID的组件组,然后指定新的目录ID。@Peter,Windows Installer的组件规则可防止混乱,并可随时对当前从任何安装程序安装的所有组件进行可靠的系统操作。
    <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>