I have a pure InstallScript project, which turns out to be problematic due to this issue. It was temporarily resolved by adding some InstallScript that wipes a particular directory before the new files are installed, which is not ideal. However, this series of forum posts indicates that an InstallScript MSI project or Basic MSI project would greatly simplify the removal of dynamically linked files on upgrade.
Searching the Flexara forums, I find a lot of posts railing against the InstallScript MSI project type, so I'm looking at Basic MSI. Apparently Flexara has a product called Repackager that can convert InstallScript projects to Basic MSI. However, it only comes with IS Premier or Admin Studio, which would mean we have to spend some money. Before I go down that road, I need some indication that this is likely to work.
- Can any functionality be lost when converting from InstallScript to Basic MSI with the Repackager tool? We have a fair bit of logic in our scripts, including things like this that pass information across several steps of the installation. We also use several InstallShield NT Service Objects, legacy objects I believe I had to install separately from IS2010. Are there any aspects of InstallScript projects the Repackager is known to not handle?
- If the Repackager isn't going to magically convert the project, is there a guide somewhere that I can follow to do the conversion manually? I have found the InstallShield documentation and forums to be pretty severely lacking.
- Is there any way the resulting Basic MSI install package will be able to perform upgrade installs on systems where an old (pure InstallScript) version is installed? This would really be a bonus. At this point I'm expecting we'll just be forced to do a full uninstall/reinstall.
I wouldn't recommend the repackager solution for the same reasons Christopher mentions.
A good bridge between your InstallScript project and new Basic MSI project would be to create a new Basic MSI project which uses InstallScript custom actions. With this approach, the MSI engine will manage the non-proprietary aspects of your install, and the legacy InstallScript code can be reused to manage the proprietary aspects of your install.
This gives you the best of both worlds -- a robust Basic MSI package which you have complete contol over (since it wasn't autogenerated by a repackager) PLUS time savings since you don't have to reimplement your InstallScript functions from scratch.