如何自动化WiX包装

时间:2011-12-23 02:46:52

标签: xml build wix build-automation packaging

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

我还想在使用值public属性构建包时修改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>

这不好,因为当你下次跑热时,这个位消失了。有没有办法隔离配置文件被修改的位

1 个答案:

答案 0 :(得分:0)

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

在主要的Product.wxs(或任何你称之为)中,可以指定目录,当你运行加热时,你可以指定一个目录引用。

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

当您运行heat时,您将directoryref指定为WEBROOT,然后只要您将WXS编译在一起,就会包含文件。

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