如何使用Wix将一组文件复制到多个位置?

Kei*_*las 10 wix

我正在尝试进行安装,将相同文件的副本放在多个位置......

有一个简单的方法来做到这一点?

例如.如果我想将a.txt b.txt c.txt放入以下所有目录: -

.\ Blah\
.\ Txts\
.\例子\

Wim*_*nen 11

只需创建引用同一文件的多个组件,但将其安装到不同的位置.唯一的问题是您不能使用<File Source="somefile"/>引用同一文件的两个元素,因为它们将获得相同的自动生成ID.明确地为文件元素提供不同的ID以避免该问题.

<DirectoryRef Id="directory1">
   <Component Id="somefile-component1">
      <File Id="somefile-id1" Source="/path/to/somefile"/>
   </Component>
</DirectoryRef>

<DirectoryRef Id="directory2">
   <Component Id="somefile-component2">
      <File Id="somefile-id2" Source="/path/to/somefile"/>
   </Component>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

  • 我会接受这个答案,因为这是我最终有效地做的事情.我不喜欢所有复制的想法所以我最终编写了一个为我生成Wix xml的程序并自动处理复制.像wix这样的感觉太原始了,编写安装程序需要更高级别的抽象. (2认同)
  • @SergeiGolos:它不会增加大小,[smart cabbing](http://robmensching.com/blog/posts/2007/6/1/quotSmart-cabbingquot- added-to-WiX-toolset) 将确保文件的内容只包含一次。 (2认同)

Ste*_*mul 7

Windows Installer有一个名为"DuplicateFiles"的概念.它只适用于文件实际上是相同的,但听起来就像你想要的那样.在WIX中,您可以通过CopyFile元素实现:

http://wix.sourceforge.net/manual-wix2/wix_xsd_copyfile.htm

我还没有尝试过它,但看起来应该是这样的

<Component Id='Manual' Guid='*' >
  <File Id='Manual' Name='Manual.pdf' Source='Manual.pdf' KeyPath='yes'>
    <CopyFile  Id='MyDuplicateFile1' DestinationProperty ='DesktopFolder'/>
  </File>
</Component>
Run Code Online (Sandbox Code Playgroud)