In the OnBegin handler, I'm checking for registry entries that I made in the previous (v1) setup, and if they match what I expect, set a global BOOL value to TRUE and proceed to OnMaintUIBefore.
In OnMaintUIBefore, I simply flash an SdWelcome dialog, informing the user that this is an upgrade. If they don't click cancel, this code executes:
Code Sample |
SetStatusWindow(0,""); Enable(STATUSEX); StatusUpdate(ON,100); ComponentUpdate(""); |
Then it reaches the end of the OnMaintUIBefore event, zips through OnMoving, and gets to OnMaintUIAfter - it never goes to the Component_Installing or Component_Installed events at all. None of the new files are copied to the machine.
I thought it might have been because the uninstall entries that InstallShield makes, both in the registry and in the Setup.ini in the InstallShield Installation Information directory, stored the old AppName (which has changed in v2 of our software to be a bit more generic). I wrote code to change these entries in OnBegin, but it didn't help.
I'm totally stumped. I'm no InstallShield expert, by any stretch, and it's only a small part of my job, but I've done upgrade setups using Maintenance mode before, and they've succeeded. I more or less copied the exact sequence of events (and much of the event code) from previous, interim-build upgrade setups I developed for v1.x of our software (all of which had worked). I've been trying to puzzle this out using InstallShield's docs, but that's not been entirely helpful, so I call out here. Anyone have any ideas (other than NOT doing upgrades through Maintenance mode - I'm not entirely comfortable with calling a silent uninstall through command line switches in InstallScript yet, and I don't think I've got the time to learn it).
Thanks in advance for any and all help,
Josh