【问题标题】:How can I automate WiX packaging如何自动化 WiX 打包
【发布时间】:2012-01-26 13:25:33
【问题描述】:

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

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

这不好,因为当你下次跑热时,那一点就会消失。有没有办法隔离修改配置文件的位

【问题讨论】:

    标签: xml build wix build-automation packaging


    【解决方案1】:

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

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

    即。

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

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

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

    【讨论】:

    • 谢谢丹尼尔,谢谢,你能帮我解决这个问题吗?假设其中一个组件是一个 app.config 文件,我想用公共属性值覆盖它我如何从加热的 wxis 文件外部引用该组件以使用 util:XmlFile 对其进行修改
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多