Add/Remove program remove button command
Hi,
Maybe this is not a good question but I really need your help on this.
I need to know on how does windows installer uninstall my application when I click the remove button in the Add/Remove program? Someone here might tell me that it uses the uninstall information in the registry by executing the command in the UninstallString value. But I deleted that registry string value and still I was able to uninstall my application succesfully. I just wonder how the windows installer manage to do that even if I already deleted that entry(UninstallString = MsiExec.exe /I{00000000-0000-0000-0000-000000000000}). There must be an answer somewhere.
~Berkley
Maybe this is not a good question but I really need your help on this.
I need to know on how does windows installer uninstall my application when I click the remove button in the Add/Remove program? Someone here might tell me that it uses the uninstall information in the registry by executing the command in the UninstallString value. But I deleted that registry string value and still I was able to uninstall my application succesfully. I just wonder how the windows installer manage to do that even if I already deleted that entry(UninstallString = MsiExec.exe /I{00000000-0000-0000-0000-000000000000}). There must be an answer somewhere.
~Berkley
0 Comments
[ + ] Show comments
Answers (11)
Please log in to answer
Posted by:
turbokitty
14 years ago
I've noticed that this retains the original WI A/R entry though. Here's a discussion I found elsewhere:
http://www.pcreview.co.uk/forums/thread-1544595.php
http://www.pcreview.co.uk/forums/thread-1544595.php
Bob Arnson:
If the WindowsInstaller value in the program's Uninstall key is 1, the
Add/Remove Programs applet ignores the UninstallString value and always does
the equivalent of an 'msiexec /x{productcode}.' A trick I've used (stolen
from InstallShield) is to create a "manual" entry in the Uninstall key. Set
ARPSYSTEMCOMPONENT to 1 to have the RegisterProduct standard action create
an Uninstall key with a SystemComponent value of 1 -- that hides the entry
in Add/Remove Programs. Then I use the Registry table to create another
Uninstall key. In this key, manually specify the values that MSI usually
creates, but omit the WindowsInstaller value. Then you can make
UninstallString 'msiexec /i{productcode}' or whatever you want.
Posted by:
anonymous_9363
14 years ago
Posted by:
suchi.jigar
14 years ago
As per my understanding, uninstallstring is just a commandline to remove a product.
If you delete it, you can still remove product through msiexec /x [product code], or through remove button. If you delete whole uninstall key, then also you can remove product through msiexec /x [product code].
I think it takes reference from cache copy of msi,
If you delete it, you can still remove product through msiexec /x [product code], or through remove button. If you delete whole uninstall key, then also you can remove product through msiexec /x [product code].
I think it takes reference from cache copy of msi,
Posted by:
turbokitty
14 years ago
This is an interesting topic. I tested changing the uninstall/modify strings in the registry and the change isn't reflected when you click the button... even after a reboot.
I ran procmon and rundll32 does indeed read that key before uninstalling.. I wish I had more time to look into this but that's all the play time I have today.
I ran procmon and rundll32 does indeed read that key before uninstalling.. I wish I had more time to look into this but that's all the play time I have today.
Posted by:
sv408
14 years ago
Maybe a silly question so please forgive me in advance:
Are you only looking at / modifying values in HKLM (or HKCU)\Software\Microsoft\Windows\CurrentVersion\Uninstall?
Sometimes I have found entries in the ARP applet that are not located in the Uninstall key. Have you searched for an uninstall string elsewhere in the registry?
Are you only looking at / modifying values in HKLM (or HKCU)\Software\Microsoft\Windows\CurrentVersion\Uninstall?
Sometimes I have found entries in the ARP applet that are not located in the Uninstall key. Have you searched for an uninstall string elsewhere in the registry?
Posted by:
turbokitty
14 years ago
Posted by:
yelkrebb
14 years ago
ORIGINAL: sv408
Maybe a silly question so please forgive me in advance:
Are you only looking at / modifying values in HKLM (or HKCU)\Software\Microsoft\Windows\CurrentVersion\Uninstall?Yes, Actually I was only looking in HKLM entry .
Sometimes I have found entries in the ARP applet that are not located in the Uninstall key. Have you searched for an uninstall string elsewhere in the registry?
Posted by:
yelkrebb
14 years ago
ORIGINAL: turbokitty
I've noticed that this retains the original WI A/R entry though. Here's a discussion I found elsewhere:
http://www.pcreview.co.uk/forums/thread-1544595.php
Bob Arnson:
If the WindowsInstaller value in the program's Uninstall key is 1, the
Add/Remove Programs applet ignores the UninstallString value and always does
the equivalent of an 'msiexec /x{productcode}.' A trick I've used (stolen
from InstallShield) is to create a "manual" entry in the Uninstall key. Set
ARPSYSTEMCOMPONENT to 1 to have the RegisterProduct standard action create
an Uninstall key with a SystemComponent value of 1 -- that hides the entry
in Add/Remove Programs. Then I use the Registry table to create another
Uninstall key. In this key, manually specify the values that MSI usually
creates, but omit the WindowsInstaller value. Then you can make
UninstallString 'msiexec /i{productcode}' or whatever you want.
Posted by:
anonymous_9363
14 years ago
Posted by:
AngelD
14 years ago
Posted by:
anonymous_9363
14 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.