kelek
16th March 2006, 20:20
One of the nice things about InstallShield is it's ability to detect, when executing the installation executable, if a previous installation exists, and then bring you to the add/remove/repair selection. If there is no existing installation, it continues as normal.
So for example, lets say I run the installation for program X. Right after it's installed, I can re-run the installation program to uninstall program X, without having to go through Control Panel, or the Start Menu Program Groups, etc.
Is there any way to do this with NSIS? I've looked into Thrash's add/remove programs, but that just customizes the menu from the Add/Remove programs in control panel and for the uninstall script.
This involves 'branching' into two different sets of pages, depending on if it detected an installation. As far as I know, that's not possible, since you can't use function calls to customize the page layout.
I thought about doing stuff in .onInit, but I think it sets the page layout before doing .onInit, so it won't matter. Any ideas?
Another idea, which seems a bit complex, would be to have an installation package which automatically packages two different installation packages. Then, if it detects the installation, it runs one, and if it doesn't, it runs the other. However, this would result in a 2x size bloat/overhead in file size.
So for example, lets say I run the installation for program X. Right after it's installed, I can re-run the installation program to uninstall program X, without having to go through Control Panel, or the Start Menu Program Groups, etc.
Is there any way to do this with NSIS? I've looked into Thrash's add/remove programs, but that just customizes the menu from the Add/Remove programs in control panel and for the uninstall script.
This involves 'branching' into two different sets of pages, depending on if it detected an installation. As far as I know, that's not possible, since you can't use function calls to customize the page layout.
I thought about doing stuff in .onInit, but I think it sets the page layout before doing .onInit, so it won't matter. Any ideas?
Another idea, which seems a bit complex, would be to have an installation package which automatically packages two different installation packages. Then, if it detects the installation, it runs one, and if it doesn't, it runs the other. However, this would result in a 2x size bloat/overhead in file size.