I don't think there are any path manipulation capabilities in MSI, so you'll have to write a CA that sets INSTALLDIR from OLDINSTALL3 or OLDINSTALL4.
You can set a property in a CA if it is an immediate (not deferred) CA using MsiSetProperty. Set the CA's @Execute attribute to 'oncePerProcess' and schedule it in both the InstallUISequence and InstallExecuteSequence so that the CA will run even if the UI is bypassed but it will only run once if the UI is enabled. You can condition the execution of the CA on whether OLDINSTALL3 or OLDINSTALL4 are non-empty. I am not sure exactly where to schedule it though; maybe after FindRelatedProducts? I have a related question. I am working with the same issue; uninstalling previous versions that were not MSI installs. This is what I did: <CustomAction Id="UninstallOldVersion" Return="check" Execute="oncePerProcess" BinaryKey="MyCAs" DllEntry="UninstallOldProducts" /> <Binary Id="MyCAs" SourceFile="bin\MyCAs.dll" /> <Property Id="OLDPRODUCTFOUND"> <RegistrySearch Id="rs_FindOldProducts" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\MyApp" Name="DisplayName" Type="raw"/> </Property> <InstallUISequence> <Custom Action="UninstallPreviousAudioVersion" After="FindRelatedProducts">NOT Installed AND OLDPRODUCTFOUND</Custom> </InstallUISequence> <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize" /> <Custom Action="UninstallOldVersion" After="RemoveExistingProducts">NOT Installed AND OLDPRODUCTFOUND</Custom> </InstallExecuteSequence> The RegistrySearch checks that the old product exists on the target machine. The UninstallOldProducts CA runs the old version's uninstaller (a WISE uninstaller) as an immediate CA but only if the old product is found. The CA basically just executes the ARP UninstallString. The effect is, the user starts the installer, the old installer appears to guide the user through uninstalling the old product, then the MSI's UI appears. I don't know if this is good practice or not. Maybe the experts could chime in here. Should my bootstrapper handle the uninstallation of the previous non-MSI installation? Or is it OK to do this an immediate CA like above? Should the CA be scheduled somewhere else? I didn't think doing it deferred would be good because the user would go through the MSI installer UI and then be presented with the WISE uninstaller UI. Thoughts? > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > Anton Filippov > Sent: Wednesday, October 18, 2006 7:45 AM > To: wix-users@lists.sourceforge.net > Subject: [WiX-users] Install with prevous versions > > Hello > > I write installer in WiX for product. > This is new installer and this product already have old versions, > wrote in other installer (NSIS). > I search for older versions like this: > > <Property Id='OLDINSTALLV4'> > <RegistrySearch Id="RegSearchVersion4" Type='raw' Root='HKLM' > Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\Solver4' > Name='UninstallString' /> > </Property> > <Property Id='OLDINSTALLV3'> > <RegistrySearch Id="RegSearchVersion3" Type='raw' Root='HKLM' > Key='Software\Microsoft\Windows\CurrentVersion\Uninstall\Solver3' > Name='UninstallString' /> > </Property> > > UnsinstallString contains file path for uninstall.exe for older > versions, like "C:\program Files\Solver3\uninstall.exe" > > And if OLDINSTALL3 is present, I should set INSTALLDIR to OLDINSTALL3. > OLDINSTALL4 in same way. > > Question: > How to remove "...\uninstall.exe" (can I do this without CA > type 1, 2, 17, 18)? > > Or If I can't remove this substring standart method, how to set > INSTALLDIR property from CA? > As I understood, deferred CA can set only one property with > name, like CA Id. > But how to set other properties? > > Thank you > > -------------------------------------------------------------- > ----------- > Using Tomcat but need to do more? Need to support web > services, security? > Get stuff done quickly with pre-integrated technology to make > your job easier > Download IBM WebSphere Application Server v.1.0.1 based on > Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057& > dat=121642 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users