I believe REINSTALLMODE comes into play here.
     Ref:   http://msdn.microsoft.com/en-us/library/aa371182(VS.85).aspx

So, in your first post, you had a non-transitive component installing a 
registry key conditioned on NOT PATCH.  Assuming your installation wasn't 
slipstreaming (applying a patch during initial installation), this condition 
evaluated to TRUE and your component and related registry items were written.  
During subsequent maintenance operations (patching and repairing), 
non-transitive component conditions are not re-evaluated.  During your patch 
application, I suspect the REINSTALLMODE property included "u" and or "m" which 
according to the WI SDK, rewrites all required registry entries (to Current 
User / Local Machine).  Since the component is "installed" that has your 
registry keys [in question] defined, this would cause your registry keys to be 
rewritten.

As a general note, instead of doing something like this:
    <WriteRegistryValues Sequence="6000" >NOT PATCH</WriteRegistryValues>
... you'd want to favor setting the appropriate REINSTALLMODE settings.


And in general, you want to sparingly make use of the "PATCH" property for 
conditioning; as major headaches would be encountered within your install 
should one want to slipstream it, someday.






________________________________________
From: [EMAIL PROTECTED] [EMAIL PROTECTED] On Behalf Of Tony Juricic [EMAIL 
PROTECTED]
Sent: Friday, August 08, 2008 5:56 PM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] HOWTO:avoid changing the Registry when patching

I tried adding Transitive attribute to the registry component and that
deleted the component when patch was applied. Thus 'NOT PATCH' is a
correct condition since transitive components are removed when condition
changes from true to false.

However, for some reason that I would really love explained, this
condition is not evaluated to decide whether to install a component when
patching.

There is very useful ProtectFile element, child of UpgradeImage element
that does the job for the files but apparently there is nothing similar
for Registry keys and values?

Seriously?

If I can find any entertainment value in this, it is in somewhat
reminding me of the good ole' days of emailing people at Microsoft,
voicing annoyance at having to code OpenFile dialog box again and asking
for a standard implementation to be the part of the OS. :O

Anyhow, a kind of fix for the problem is to put condition on the action:

<WriteRegistryValues Sequence="6000" >NOT PATCH</WriteRegistryValues>

but this doesn't make me too happy because it affects all registry
components.

Any other ideas?


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to