Hey everybody . . . I am 2 months old at repackaging (I know, EVERYBODY loves a newbie, har har). I am trying to figure out how to change what command is executed when a user clicks Remove from add/remove programs under control panel. I have had mixed results with just changing the registry value under HKLM\Software\Microsoft\Windows\Current Version\Uninstall\{GUID}\Uninstall String. Sometimes changing this value works, other times it doesn't. I have heard that the Windows Installer service keeps a database which can override the value in that string and substitute its own.

Is this true? If so, is there a way to write a script to change the value within that database?

Thanks for your help. I really appreciate it.

Jim
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
First question: why on earth would you WANT to change the command? Uninstall is uninstall is uninstall, surely?
Answered 10/31/2007 by: VBScab
Red Belt

Please log in to comment
0
Wellsir, we are packaging to meet the rather stringent demands of a large corporation who wants everything to be uniform across the enterprise. That means that we can't always do everything we want to within an MSI. We usually wrap our MSIs inside a Nullsoft package which often includes actions that are executed after the MSI is installed. When possible, we create custom actions (often VB scripts) within the MSI, but that's not always possible. If the uninstall is simply reversing what the MSI did, our extra actions within the Nullsoft package aren't reversed.

I appreciate any help you can give me.

Jim
Answered 10/31/2007 by: jimpross
Senior Yellow Belt

Please log in to comment
0
So you would like your msi uninstall in ARP to remove all the additional changes made by your wrapper as well as removal of the msi?
Why don't you add custom actions to you msi that only run on uninstall that will reverse the changes made by the extra wrapper stuff?
That way only your msi need be activated as usual.. no other processing is required outside of the msi uninstall.
Answered 10/31/2007 by: sh79
Senior Yellow Belt

Please log in to comment
0
That would be optimal, but not always possible. We often do that, but can't always do so. It's for the times when we can't that I want to know how to access the Installer database.
Answered 10/31/2007 by: jimpross
Senior Yellow Belt

Please log in to comment
0
The Installer database is the MSI: you mean the Installer's application installation data which is stored in the registry. You have the location right, BTW.

My point would be that if the NullSoft wrapper is making changes after the MSI has run, then it should be made to undo those changes. It's exactly the same situation with MSIs: any install action has to be accompanied by an uninstall action. Trying to shoe-horn after-the-event actions in the way you propose is, in my opinion, doomed to failure.
Answered 11/01/2007 by: VBScab
Red Belt

Please log in to comment
0
Well, that's what I'm trying to do. Since the NSIS wrapper does stuff beyond what the MSI does, I would like to call that same NSIS package at uninstall so it can undo what it did at install.

But from my tests I have found that changing the registry key will not always change what command is executed at uninstall. I have changed the key before and made it point to a Nullsoft executable only to have the original MSI called at uninstall (with the /x switch). So something overrides the registry at times, and I have heard that it has something to do with the Windows Installer service. That's what I would like to modify, to ensure that the original Nullsoft wrapper is called at uninstall, to undo what it did at install time.
Answered 11/01/2007 by: jimpross
Senior Yellow Belt

Please log in to comment
0
Well, my colleague figured it out. In the MSI, you have to set the property ARPSYSTEMCOMPONENT to 1. This keeps an entry for the software from showing up in Add/Remove programs. Then you write keys to HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\<application_name> . Under that you need subkeys for DisplayName and UninstallString, and voila! An entry displays for your application, but it isn't automatically just running the msiexec on the msi with a /X . You can determine what exactly you want to happen. In my case, it's often to call the msi again with /X, but also to do some other actions. That way you're not tied to having everything inside the MSI for it to uninstall properly. Heck yes!
Answered 11/09/2007 by: jimpross
Senior Yellow Belt

Please log in to comment
Answer this question or Comment on this question for clarity