As long as your shared resources are in a component with the same GUID (i.e., your instance transforms do not re-GUID your components) yes, Windows Installer (and fusion for GAC assemblies) do keep a reference count. Bear in mind, however, that if you uninstall a patch for any instance files are downgraded (shared component ref counts don't guard against that) *unless*you are installing with MSI 4.5 and specify the Component/@Shared="yes" attribute.
If you are applying your instance transforms as secure transforms (transfor...@emea_instance) you do not need to specify them again even during uninstall. When you look in a verbose installer log (msiexec.exe ... /L*vx install.log) does the log say the action was skipped because the condition evaluated to false? After a product is installed (after InstallFinalize returns) the property Installed should always be defined. On Tue, Jan 13, 2009 at 4:35 PM, <phillip_sid...@dellteam.com> wrote: > I have created a number of instance transforms in my WiX installer as > below: > > <!-- Non-Default instances --> > <InstanceTransforms Property="APPINSTANCE"> > <!-- These instances are for DIT, SIT and PROD > --> > <Instance > ProductCode="4E7CC0E0-BECC-4e79-A626-20028B93C8C9" ProductName="MSS DAO > Windows Service" Id="DAO_Instance"/> > <Instance > ProductCode="3F164DA9-8C57-49e9-9346-A06DA9B5580D" ProductName="MSS EMEA > Windows Service" Id="EMEA_Instance"/> > <Instance > ProductCode="35646A8B-F991-44b1-AAE8-57DF08B30272" ProductName="MSS APJ > Windows Service" Id="APJ_Instance"/> > > <!-- These instances are for UAT - special case > becuase they may exist on same servers as SIT instances --> > <Instance > ProductCode="14CAA264-8CF9-48d8-B174-0A5B298C561E" ProductName="MSS DAO > UAT Windows Service" Id="DAO_UAT_Instance"/> > <Instance > ProductCode="CD94A497-0091-4522-AD60-E21A7CFBDFF0" ProductName="MSS EMEA > UAT Windows Service" Id="EMEA_UAT_Instance"/> > <Instance > ProductCode="2D226523-ADF4-40fa-BA1E-624FE84EF1CF" ProductName="MSS APJ > UAT Windows Service" Id="APJ_UAT_Instance"/> > </InstanceTransforms> > > When uninstalling one of these non-default instances, I need to make > sure that my custom actions get run. Most of the time I will be leaving > other instances on the machine. > > > <Custom Action="CleanupDataFiles" > After="InstallFinalize">Installed</Custom> > > This custom action does not run when uninstalling with msiexec /u > TRANSFORMS="EMEA_Instance ... > > However, the rest of the app instance gets uninstalled fine. Does > someone know the correct condition to use? > > On a related note when GACd assemblies and shared COM objects are > removed for one instance, does the MSI and/or windows keep a usage count > so that other instances are not broken? > > Thanks. > > - Phil > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > -- Heath Stewart Deployment Technologies Team, Microsoft http://blogs.msdn.com/heaths ------------------------------------------------------------------------------ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users