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

Reply via email to