cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
warwick
Level 3

Migrating setups from InstallAware

I wish to migrate to InstallShield 2012 LE from setups created using InstallAware.
I’ve created a new project using InstallShield 2012 LE, I want this setup to automatically uninstall any previously installed version prior to installing the new version.

All previously created setups for my product were created using InstallAware 6, they share the same Product Code and Upgrade Code (verified using Orca).

My new project details are below:

Upgrade Paths Page:
I created an Upgrade Path by referencing the old InstallAware created MSI.
I set the Min Version to 1.0 and the Max Version to 4.3 (the previous release was version 4.3)

General Information Page:
I set the Upgrade Code to be same as that found in the original InstallAware created MSI (copied from the Upgrade Path)
I Set the Product Version to 5.0.0.0

If I set the Product Code the same as found in the original MSI, then when running the new setup, the previously installed version is not removed, instead a dialog appears with the following message:
“Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove programs on the Control Panel.”

If instead, I create a new Product Code, then the new setup no longer complains about the previous installation. But it overwrites it rather than uninstalling and I end up with two entries in the Add/Remove Programs.

What am I doing wrong? Any assistance would be appreciated.
0 Kudos
(8) Replies
Shekar
Level 7

Major upgrade is applicable when attempting to uninstall a prevoius version of a product (MSI-based installation) automatically prior to installing a newer version of the same product family (also MSI-based installation), e.g., MyProduct 1.0 to MyProduct 2.0.

I am not sure if old version of InstallAware i.e 6.0 had msi files. You can try uninstalling the old setup manually by calling the msi manually.

You will want to uninstall your 6 installation prior to installing your MSI-based installation created with InstallShield 2012. It can be achieved with a custom action in your MSI-based installation.

Helpful link:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa370579%28v=vs.85%29.aspx
0 Kudos
warwick
Level 3

Thanks for your reply Shekar, unfortunately I’ve not made any progress.
Yes, my previous installers made with InstallAware 6 were MSI based. I looked into using a custom action to uninstall the previous version, but this failed as two MSIs can’t run at the same time.

I’d be happy with either a Minor or a Major update, so long as the files get updated and we’re left with only one entry in Add/Remove programs.

As I understand it, to create a Minor Update I have to keep both the Product and Upgrade codes the same as my previous installers, only the Product Version needs to change. When I run this installer then I get the “Another version of this product is already installed…” message. It is as if my setup isn’t being treated as an update.

Is there an option where I can explicitly tell InstallShield LE that my installer in a Minor Update?


To create a Major Update, I believe that I have to change both the Product Code and the Product Version, only the Upgrade Code remains unchanged from previous installers. I also create an Upgrade Path which has the same Upgrade Code as used in all versions of my product.
When I run this installer then the files do get installed but I’m left with two entries in Add/Remove programs.
I seem to have installed two versions side-by-side (actually, with one overwriting the other if I leave the destination path unchanged).

How do I force a Major Update to remove an older version?
Is there an option anywhere which specifies whether side-by-side Major Updates are allowed?

-Warwick
0 Kudos
Shekar
Level 7

if you are using ISLE, it is recommended to perform major upgrade. The double entry is likely due to not correctly identifying the GUID of the installed package.

I would suggest these steps:

Locate the Upgrade Code from the MSI of the older package (in the Property table) and verify that this same code appears in the Common tab of your major upgrade item, in the Products having another Upgrade Code field.

As a test, consider removing any version values and simply use the Any earlier version.
0 Kudos
warwick
Level 3

I have double checked that I have the same Upgrade Code in the General Information page as used in the previous setups. I have changed the Product Code so as to force a Major Update.

I also removed the version and language values from the Upgrade Path, I understand that leaving these fields empty is equivalent to ‘Any Version’.

The new setup still does not uninstall previous versions and I end up with a double entry in Add/Remove programs.
Perhaps this is by design, perhaps major updates install side-by-side unless we somehow tell the setup to remove the previous version?

Or, Is there a requirement that the ‘Feature’ be named the same between versions? IS2012 LE is limited to a single Feature named ‘Always Install’, this doesn’t match my previous setups and it can’t be renamed.

As you can probably tell, the frustration is making me clutch at straws 😞

Warwick
0 Kudos
Shekar
Level 7

could you please post the upgrade log? probably that would provide more information on various stages of installation.
0 Kudos
warwick
Level 3

Attached is the log generated when running my test installation. The installer does not remove the previous installation and I’m left with a double entry in Add/Remove programs.

Previous Installation v4.4, built with InstallAware 6.
ProductCode: {DB520DDA-39BD-4189-B0D0-71DC426C98F3}
UpgradeCode: {C43AEADE-0786-42F5-AE0A-221911C85302}

New Installation v5.0, built with InstallShield 2012 Limited Edition
ProductCode: {0035C466-6A2F-403C-A4F7-527D301DB17C}
UpgradeCode: {C43AEADE-0786-42F5-AE0A-221911C85302}
The Upgrade Table contains an entry for UpgradeCode {C43AEADE-0786-42F5-AE0A-221911C85302}

Thank you for taking the time to look at this issue.
0 Kudos
warwick
Level 3

I’ve finally solved this issue. I had (incorrectly) assumed that all MSI based setups can be uninstalled automatically by Windows Installer in the RemoveExistingProducts action.

But, it seems that setups built using InstallAware cannot be uninstalled this way, they can’t even be removed using msiexec.exe. In order to perform an uninstall, I have to run the old installer’s bootstrapper with the following parameters.
setup.exe /s MODIFY=FALSE REMOVE=TRUE UNINSTALL=YES

I have created an executable to perform the uninstall, this is run as a custom action. This isn’t ideal as I’d like to prompt the user prior to uninstalling the existing product, if they decline then there isn’t an elegant way of terminating the installer as EXE custom actions can’t cancel an install without an error message being displayed. If I weren’t using the Limited Edition of IS then I’d be able to cancel the install from a DLL custom action.

I’m under the impression that I’ve wasted many days simply because the InstallAware created setup didn’t play by the rules, surely it should have allowed itself to be uninstalled without having to call the bootstrapper!
0 Kudos
Shekar
Level 7

that's great to hear. i have not used installaware, so i am not aware of its functionality.
0 Kudos