This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Nested Uninstallation Error - 1605
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
‎Jan 18, 2008
01:30 PM
Nested Uninstallation Error - 1605
My install contains a nested install of a database product (the original developer didn't realize that nested installs are not recommended). During major upgrade from version X to Y, there's a condition on the uninstall of the database to avoid removing the data. So, the system is left in a state in which Y is installed, but the nested install is from X. When I try to uninstall Y, it gets to the point where it tries to uninstall the database and I get a 1605 error.
So, it seems like the registry is corrupted in some way. The question is:
1. How do I figure out what is corrupted?
2. How do I fix it?
3. Is there a way to not uninstall the nested install during upgrade and not corrupt the registry?
Thanks.
Scott
So, it seems like the registry is corrupted in some way. The question is:
1. How do I figure out what is corrupted?
2. How do I fix it?
3. Is there a way to not uninstall the nested install during upgrade and not corrupt the registry?
Thanks.
Scott
(6) Replies
‎Dec 10, 2008
07:40 PM
I'm still having this problem. Any help?
‎Dec 11, 2008
09:53 AM
Honestly Its been sometime i worked with nested install.
Can you see if there is a way to uninstall your nested install of X.
like taking the uninstall key from the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.
You have to drill down all these keys to find the product code of your nested install. take the uninstall string.
Add that into your Y installation to uninstall the X Nested Install.
I am not sure but just an idea this may work. good luck.
Can you see if there is a way to uninstall your nested install of X.
like taking the uninstall key from the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.
You have to drill down all these keys to find the product code of your nested install. take the uninstall string.
Add that into your Y installation to uninstall the X Nested Install.
I am not sure but just an idea this may work. good luck.
‎Dec 12, 2008
06:17 PM
Unfortunately, this does not work - even when the exact string is run, it pops up a dialog saying 'This action is only valid for products that are currently installed'.
It seems that some part of the registry related to this got corrupted.
Shantanu
It seems that some part of the registry related to this got corrupted.
Shantanu
‎Dec 15, 2008
11:04 AM
I beliver a nested install product , the child product can be uninstalled only by its parent product.
It cannot be uninstalled directly and only the parent can do it.
Check the KB Article
http://support.microsoft.com/kb/306439
The last point below clearly tells the reason for uninstall fail in this case.
Although you can create a nested MSI installation, there are drawbacks to doing this. These drawbacks include the following:
Nested Installations cannot share components.
An administrative installation cannot contain a nested installation.
Patching and upgrading will not work with nested installations.
The installer will not correctly cost a nested installation.
Integrated ProgressBars cannot be used with nested installations.
Resources that are to be advertised cannot be installed by the nested installation.
A package that performs a nested installation of an application should also uninstall the nested application when the parent product is uninstalled.
It cannot be uninstalled directly and only the parent can do it.
Check the KB Article
http://support.microsoft.com/kb/306439
The last point below clearly tells the reason for uninstall fail in this case.
Although you can create a nested MSI installation, there are drawbacks to doing this. These drawbacks include the following:
Nested Installations cannot share components.
An administrative installation cannot contain a nested installation.
Patching and upgrading will not work with nested installations.
The installer will not correctly cost a nested installation.
Integrated ProgressBars cannot be used with nested installations.
Resources that are to be advertised cannot be installed by the nested installation.
A package that performs a nested installation of an application should also uninstall the nested application when the parent product is uninstalled.
‎Dec 15, 2008
11:08 AM
check the below KB Article
http://support.microsoft.com/kb/306439
A package that performs a nested installation of an application should also uninstall the nested application when the parent product is uninstalled.
So this ability to uninstall the child package should be part of the parent package. In your case add the uninstall action through transform in the parent package. that should probably work
http://support.microsoft.com/kb/306439
A package that performs a nested installation of an application should also uninstall the nested application when the parent product is uninstalled.
So this ability to uninstall the child package should be part of the parent package. In your case add the uninstall action through transform in the parent package. that should probably work
‎Dec 15, 2008
03:08 PM
Thanks for the info. We know that it is not a good design to have nested installs, but unfortunately we are dealing with legacy code that is very hard to change at this point.
I actually found the issue why the un-installation is not working. The nested installer creates an entry in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products for the internal DB that we are installing as a nested install.
An entry in that key is Clients - and this contains the product code of the parent which is the product that we are installing.
During the major upgrade we are not running the nested installer - the custom action has Not IS_MAJOR_UPGRADE in the condition.
But we are changing the product code in the major upgrade - and since we are not using the nested installerduring this process, the registry entry of the installed DB still contains the old product code.
At the time of uninstalling the upgraded product, the nested uninstaller runs but fails with 1605 error.
If we manually change the product code of the registry entry to the new product code that we generated during the upgrade then we can successfully uninstall the product.
The question is - under the circumstances (we still have to unfornutately use the nested installer) what is the best way of touching the registry entry of the installed DB during an upgrade?
My goal is to just modify the relevant registry entry of the DB (installed using the nested installer) during an upgrade - we do not want to completely uninstall and reinstall the DB since we do not want to remove user data during the upgrade.
I can add another custom action that alters this registry entry, but that seems like a hack to me.
I tried adding REINSTALL="All" REINSTALLMODE="ous" and removed Not IS_MAJOR_UPGRADE from the condition of the custom action that triggers this nested install. But this somehow stops the DB being installed on a clean install (not an upgrade). I also read the REINSTALL cannot be used for major upgrades?
Is there a better way to do this?
Thanks for any help.
Shantanu
I actually found the issue why the un-installation is not working. The nested installer creates an entry in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products for the internal DB that we are installing as a nested install.
An entry in that key is Clients - and this contains the product code of the parent which is the product that we are installing.
During the major upgrade we are not running the nested installer - the custom action has Not IS_MAJOR_UPGRADE in the condition.
But we are changing the product code in the major upgrade - and since we are not using the nested installerduring this process, the registry entry of the installed DB still contains the old product code.
At the time of uninstalling the upgraded product, the nested uninstaller runs but fails with 1605 error.
If we manually change the product code of the registry entry to the new product code that we generated during the upgrade then we can successfully uninstall the product.
The question is - under the circumstances (we still have to unfornutately use the nested installer) what is the best way of touching the registry entry of the installed DB during an upgrade?
My goal is to just modify the relevant registry entry of the DB (installed using the nested installer) during an upgrade - we do not want to completely uninstall and reinstall the DB since we do not want to remove user data during the upgrade.
I can add another custom action that alters this registry entry, but that seems like a hack to me.
I tried adding REINSTALL="All" REINSTALLMODE="ous" and removed Not IS_MAJOR_UPGRADE from the condition of the custom action that triggers this nested install. But this somehow stops the DB being installed on a clean install (not an upgrade). I also read the REINSTALL cannot be used for major upgrades?
Is there a better way to do this?
Thanks for any help.
Shantanu