Some thoughts:

Those non-MSI uninstallers often have a quiet switch, so if there's no
need to show the uninstall UI append that to the uninstall string. I
know the InstallShield one does, I'd expect the Wise equivalent to have
the same. 

I don't think it's a good idea to have the uninstall custom action in
both the UI and execute sequences. There's the general point that you
shouldn't really be changing the system in the UI stage, and it will
probably bite you on Vista because you probably won't have the required
privilege in the UI sequence (with UAC you'll be a standard user; in the
execute sequence you'll be elevated). 


Phil Wilson 


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Arnette,
Bill
Sent: Wednesday, October 18, 2006 7:01 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Install with prevous versions


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



-------------------------------------------------------------------------
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

Reply via email to