msi patch: Is this too hacky?

Misha Koshelev mk144210 at bcm.tmc.edu
Mon Feb 5 23:25:36 CST 2007


That seems like a good way to do it. I sent an updated patch to
wine-patches.

Misha

On Tue, 2007-02-06 at 12:15 +0800, Dmitry Timoshkov wrote:
> "Misha Koshelev" <mk144210 at bcm.tmc.edu> wrote:
> 
> > Hi, I submitted the following patch to wine-patches but was thinking
> > about it some more. The problem is that you have the following UI levels
> > and flags:
> >    INSTALLUILEVEL_NOCHANGE = 0,
> >    INSTALLUILEVEL_DEFAULT = 1,
> >    INSTALLUILEVEL_NONE = 2,
> >    INSTALLUILEVEL_BASIC = 3,
> >    INSTALLUILEVEL_REDUCED = 4,
> >    INSTALLUILEVEL_FULL = 5,
> >    INSTALLUILEVEL_HIDECANCEL = 0x20,
> >    INSTALLUILEVEL_PROGRESSONLY = 0x40,
> >    INSTALLUILEVEL_ENDDIALOG = 0x80,
> >    INSTALLUILEVEL_SOURCERESONLY = 0x100
> > and the code to check for the level was:
> > 
> > if ( msi_get_property_int(package, szUILevel, 0) >=
> > INSTALLUILEVEL_REDUCED)
> > 
> > but the problem is that if any of the flags are set, then immediately
> > this would assume full UI install even though this is not the case for
> > some installers (see bug #6992). I proposed this change:
> > 
> > if ( (msi_get_property_int(package, szUILevel, 0) & INSTALLUILEVEL_FULL)
> >>=
> > INSTALLUILEVEL_REDUCED )
> > 
> > It will work because INSTALLUILEVEL_FULL is 4+1 and so doing an AND operation with
> > INSTALLUI_LEVEL FULL will be 4+1 and with INSTALLUILEVEL_REDUCED will be 4, both
> > of which are greater than or equal to four. However, if for some reason these UI
> > levels were to change in the future, or if someone decided to further modify
> > this code and say, try to check for INSTALLUILEVEL_BASIC (3) they would actually
> > be getting a 1 instead by doing INSTALLUILEVEL_BASIC & INSTALLUILEVEL_FULL. So
> > is this too hacky? Is there a simple, better way to do this?
> 
> Looks like that the flags are placed in the bits higher than 4, so I'd vote
> for something like the following:
> 
> if ( (msi_get_property_int(package, szUILevel, 0) & 0x0f)>= INSTALLUILEVEL_REDUCED )
>     ...
> 



More information about the wine-devel mailing list