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