我想尝试为我们拥有的每个应用程序创建一组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>
这不好,因为当你下次跑热时,这个位消失了。有没有办法隔离配置文件被修改的位
答案 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