2016-12-06 52 views
0

我们使用热来生成wix代码,以与项目相同的层次结构来交付文件。我们最近决定更改一些教程和文档文件的交付位置,但是我只是拒绝提交文件而遇到问题。我将构建操作从'content'更改为none,这样散热会忽略这些文件,并手动编辑product.wxs文件以将这些文件传送到指定的位置,因为我们不希望将它们移动到源代码控制中,并可能会丢失版本历史记录等Wix工具集未提供文件

我的目录结构(CustomerDirectory和ProgramDirectory是保密的占位符名称):位于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> 

<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> 

及以下的片段已经玩过了使用KeyPath,GUID以及许多其他可能性都没有运气。我只是最近添加log4net程序集到这个文件,他们得到没有问题,使用基本相同的代码发布在这里。

+0

我几乎决定了我想要做的是不可能在product.wxs文件中。我已经尝试过每个wix标签和属性的排列组合,你可以试试没有任何运气。看起来我将不得不移动源代码管理中的文件并丢失文件夹版本历史记录。 – Josh

回答

1

将“内容”文件传送到除了热想要放到的位置之外的其他位置变得非常困难。随着足够的挖掘,我可能已经找到了Wix内的解决方案。不幸的是,Wix并不直观,尽管从概念上说并不是很好,而且我在中国制造的档案柜上看到了更好的文档。不幸的是我们很多人还是要使用这个被抛弃的产品,所以如果你遇到类似的问题THIS IS 是我的建议:

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

+1“关于中国制造文件柜的更好文档”。有太多超详细的文档,但找到创建简单安装程序需要花费几天的重要时间。 –

+0

的确如此,可能有一个属性我错过了某个地方让我能够解决这个问题,但是编写powershell脚本并修改我的构建比处理WiX文档/ FacePalm更容易。 – Josh