I believe I have answered my own question.
By adding a binary element (child of Product element) -
<Binary Id="CabInstaller"
SourceFile="C:\Intava\Source\tools\CabInstaller\Debug\CabInstaller.exe"
/>
I was able to execute the CabInstaller with it's uninstall option
when (and only when) doing an uninstall. It required me to change
my custom action to use a binary key rather than a file key.
<CustomAction Id="RemoveIntavaDLCab"
BinaryKey="CabInstaller"
Execute="immediate"
ExeCommand="-u [TempFolder]IntavaDL.cab"
Return="check" />
Many thanks for your help.
> -----Original Message-----
> From: Dane Anderson
> Sent: Monday, October 16, 2006 12:09 PM
> To: '[email protected]'
> Subject: RE: [WiX-users] Uninstall Custom action
>
> Sorry to be bending your 'ears' with this.
>
> OK. I think I know what is happening now. It *IS* executing my custom
> action. The problem is, the binary executable that is supposed to get
run
> (cabinstaller.exe) doesn't exist on the machine in the %temp%
location,
> when the custom action is run.
>
> Cabinstaller is added to the msi file with
>
> <Directory Id="TARGETDIR" Name="SourceDir">
> <Directory Id="TempFolder" Name="TempDir">
> <Component Id="INTAVADLLS" DiskId="1" Guid="$(env.INTAVADLSGUID)">
> <File Id="CabInstaller.exe" Name="INSTALLR.EXE"
> LongName="CabInstaller.exe" src="<bld loc>\CabInstaller.exe"
> Vital="yes" />
>
> During an install, it gets placed, by the installer, in the %temp%
> directory, where the install custom actions can execute it. After
> it gets executed for the install, it gets deleted by another custom
> action (not allowed to leave the executable or the cabs behind),
> after it has been used.
>
> I am guessing that the installer doesn't bother copying the files
> to the %temp% directory during an uninstall (I suspect it just
> doesn't complain about them not being there when it goes to delete
> them). Thus the executable is NOT on the machine where my custom
> action bat file is expecting it to be. This would also explain WHY
> I was getting an unexpected return value error when I tried to run
> it directly from the installer. I thought it was throwing an exception
> which the installer was catching and which (for some reason I
couldn't).
> What I now suspect was happening is, since the file did NOT exist on
the
> machine, the custom action simply could not execute it couldn't be
found
> to execute). It wasn't throwing an exception at all (the reason for
the
> bat file in the first place).
>
> So, now the question becomes: HOW do I execute it, when it has NOT
been
> copied onto the target machine. It is (it must be, as it is available
> during install) in the msi file. Is there a way to execute it from
> inside the msi file (and HOW)? Or is there a way to get it to be
copied
> to the %temp% directory so it can run it?
>
> By the way, MANY thanks for the helpful suggestions.
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:wix-users-
> > [EMAIL PROTECTED] On Behalf Of Wilson, Phil
> > Sent: Monday, October 16, 2006 11:05 AM
> > To: [email protected]
> > Subject: Re: [WiX-users] Uninstall Custom action
> >
> > REMOVE="ALL" is the right syntax. Must be time for a log:
> >
> > Msiexec /x {your productcode guid} /l*v somepathtoalog.log
> >
> >
> > Phil Wilson
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Dane
> > Anderson
> > Sent: Monday, October 16, 2006 10:53 AM
> > To: [email protected]
> > Subject: Re: [WiX-users] Uninstall Custom action
> >
> > No soap. I tried:
> > <Custom Action="DeleteCabs" Sequence="3490">Remove="ALL"</Custom>
> > and
> > <Custom Action="DeleteCabs" Sequence="3490">REMOVE="ALL"</Custom>
> > and
> > <Custom Action="DeleteCabs" Sequence="3490">REMOVE="all"</Custom>
> > and
> > <Custom Action="DeleteCabs" Sequence="3490">Remove="all"</Custom>
> > and
> > <Custom Action="DeleteCabs" Sequence="3490">REMOVE="All"</Custom>
> > and
> > <Custom Action="DeleteCabs" Sequence="3490">Remove="All"</Custom>
> >
> > With all I got the same results. It doesn't execute the DeleteCabs
> > CustomAction.
> >
> > > -----Original Message-----
> > > From: Wilson, Phil [mailto:[EMAIL PROTECTED]
> > > Sent: Monday, October 16, 2006 10:18 AM
> > > To: Dane Anderson; [email protected]
> > > Subject: RE: [WiX-users] Uninstall Custom action
> > >
> > > Properties are case-sensitive in that syntax you're using. Try
"ALL".
> > >
> > > Phil Wilson
> > >
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On Behalf Of Dane
> > > Anderson
> > > Sent: Monday, October 16, 2006 9:28 AM
> > > To: [email protected]
> > > Subject: Re: [WiX-users] Uninstall Custom action
> > >
> > > I'm sorry to be a pest, but could you elaborate. I've tried adding
-
> > > REMOVE="All"
> > > Everywhere I thought it MIGHT belong. In most places it won't even
> > > compile. In the ONE place it does compile - <Custom
> > Action="DeleteCabs"
> > > Sequence="3490">REMOVE="All"</Custom>
> > > (note: replaced the 'Installed' with 'REMOVE="All"') it does
nothing.
> > In
> > > other words the custom action doesn't get executed.
> > >
> > > > -----Original Message-----
> > > > From: [EMAIL PROTECTED] [mailto:wix-users-
> > > > [EMAIL PROTECTED] On Behalf Of Rob Hamflett
> > > > Sent: Monday, October 16, 2006 1:12 AM
> > > > To: [email protected]
> > > > Subject: Re: [WiX-users] Uninstall Custom action
> > > >
> > > > A condition of REMOVE="ALL" should be fine for uninstall CAs.
> > > >
> > > > Rob
> > > >
> > > > Dane Anderson wrote:
> > > > > I have an install package that I am attempting to put
together. In
> > > the
> > > > > process of installing
> > > > >
> > > > > I have it run an executable, CabInstaller.exe, that installs
the
> > dll
> > >
> > > > > contained in the .cab
> > > > >
> > > > > and sets some registry entries (explicitly). Some OTHER
registry
> > > entries
> > > > > are set
> > > > >
> > > > > automagically (and in a completely blackbox way) by some 3^rd
> > party
> > > > > executables
> > > > >
> > > > > that CabInstaller calls during it's execution. . After being
> > > executed
> > > > > CabInstaller.exe is
> > > > >
> > > > > deleted from the target machine. I have this much working
> > perfectly
> > > > >
> > > > > The problem I am encountering is, during an uninstall (msiexec
/x
> > > ...) I
> > > > > need the installer
> > > > >
> > > > > to execute CabInstaller with an UNinstall option (CabInstaller
> > > > > <cabfilename> to install
> > > > >
> > > > > and CabInstaller -u <cabfilename> to uninstall). So that it
can
> > call
> > >
> > > > > those 3^rd party
> > > > >
> > > > > executables with THEIR uninstall options. The target is to
produce
> > > ONE
> > > > > install
> > > > >
> > > > > package that can be used to install or uninstall. HOW do I get
the
> > > FOOL
> > > > > installer
> > > > >
> > > > > to execute a custom action ONLY when uninstalling. My wxs file
> > has:
> > > > >
> > > > > <Directory Id="TARGETDIR" Name="SourceDir">
> > > > >
> > > > > <Directory Id="TempFolder" Name="TempDir">
> > > > >
> > > > > <Component Id="INTAVADLLS" DiskId="1"
> > > Guid="$(env.INTAVADLSGUID)">
> > > > >
> > > > > <File Id="IntavaDL.cab" Name="IntavaDL.cab"
> > > > > src="C:\intava\source\Intavadl\IntavaDL.cab" Vital="yes" />
> > > > >
> > > > > <File Id="CabInstaller.exe" Name="INSTALLR.EXE"
> > > > > LongName="CabInstaller.exe"
> > > > >
> > > > >
> > > > >
src="C:\Intava\Source\tools\CabInstaller\Debug\CabInstaller.exe"
> > > > > Vital="yes" />
> > > > >
> > > > > <File Id="CabUninstallerInstall.bat" Name="CabIns.bat"
> > > > > LongName="CabUninstallerInstall.bat"
> > > > >
> > > > >
> > > src="C:\trials\SprintKioskSetup\CabUninstallerUninstall.bat"
> > > > > Vital="yes" />
> > > > >
> > > > > <File Id="CabUninstallerUninstall.bat"
Name="CabUnins.bat"
> > > > > LongName="CabUninstallerUninstall.bat"
> > > > >
> > > > >
> > > src="C:\trials\SprintKioskSetup\CabUninstallerUninstall.bat"
> > > > > Vital="yes" />
> > > > >
> > > > >
> > > > > <!-- For the install action -->
> > > > >
> > > > > <CustomAction Id="InstallIntavaDl.Dll"
> > > FileKey="CabInstaller.exe"
> > > > > ExeCommand="[TempFolder]IntavaDL.cab"
> > > > >
> > > > > Return="check" />
> > > > >
> > > > > <!-- For the uninstall action -->
> > > > >
> > > > > <CustomAction Id="DeleteCabs"
> > > FileKey="CabUninstallerUninstall.bat"
> > > > > ExeCommand="" Return="check" />
> > > > >
> > > > > <!-- CabUninstallerUninstall.bat wraps "%temp%\CabInstaller -u
> > > > > %temp%\IntavaDL.cab" because for
> > > > >
> > > > > some unknown reason CabInstaller throws an exception when
doing an
> >
> > > > > uninstall if it is being run
> > > > >
> > > > > directly by msiexec. It does NOT throw when run from the
command
> > > line. -
> > > > ->
> > > > >
> > > > > <InstallExecuteSequence> <!-- I haven't found any
> > > > > "UninstallExecuteSequence" documented so I presume this
> > > > >
> > > > > is the right place to put both -->
> > > > >
> > > > > <Custom Action="InstallIntavaDl.Dll"
> > After="InstallFinalize">NOT
> > >
> > > > > Installed</Custom>
> > > > >
> > > > > <Custom Action="DeleteCabs"
Sequence="3490">Installed</Custom>
> > > > >
> > > > > <!-- I've found the hard way, that the CabInstaller must
be
> > run
> > > > > BEFORE InstallFinalize on an
> > > > >
> > > > > uninstall. AFTER InstallFinalize the CabInstaller no
> > longer
> > >
> > > > > exists on the target machine -->
> > > > >
> > > > > The problem is, my DeleteCabs CustomAction NEVER gets
executed,
> > > EVER. I
> > > > > have verified that the bat file
> > > > >
> > > > > executes correctly when run manually. Now I need it to be run
by
> > > > > msiexec. I know for a fact that msiexec
> > > > >
> > > > > CAN run bat files, because I have another one that deletes the
> > .cab
> > > and
> > > > > .exe files after they've been
> > > > >
> > > > > used in the install. That has been verified to work, so I know
it
> > > can be
> > > > > done. Just HOW to get it to
> > > > >
> > > > > run during an uninstall is what I'm beating my head against.
> > > > >
> > > > >
> > > > > If you have any suggestions: Please send me an E-Mail
> > > > > ([EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>), as I haven't
> > > noticed
> > > > > any links to
> > > > >
> > > > > join your mail list.
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> >
------------------------------------------------------------------------
> > > > >
> > > > >
> > >
> >
------------------------------------------------------------------------
> > > > -
> > > > > 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
> > > > > [email protected]
> > > > > 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
> > > > [email protected]
> > > > 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
> > > [email protected]
> > > 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
> > [email protected]
> > 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
> > [email protected]
> > 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users