Wanted to pop this up on the stack since I know you were away. I will say we've
been using this successfully internally. It does produce a proper MSI3-style
patch that exhibits the proper sequencing. I did add text to the XSD that this
is typically meant for test only (recommended by Bob).
Heath Stewart
Software Design Engineer
Visual Studio, Microsoft
http://blogs.msdn.com/heaths
From: [email protected]
To: [email protected]
Date: Fri, 25 Jan 2013 15:16:22 -0800
Subject: [WiX-devs] The One Patch
Back when we were designing the <Patch> feature, we had a discussion about
supporting taking all changes (like patchwiz.dll does). It was decided that a
patch with no patch families would do that. Turns out, though, when your patch
has *added* files this fails because we don’t make sure the file sequences in
the primary authoring transform are sequenced after the last File.Sequence in
the baseline MSI. This works fine when you have at least one patch family
because that triggers the MSI 3.0 feature that automatically sequences patched
files (the Media.Id still needs to be higher, though, like with <= MSI v2.0).
If you have no patch families authored, we don’t add the MsiPatchSequence table
and so the MSI v2 code path is followed which causes this scenario to fail
because files are not properly sequenced. While the patch (#) transform is
correct for all files, the authored transform has sequence 1 for all those
added files. Modified files don’t track a change in that field which is why
those work correctly. So I propose one of the ideas we had back in that
original discussion. You can author a patch family and use the <All/> element
as the child to pick up all changes (handy if you still build your upgrade MSIs
like you / your system might for patchwiz.dll-style patching but with the
<Patch> element / pyro). Unfortunately, it’s not enough to just EnsureTable for
the MsiPatchSequence table because it requires an entry and, since an entry is
required, it makes sense that we allow people to author it. So authoring would
look something like this: <PatchFamily Id=”ALL” Sequence=”1.2.3.4”
Supersede=”no”> <All/></PatchFamily> I’d allow <All/> in
multiple because it really won’t matter (and you can have the same *Ref in
multiple patch families today, though conceptually it should be avoided because
of its downstream impact to future non-cumulative changes). The other
almost-option is to fix the file sequencing (doesn’t appear to be that hard),
but without an MsiPatchSequence table other MSI 3.0-based features may not
trigger correctly and we may just not have seen it. What do others think about
how this should be authored? Heath StewartVS Pro Deployment Experience,
Microsoft
http://blogs.msdn.com/heaths
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs