使用纯WIX进行修补

soo*_*yer 4 patch wix wix3.5 wix3.6

我正在努力创建一个纯粹使用WIX的补丁,我希望有人能引导我朝着正确的方向前进.

我有几百个源文件,我对它们进行加热以创建一个收获文件,然后使用蜡烛和灯光创建一个包.

我需要更改一些配置文件,然后使用更改创建第二个包.

使用Torch和pyro我创建了.wixmst文件,然后在尝试创建msp文件时,pyro抱怨以下错误.

pyro.exe:错误PYRO0252:未提供附加到修补程序的有效转换.检查以确保在命令行上传递的转换具有在修补程序中创建的匹配基线.另外,请确保目标和升级之间存在差异.

我的问题确实是:patch.wxs应该包含什么?

这是我的patch.wxs的样子:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

    <Patch 
        AllowRemoval="yes"
        Manufacturer="sample llc" 
        MoreInfoURL="sample.com"
        DisplayName="Env Patch" 
        Description="Env Specfic Patch" 
        Classification="Update"
        >

        <Media Id="5000" Cabinet="RTM.cab">
            <PatchBaseline Id="RTM" />
        </Media>

        <PatchFamilyRef Id="EnvPatchFamily" />
    </Patch>

    <Fragment>    
        <PatchFamily Id='EnvPatchFamily' Version='1.0.0.0' ProductCode="PUT-GUID-HERE" Supersede='yes' >

            ********************************************** 
                What component Ref should I put in here
                heat creates a component group and I can't
                put ComponentGroupRef in here
            **********************************************

    </PatchFamily>
    </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)

我正在使用此链接中描述的Wix修补程序:http: //wix.sourceforge.net/manual-wix3/wix_patching.htm

但是,它不考虑使用heat创建的源wix文件.谁能告诉我我在这里做错了什么?

Mar*_*sCC 5

亚太区首席技术官Matt,

对我来说,heat会像这样创建一个组件组:

<Fragment>
    <ComponentGroup Id="MyFiles">
        <ComponentRef Id="cmp2AA1A30564C621322ECB3CDD70B1C03C" />
        <ComponentRef Id="cmp788C978F16E473D4FD85720B5B75C207" />
    </ComponentGroup>
</Fragment>
Run Code Online (Sandbox Code Playgroud)

加热指令:

"%WIX%\bin\heat.exe" dir slndir\bin\Release -cg MyFiles -gg -scom -sreg -sfrag -srd -dr INSTALLDIR -out ..\Wix\MyFiles.wxs -var var.BinOutputPath -nologo -v -ke  -t wixtransform.xsl
Run Code Online (Sandbox Code Playgroud)

在patch.wxs中:

<Fragment>    
    <PatchFamily Id='ProductPatchFamily' Version='1.3.0.0' Supersede='yes'>
        <ComponentRef Id="cmp2AA1A30564C621322ECB3CDD70B1C03C" />
        <ComponentRef Id="cmp788C978F16E473D4FD85720B5B75C207" />
    </PatchFamily>
</Fragment>
Run Code Online (Sandbox Code Playgroud)

注意:PatchFamily标记中没有ProductCode属性

  • 对不起,我很匆忙,错过了patch.wxs隐藏的事实.如果您将其留空,则补丁将升级所有不同的文件.否则它只会升级您选择的内容. (2认同)