Wix工具集不提供文件

时间:2016-12-06 18:01:46

标签: wix

我们使用heat来生成wix代码,以便在与项目相同的层次结构中提供文件。我们最近决定更改一些教程和文档文件的交付位置,但是我遇到了wix只是拒绝提供文件的问题。我将构建操作从“内容”更改为无,以便热量忽略这些文件并手动编辑product.wxs文件以将这些文件传递到指定位置,因为我们不希望在源代码管理中移动它们并且可能会丢失版本历史等。

我的目录结构(CustomerDirectory和ProgramDirectory是保密性的占位符名称):

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="$(var.PlatformProgramFilesFolder)">
    <Directory Id="CustomerDirectory" Name="Customer">
      <Directory Id="INSTALLFOLDER" Name="ProgramName">
        <Directory Id="ResourcesFolder" Name="Resources">
          <Directory Id="DocumentationFolder" Name="Documentation"/>
          <Directory Id="TutorialsFolder" Name="Tutorials"/>
        </Directory>
      </Directory>
    </Directory>
  </Directory>

以及下面的片段位于product.wxs

的底部
<Fragment>
  <ComponentGroup Id="DocumentationComponents" Directory="DocumentationFolder">
    <Component Id="Installation_Guide.pdf">
      <File Id="Installation_Guide.pdf" Source="$(var.GUI.ProjectDir)\Documentation\Installation Guide.pdf" KeyPath="yes"/>
    </Component>
  </ComponentGroup>
</Fragment>

我玩过KeyPath,GUID以及许多其他可能没有运气的可能性。我刚刚将log4net程序集添加到此文件中,并且使用基本相同的代码在此处发送它们没有问题。

1 个答案:

答案 0 :(得分:1)

提供&#34;内容&#34;提交到不同的地方,除了热量想要把它变得非常困难。随着周围的挖掘,我可能已经在Wix中找到了解决方案。不幸的是,Wix根本不是直观的,虽然从概念上看并不是很好,但我在中国制造的文件柜上看到了更好的文档。不幸的是,我们中的许多人仍然需要使用这个被遗忘的产品,所以如果你遇到类似的问题,那就是 我的建议是什么:

  1. 您希望在其他地方提供的任何文件,将其构建操作更改为&#34; none&#34;因此,热量不再包含在它生成的.wxs文件中。
  2. 创建一个xml,其中包含您需要插入到生成的热文件中的所有Component,ComponentRef,File和Directory元素。 (如果您手动更改生成的热文件,它将在稍后被覆盖。我们将使用一个powershell文件,该文件在生成热文件后每次运行并将这些xml元素插入到生成的热文件中,其中包含文件的任何目录结构或目标您想要的(这意味着您不再局限于安装的项目层次结构,并且可以更改文件的安装位置,而无需更改源代码管理中文件的位置。)
  3. 创建powershell文件,打开热量生成文件并打开xml文件,然后导入节点并将它们插入到生成的热文件中。在xml插入后保存生成的热文件。
  4. 创建一个运行heat.exe以生成.wxs文件的批处理文件,在下一行调用打开.wxs和.xml的powershell文件,并将xml节点从xml传输到.wxs文件。
  5. 保存