Chris,

This looks like a bad design choice in the previous version.  Most of the
time, you're going to want to embed your custom action DLL as a Binary in
the MSI package rather than installing it on the target machine as a File in
a Component.  I.e., put the custom action DLL on a Binary rather than File
element, and use the BinaryKey rather than the FileKey attribute on the
CustomAction element.  If you are able, you should definitely change this in
subsequent versions, although it's too late to change this for previous
versions that you've already delivered or installed somewhere.

The most likely problem is that the uninstall custom action is scheduled to
run after the RemoveFiles standard action, so it is failing because by the
time it tries to use the custom action DLL during uninstallation, the DLL
has already been removed.  Unfortunately, you can't change the
uninstallation behavior (or anything in the MSI database or embedded CAB) of
an MSI package that is already installed, so it's always a good idea to test
uninstall and upgrade behavior BEFORE you ship.  Since you can't change the
old installation now, you'll have to outsmart it instead.

If you are in this situation, here's a workaround you can try.  What we are
going to do is create a dummy installer whose sole purpose is to increment
the reference count of the MSI Component that contains the custom action
DLL, to prevent it from being removed when you install the first product.

1. Start with the source code of the original product installer, and make a
duplicate copy.
2. In the duplicate copy, generate a new Product ID (GUID) and a new
UpgradeCode (GUID).  The Package ID (GUID) should be omitted or set to "*"
if it isn't already (i.e., anything but hard-coded).  Also give it a new
Product Name and Output File Name, at your discretion.  (And if you really
want to be thorough, you should edit the .wixproj file as XML and give it a
new ProjectGuid as well.)
3. Strip away everything except the Component that contains the custom
action DLL, the Directory structure that contains it, and a single Feature
to reference it.  When you're done, these should be all you have left (plus
enough bare-bones UI for it to run).  I.e., no launch conditions, no custom
actions, no merges, no other components.
4. Make sure that you have the exact same target path (key path) and the
exact same Component GUID as the original -- this is vital, because the
Component GUID needs to match in order for the reference count to be
incremented properly.  If you are using auto-generated Component GUIDs per
the recommended practice, then it should be enough to ensure that the target
path (key path) stays the same.  (If the Component contains something more
than just the custom action DLL's File, you'll need to duplicate that as
well, since you want it to be the exact same Component in every way.)
5. Build and install the new "dummy installer".
6. Try uninstalling the original product.
7. If that worked, then uninstall the "dummy installer".

If this works out, then you should distribute this dummy installer to anyone
who has the previous version installed, and instruct them to (1) install
dummy, (2) uninstall old main product, (3) uninstall dummy, and (4) install
new version of main product, in that order.

Hope this helps,
Mike



Arthur, Christopher wrote
> One of our custom Installer has got an CustomAction during Uninstall.
> When I try to Update this installer the Custom Action is called, but it
> fails. The CustomAction.dll could not be found.
> 
> While searching within the Installation.log I've found an entry which trys
> to find the CustimAction.dll of the previous Installer at the default
> TragetDir of new one.
> How can I fix this ?





--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Strange-Beahaviour-while-installing-previous-Version-tp7594117p7594129.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to