[wix-devs] 6210 - Burn engine should handle non-QWORD versions

Bob Arnson bob at firegiant.com
Tue Jul 14 18:25:40 PDT 2020


Hmmm...OK, that's making me lean back toward strings, tbh...

-----Original Message-----
From: wix-devs <wix-devs-bounces at lists.wixtoolset.org> On Behalf Of Sean Hall via wix-devs
Sent: Tuesday, 14 July, 2020 20:58
To: WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
Cc: Sean Hall <r.sean.hall at gmail.com>
Subject: Re: [wix-devs] 6210 - Burn engine should handle non-QWORD versions

Yes, the implementation needs to stay somewhere in dutil. But a BA has never been required to use dutil headers so I'm wondering where to define the BUNDLE_VERSION struct.

On Wed, Jul 15, 2020 at 10:52 AM Bob Arnson <bob at firegiant.com> wrote:

> I'd say there's value in being able to parse versions exactly like 
> Burn without being a BA. Maybe butil instead?
>
> -----Original Message-----
> From: wix-devs <wix-devs-bounces at lists.wixtoolset.org> On Behalf Of 
> Sean Hall via wix-devs
> Sent: Tuesday, 14 July, 2020 20:24
> To: WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
> Cc: Sean Hall <r.sean.hall at gmail.com>
> Subject: Re: [wix-devs] 6210 - Burn engine should handle non-QWORD 
> versions
>
> Your comment about any change to the actual version comparisons being 
> a breaking change is making me wonder why we would ever make a 
> breaking change to the underlying BUNDLE_VERSION struct. I can't think 
> of any such changes, so maybe we should just pass around pointers to 
> the struct instead of a string.
>
> In order to do that, we'll need to reference the BUNDLE_VERSION struct 
> in the Burn headers (e.g. BootstrapperApplication.h) which live in the 
> BootstrapperCore repo today. Those Burn headers are separate from the 
> balutil headers (e.g. IBootstrapperApplication.h) in the balutil repo. 
> How do we want to do this? Define them in both dutil and Burn (but 
> conditionally so they don't conflict)? Define them in one and create a 
> dependency to it in the other?
>
> Originally BootstrapperCore had the Burn headers and what was 
> BootstrapperCore.dll in v3. I eventually split up 
> BootstrapperCore.dll, putting most of it in the balutil repo and the 
> host part of it into Bal.wixext. At this point, I'd like to archive 
> the BootstrapperCore repo and move the Burn headers into the Burn 
> repo. This would mean we couldn't define BUNDLE_VERSION solely in the 
> Burn headers without creating a cyclic dependency between Burn and dutil.
>
> If we're going to be exposing the struct from Burn, then we might as 
> well add a ParseBundleVersion method/message and CompareBundleVersions method.
> Would we add a CompareBundleVersionStrings method?
>
> With regards to putting this in "verutil.h", I've been treating this 
> proposal as teaching the Burn engine how to handle the crazy strings 
> that can be thrown at it. I would think a more general purpose library 
> would have its own spec on what a valid version is and reject strings 
> that aren't valid. So I think the data structure and comparison logic 
> make sense outside of Burn, but not the parser.
>
> On Wed, Jul 15, 2020 at 5:41 AM Rob Mensching via wix-devs < 
> wix-devs at lists.wixtoolset.org> wrote:
>
> > Looking closer at the PR, the more it seems that what we have 
> > discussed and Sean has coded, is a very good marriage of "4-part 
> > versions" with "SemVer".
> >
> > Is there any reason we shouldn't promote this versioning to 
> > "verutil.h" in dutil and make it the standard handling of versions 
> > going
> forward?
> >
> > -----Original Message-----
> > From: wix-devs <wix-devs-bounces at lists.wixtoolset.org> On Behalf Of 
> > Rob Mensching via wix-devs
> > Sent: Tuesday, July 14, 2020 12:36 PM
> > To: WiX Toolset Developer Mailing List 
> > <wix-devs at lists.wixtoolset.org>
> > Cc: Rob Mensching <rob at firegiant.com>
> > Subject: Re: [wix-devs] 6210 - Burn engine should handle non-QWORD 
> > versions
> >
> > Correct me if I'm wrong but using EvaluateCondition() would require 
> > all version comparisons to be created using string concatenation in 
> > the BA then call to evaluate condition? That's pretty ugly.
> >
> > Dutil isn't easily discoverable but there is precedent as wcautil 
> > depends on it. Balutil could do similarly.
> >
> > I guess I'm not against sending versions around as strings but I 
> > think we do need to make some methods available for doing standard 
> > version comparisons (anything else) on those strings.
> >
> > Is the breaking changes concern related to shipping around a struct?
> > If so, I get that (thus string fallback is better than an opaque 
> > handle because at least someone can display a string). But the 
> > actual version comparisons, we'll have to get right because changing 
> > those will be breaking change whether a string or struct or whatever.
> >
> >
> > -----Original Message-----
> > From: wix-devs <wix-devs-bounces at lists.wixtoolset.org> On Behalf Of 
> > Sean Hall via wix-devs
> > Sent: Monday, July 13, 2020 3:08 AM
> > To: WiX Toolset Developer Mailing List 
> > <wix-devs at lists.wixtoolset.org>
> > Cc: Sean Hall <r.sean.hall at gmail.com>
> > Subject: Re: [wix-devs] 6210 - Burn engine should handle non-QWORD 
> > versions
> >
> > I updated the WIP based on what we discussed in last week's meeting.
> > I've got the implementation of parsing and comparing the versions in 
> > butil in https://github.com/wixtoolset/dutil/pull/16.
> >
> > I don't really want to expose an API from Burn to parse a version.
> > Hiding the implementation details allows us to make breaking changes.
> > Also, there's no relationship between Burn's headers and dutil's 
> > headers so it would be tricky to do.
> >
> > Burn already exposes an API to compare versions - EvaluateCondition.
> > So I think the only Burn API changes will be changing QWORD to LPWSTR.
> >
> > On Wed, Jul 8, 2020 at 10:59 PM Sean Hall <r.sean.hall at gmail.com> wrote:
> >
> > > I went ahead and created a separate issue for Burn supporting 
> > > non-QWORD versions, and 4666 can be about authoring them. I 
> > > created a WIP for this at
> > https://wixtoolset.org/development/wips/6210-burn-engine-semantic-ve
> > rs
> > ioning/
> > .
> > > I would like feedback on this.
> > >
> > ____________________________________________________________________
> > WiX Toolset Developer Mailing List provided by FireGiant 
> > http://www.firegiant.com/ 
> > ____________________________________________________________________
> > WiX Toolset Developer Mailing List provided by FireGiant 
> > http://www.firegiant.com/ 
> > ____________________________________________________________________
> > WiX Toolset Developer Mailing List provided by FireGiant 
> > http://www.firegiant.com/
> >
> ____________________________________________________________________
> WiX Toolset Developer Mailing List provided by FireGiant 
> http://www.firegiant.com/
>
____________________________________________________________________
WiX Toolset Developer Mailing List provided by FireGiant http://www.firegiant.com/



More information about the wix-devs mailing list