【问题标题】:Reference a heat generated wxs file from a merge module从合并模块引用热生成的 wxs 文件
【发布时间】:2014-10-16 11:23:51
【问题描述】:

我想创建一个简单的合并模块,其中包含一个名为“build”的目录的所有文件,并将它们安装到程序文件文件夹中。我将使用 heat 生成包含所有这些文件的 wxs 文件,并且我希望将其与我为合并模块手动编辑的 wxs 文件分开。如何从我的其他合并模块 wxs 文件中引用热生成文件?

我像这样生成我的 heat wxs 文件:

heat dir build -cg heatComponent -gg -var var.buildFolder -dr ProgramFilesFolder -srd -out heatComponent.wxs

我知道如何创建一个 msi 文件:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Name='product' Id='9f6edf70-539a-11e4-916c-0800200c9a66' UpgradeCode='bb651370-539a-11e4-916c-0800200c9a66'
        Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Test'>
        <Package Id='*' Description="A product" InstallerVersion='301' Languages='1033'       Compressed='yes' SummaryCodepage='1252' Platform='x64'/>

        <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />

        <Directory Id='TARGETDIR' Name='SourceDir'>
            <Directory Id='ProgramFilesFolder'/>
        </Directory>

        <Feature Id="Files" Title="Main Feature" Level="1">
            <ComponentGroupRef Id="heatComponent"/>
        </Feature>
    </Product>
</Wix>

但是当我想输出一个合并模块时如何引用 ComponentGroup 呢?如果我将 Product 元素更改为 Module 元素,它会抱怨 Feature 元素。如果我删除它,它可以工作,但我的 msm 中没有任何文件。

【问题讨论】:

    标签: wix heat merge-module


    【解决方案1】:

    根据您发布的 heat 命令,尝试使您的模块定义(module1.wxs)看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
      <Module Id="Mod1" Language="0" Version="1.0.0">
        <Package Id="YOUR-GUID" Manufacturer="Acme" />
        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="ProgramFilesFolder" />
        </Directory>
        <ComponentGroupRef Id="heatComponent"/>
      </Module>
    </Wix>
    

    那么你可以像这样调用蜡烛:

    candle module1.wxs heatComponent.wxs -dbuildFolder="FOLDER-CONTAINING-FILES-HERE"
    

    像这样跟着光:

    light module.wixobj heatComponent.wixobj -o Module1.msm
    

    【讨论】:

    • 我发布的 xml 有效。我可以从中创建一个 msi 文件。要执行它,我只需使用两个 wxs 文件、生成的 heatComponent.wxs 和我在上面粘贴的文件运行蜡烛。之后,我轻装上阵并获得我的 .msi。但是,我确实想创建一个 .msm 文件,一个合并模块。
    • 抱歉,我没有完全理解问题的症结所在。希望我修改后的答案能解决问题。
    • 谢谢。诀窍是 ComponentGroupRef 元素直接位于合并模块中的 Module 元素下方,并且位于普通 msi 中的 feature 元素内,如下所述:wixtoolset.org/documentation/manual/v3/xsd/wix/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2016-08-07
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多