Sorry, I misunderstood your original email.  If you want to uninstall previous 
component and install new one during upgrade install you might want to use 
transitive components 
(http://msdn2.microsoft.com/en-us/library/aa372462(VS.85).aspx).  In Wix, use 
Component/@Transitive = "yes".
Conditions on transitive components are always evaluated, whereas conditions on 
regular components are evaluated during fresh install only.




-----Original Message-----
From: Chris Ridd [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 28, 2008 2:28 AM
To: Alexander Shevchuk
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Searching for multiple registry keys


On 27 Feb 2008, at 20:12, Alexander Shevchuk wrote:

> Sorry, I don't have neither enough time to come up with the sample
> nor ready sample.
> One of the possible solutions for your problem is Qualified
> components (http://msdn2.microsoft.com/en-us/library/aa370947.aspx)
> and PublishComponent table 
> (http://msdn2.microsoft.com/en-us/library/aa370921(VS.85).aspx
> ).
> In WiX, look for Category 
> (http://wix.sourceforge.net/manual-wix2/wix_xsd_category.htm
> ) and Component (http://wix.sourceforge.net/manual-wix2/wix_xsd_component.htm
> ) elements.
> With qualified components you don't have to use any custom actions.
> If I will have time this weekend, I'll try to make a sample.

This sounds like a great solution, but I couldn't get repair to work
the way I wanted. I was using the following structure:

   <Component Id="App_JRE15" Guid="...">
     <Condition>JRE15HOME and NOT JDK15HOME</Condition>
     <Category Id="guid-1" Qualifier="JRE15"/>
     <Shortcut Target="[JRE15HOME]\bin\javaw.exe" .../>
   </Component>
   <Component Id="App_JDK15" Guid="...">
     <Condition>JDK15HOME</Condition>
     <Category Id="guid-1" Qualifier="JDK15"/>
     <Shortcut Target="[JDK15HOME]\bin\javaw.exe" .../>
   </Component>
   [similar components for other combinations here]

If I have JDK 1.5 and JRE 1.5 installed, installing my package results
in Component App_JDK15 being installed as per the conditions.

If I then remove JDK 1.5 and "repair" (REINSTALL=ALL,
REINSTALLMODE=pecms) my package, I want Component App_JDK15 to be
removed (its condition will not be true any more) and App_JRE15 to be
created (its condition will now be true).

Instead, App_JDK15 just gets updated with a broken Target :-(

It isn't clear how [EMAIL PROTECTED] gets used in a reinstall, but
setting them all to the same string (eg "App") didn't change what
happened.

Cheers,

Chris


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to