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: Remove/Modify missing from Add/Remove control panel entry
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
‎Dec 17, 2007
06:31 PM
Remove/Modify missing from Add/Remove control panel entry
I have an InstallScript MSI project that was upgraded from IS11 to IS2008.
Using the newly created installer (built with IS2008):
If I do a fresh install of my product, the Add/Remove control panel looks OK.
However, if I update over a previous version - i.e. same product, older version, but created with IS11) the Remove/Modify button is missing from Add/Remove control panel entry.
I was able to reproduce it with a simple test project that I just created in IS11 (calling that v1.0 of my product). I then update the project to IS2008, change the version # to 1.0001.
I installed the 1.0 version - all looks well. I then install the 1.0001 version (the one built with IS2008) (it does an update). After that the ARP entry no longer has a Change/Remove button.
Some things I notice about the registry:
in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{(Product_GUID)} (which is not used by ARP), the following entries are added to the Uninstall registry key (these don't exist in IS11-created installers), but I think this is harmless, because NoModify, NoRemove, & NoRepair in this key are all set to 1:
ModifyPath - MsiExec.exe /I{EA4F3BBA-2344-4F55-BB4A-C5FDBABC5F3D}
UninstallString - MsiExec.exe /I{EA4F3BBA-2344-4F55-BB4A-C5FDBABC5F3D}
The problem appears to be in:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{(Product_GUID)}
i.e. the key that is actually used by ARP.
NoModify, NoRemove, & NoRepair in this key are all set to 1 (and I believe they shouldn't be) - looking at IS11-based projects, seems that they should be 0. If I change them to 0, then the ARP entry looks good again and I can remove the app.
I suppose I could write a custom action to fix these entries after installation, but that seems like a big kludge.
I opened a ticket with IS Support a week ago, and sent them the above info and the sample test app - still waiting to hear a response.
I'm surprised that no one else is encountering this.
Using the newly created installer (built with IS2008):
If I do a fresh install of my product, the Add/Remove control panel looks OK.
However, if I update over a previous version - i.e. same product, older version, but created with IS11) the Remove/Modify button is missing from Add/Remove control panel entry.
I was able to reproduce it with a simple test project that I just created in IS11 (calling that v1.0 of my product). I then update the project to IS2008, change the version # to 1.0001.
I installed the 1.0 version - all looks well. I then install the 1.0001 version (the one built with IS2008) (it does an update). After that the ARP entry no longer has a Change/Remove button.
Some things I notice about the registry:
in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{(Product_GUID)} (which is not used by ARP), the following entries are added to the Uninstall registry key (these don't exist in IS11-created installers), but I think this is harmless, because NoModify, NoRemove, & NoRepair in this key are all set to 1:
ModifyPath - MsiExec.exe /I{EA4F3BBA-2344-4F55-BB4A-C5FDBABC5F3D}
UninstallString - MsiExec.exe /I{EA4F3BBA-2344-4F55-BB4A-C5FDBABC5F3D}
The problem appears to be in:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{(Product_GUID)}
i.e. the key that is actually used by ARP.
NoModify, NoRemove, & NoRepair in this key are all set to 1 (and I believe they shouldn't be) - looking at IS11-based projects, seems that they should be 0. If I change them to 0, then the ARP entry looks good again and I can remove the app.
I suppose I could write a custom action to fix these entries after installation, but that seems like a big kludge.
I opened a ticket with IS Support a week ago, and sent them the above info and the sample test app - still waiting to hear a response.
I'm surprised that no one else is encountering this.
(7) Replies
‎Dec 18, 2007
03:33 PM
I have seen something similar too.
When I attempt an uninstall, I get prompted with a message, "do I want to completely remove all the features... etc... "
If I answer that message with No, my registry entry for the ARP window is removed and the product remains installed.
The entry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{(Product_GUID)} is no longer present in the registry.
But of course I cannot uninstall it from ARP anymore.
This was a project upgraded from IS11 to IS2008 as well.
I have more than 1 project acting this way.
I also have a ticket open with Macrovision.
When I attempt an uninstall, I get prompted with a message, "do I want to completely remove all the features... etc... "
If I answer that message with No, my registry entry for the ARP window is removed and the product remains installed.
The entry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{(Product_GUID)} is no longer present in the registry.
But of course I cannot uninstall it from ARP anymore.
This was a project upgraded from IS11 to IS2008 as well.
I have more than 1 project acting this way.
I also have a ticket open with Macrovision.
‎Dec 18, 2007
04:20 PM
Thanks, Peter - sounds like your issue is different, but probably related...
some more info for my issue - I tried designating the "v1.01" version (i.e. the one built with IS2008) as a major upgrade - didn't help.
some more info for my issue - I tried designating the "v1.01" version (i.e. the one built with IS2008) as a major upgrade - didn't help.
‎Dec 18, 2007
06:37 PM
Finally got an answer from support - it's a known issue (work order #IOC-000065223) and the workaround is to add something like this to the OnEnd function:
function OnEnd()
STRING svUninstKey;
begin
svUninstKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" ^ PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteValue(svUninstKey,"NoModify");
RegDBDeleteValue(svUninstKey,"NoChange");
end;
This will reset the registry entries after the install completes, and fix the ARP entry.
However, I was unable to replicate Peter's problem myself - I did an install of of the IS2008-built product, and when I cancel the Remove, the uninstall registry remains and I can still see the entry in the ARP.
function OnEnd()
STRING svUninstKey;
begin
svUninstKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" ^ PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteValue(svUninstKey,"NoModify");
RegDBDeleteValue(svUninstKey,"NoChange");
end;
This will reset the registry entries after the install completes, and fix the ARP entry.
However, I was unable to replicate Peter's problem myself - I did an install of of the IS2008-built product, and when I cancel the Remove, the uninstall registry remains and I can still see the entry in the ARP.
‎Dec 20, 2007
02:51 PM
ah - what Support sent me was close, but not quite right (perhaps it's correct for InstallScript projects but not MSI InstallScript projects?)
There should be a + rather than a ^ before PRODUCT_GUID.
Otherwise an extra backslash gets introduced (UninstallShield_\{..guid..} and it doesn't work.
Also, should remove the NoRemove and NoRepair key as well...
function OnEnd()
STRING svUninstKey;
begin
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteValue(svUninstKey,"NoModify");
RegDBDeleteValue(svUninstKey,"NoChange");
RegDBDeleteValue(svUninstKey,"NoRemove");
RegDBDeleteValue(svUninstKey,"NoRepair");
end;
There should be a + rather than a ^ before PRODUCT_GUID.
Otherwise an extra backslash gets introduced (UninstallShield_\{..guid..} and it doesn't work.
Also, should remove the NoRemove and NoRepair key as well...
function OnEnd()
STRING svUninstKey;
begin
svUninstKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_" + PRODUCT_GUID;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBDeleteValue(svUninstKey,"NoModify");
RegDBDeleteValue(svUninstKey,"NoChange");
RegDBDeleteValue(svUninstKey,"NoRemove");
RegDBDeleteValue(svUninstKey,"NoRepair");
end;
‎May 08, 2009
12:25 PM
Thanks for the info about IS2009 - I was wondering about that myself. I just left the workaround in place when I updated to IS2009 - I didn't want to take the time to figure out whether it was still needed or not..
‎Oct 27, 2011
01:32 PM
As a point of information. This issue still exists with IS2011.
I recently updated IS 10.5 projects and encountered the problem.
Richard
I recently updated IS 10.5 projects and encountered the problem.
Richard