I am having a problem with IA7 Express where I have a program set to run Before Uninstallation. It runs fine when I uninstall the application through the Add/Remove Programs Control Panel. However, when I install a new version of the application without removing the old version, and proceed with the "Previous Version Uninstallation" requirement in the wizard, it does NOT run the Before Uninstall programs.
I've verified this with a simple command-line app that writes a log file when it runs.
Is there a way to either (A) get the Previous Version Uninstall procedure to run the configured Before Uninstall run programs list, or (B) to force the user to remove the existing version manually before allowing them to proceed with the new installation (which runs the commands properly).
The commands that run are needed to properly prepare the application for uninstallation - without them, IA is unable to actually remove the old files, causing issues with the new version installation. As I said - the manual uninstall via Add/Remove Programs works great... it's just that the "Previous Version Uninstallation" process at the beginning of the wizard fails to do the same things that the ARP uninstall does. Seems like a bug.
Run Programs not called during Previous Version Uninstall
-
- Site Admin
- Posts: 364
- Joined: Mon Jul 30, 2007 11:51 am
- Location: USA
- Contact:
This is not a bug, this is what is happening:
When you uninstall from the ARP applet, it calls the actual uninstaller, this uninstaller contains the uninstall information, along with the custom actions you include, your run program for example. When you install a newer version, it checks for the presence of old versions, if any old version is present, it gets removed, but it gets removed with a "Remove MSI Package" MSI command. This command doesn't perform custom actions, it just undoes what Windows Installer did during th package installation. Of course there is a way to change the installer behavior, but it must be modifying th MSI script, and unfortunatelly your Express Edition doesn't allow it. If you want to change the uninstall behavior, i would recommend you to get at least IA Developer Edition.
When you uninstall from the ARP applet, it calls the actual uninstaller, this uninstaller contains the uninstall information, along with the custom actions you include, your run program for example. When you install a newer version, it checks for the presence of old versions, if any old version is present, it gets removed, but it gets removed with a "Remove MSI Package" MSI command. This command doesn't perform custom actions, it just undoes what Windows Installer did during th package installation. Of course there is a way to change the installer behavior, but it must be modifying th MSI script, and unfortunatelly your Express Edition doesn't allow it. If you want to change the uninstall behavior, i would recommend you to get at least IA Developer Edition.
Alejandro Ronquillo
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
Thanks for the response.
I guess I don't understand the intended scenario... in what case would a software developer want IA to run the custom programs on uninstall via ARP, but not when uninstalling as part of a new version installation? It would seem to me that if someone places a custom Run Program Before Uninstall in their installer, they need it to perform actions before the application is uninstalled (whether that is by the MSI uninstalling or not).
I guess I don't understand the intended scenario... in what case would a software developer want IA to run the custom programs on uninstall via ARP, but not when uninstalling as part of a new version installation? It would seem to me that if someone places a custom Run Program Before Uninstall in their installer, they need it to perform actions before the application is uninstalled (whether that is by the MSI uninstalling or not).
-
- Site Admin
- Posts: 364
- Joined: Mon Jul 30, 2007 11:51 am
- Location: USA
- Contact:
Sorry Travis,
What I am trying to explain is that Windows Installer is the one uninstalling previous versions, and not IA. The custom actions are from IA and not from MSI, that is why MSI doesn't perform these custom actions when uninstalling previous versions.
What I am trying to explain is that Windows Installer is the one uninstalling previous versions, and not IA. The custom actions are from IA and not from MSI, that is why MSI doesn't perform these custom actions when uninstalling previous versions.
Alejandro Ronquillo
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
InstallAware
Home of The Next Generation MSI Installer
Get your free copy today - http://www.installaware.com/
Ah, I understand.
I incorrectly thought that the dialog that appeared, indicating that the previous version needs to be uninstalled, came from IA before the MSI took over. It sounds like that is not the case.
Doesn't MSI support custom actions as well? I'm curious why the run programs are occuring as part of the IA wrapper, instead of as part of the MSI custom actions. If they were built in as MSI custom actions, it seems that they would run in the above scenario that I describe. Perhaps there is a specific reason that 'run programs' are not implemented this way though.
I incorrectly thought that the dialog that appeared, indicating that the previous version needs to be uninstalled, came from IA before the MSI took over. It sounds like that is not the case.
Doesn't MSI support custom actions as well? I'm curious why the run programs are occuring as part of the IA wrapper, instead of as part of the MSI custom actions. If they were built in as MSI custom actions, it seems that they would run in the above scenario that I describe. Perhaps there is a specific reason that 'run programs' are not implemented this way though.
Who is online
Users browsing this forum: No registered users and 62 guests