2011-12-23 33 views
2

我想尝试为我们拥有的每个应用程序创建一组WiX项目。这个想法是,一旦开发人员准备发布应用程序的更新版本,他/她会将源文件复制到SourceDir,然后执行一个.bat文件,该文件将执行heat.exe以获取文件列表需要打包,之后Candle和Ligth会将Source编译为msi。我如何自动化WiX包装

我还想在构建包含值公共属性的包时修改App.config文件。通过我的调查,我发现我可以这样做。问题是,虽然我需要通过在配置文件Componenet元素下添加util:XmlFile Id =“SetKey1”...来做到这一点。

 <Component Id="App.config" Guid="{B62F28B1-FFB3-4E93-B651-FFC7AAD4730D}"> 
     <File Id="App.config" KeyPath="yes" Source="SourceDir\New Folder\New Folder2\App.config" /> 
     <util:XmlFile Id="SetKey1" 
      Action="setValue" 
      ElementPath="//appSettings/add[\[]@key='Key1'[\]]/@value" 
      Value="[NEWVALUE]" 
      File="[#App.config]" 
      SelectionLanguage="XPath" 
      Sequence="1" /> 
     </Component> 

这绝不是好是位自败,当你下一次奔波的热量。有没有一种方法来分隔配置文件被修改的位

回答

0

你应该至少有2个wxis。 1将用于主要产品并包含组件,另一个将是HEATed文件。

在主Product.wxs(或任何你所说的)可以指定目录,当你运行热量时,你可以指定一个目录ref。

即。

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="INSTALLLOCATION" Name="MyApp"> 
     <Directory Id="WEBROOT" Name="wwwroot" /> 
     </Directory> 
    </Directory> 

当你运行你会指定directoryref为WEBROOT热量,这时只要您编译WXS双方共同文件将被包括在内。

例如。热量[其他参数] -dr WEBROOT

+0

谢谢丹尼尔,谢谢你,你能帮我解决这个问题吗?说其中一个组件是一个app.config文件,我想用公共属性值覆盖如何从加热的wxis文件外部引用该组件来使用util修改它:XmlFile – user979441 2011-12-24 23:38:42