cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
alina_b
Level 4

Update on a Basic MSI project

Hello,

Would you please tell me how to do a setup to update a Basic MSI project.
I read some basic guidelines here:

http://helpnet.installshield.com/robo/projects/HelpLibDevStudio9/CreateASetupToUpdateMyProduct.htm

but they don't apply on Basic MSI project.

For instance,
If you are modifying an existing project:
In the General Information view, click Project Properties. The Project Properties sheet opens.
Set the Update Mode Supported property to Yes.


On Project Properties sheet, there is no Update Mode Supported property.

I want to use this update with FLEXnet Connect.

Thanks,
Alina
Labels (1)
0 Kudos
(10) Replies
DebbieL
Level 17

The help topic that you referenced is from the DevStudio 9 Help Library. The help library has changed a lot since then, so I recommend looking at the InstallShield 2008 Help Library to see the most up-to-date help topics.

Here are a few InstallShield 2008 help topics to get you started:

Depending on which type of upgrade you decide to create, see the sections called "Creating Major Upgrades," "Creating Minor Upgrades," or "Creating Small Updates." All of these help topics are in the "Updating Applications" section of the help library. You can click the green left and right arrows in the top-right corner of each help topic to jump from one help topic to the next.

I hope that helps.

Debbie Landers
Macrovision Corporation
0 Kudos
alina_b
Level 4

It sure helps.
Thanks 🙂
0 Kudos
alina_b
Level 4

I still got some questions.

What I did:

I created a Basic MSI project that run a script on the DB (the solution is called is called Setup1_1) and ran it.

I copied to another project (solution called Setup1_2, same name for the project), changed Version and Package Code and put an extra script in it. What I want to accomplish is make an upgrade, so that when I run it, only the second script will be run on the DB.

I added an item under Upgrade Windows Installer Setup with Setup to Upgrade pointing to Setup1_1.msi. I tried to Validate item, but I got an error saying Unable to locate the latest release for validation. I tried to add a new Release, but it didn't work.

When I try to run Setup.msi on the second solution I got Another version of this setup is already installed. Installation of this version cannot continue.... If I run setup.exe from the same folder instead I got This setup will perform an upgrade.... If I install, what it does is install both scripts.

I tried with building and using a patch, but it was just the same.

Can you tell what I should change to get the results I need?

Thanks,
Alina
0 Kudos
DebbieL
Level 17

Try adding a condition to the first script so that it doesn't run during the upgrade.
Conditionally Launching a SQL Script in a Windows Installer-Based Installation

I think the condition that you'd want to set is:
NOT Installed

Are you creating a minor upgrade? And does your .msi file name have the version number (for example, 1_1 and 1_2) in it? The name of the .msi cannot change for a minor upgrade. You'd need to create a major upgrade to do that.

In your 1.2 project, did you build a release yet? The validation error that you encountered would occur if you didn't build the release. (You can add a new release in the Releases view, but then you also need to build it.)
0 Kudos
alina_b
Level 4

The releases work fine.

There is one case when it's necesary to do a major upgrade (because I have to modify files).

I have 2 projects. The 1st project is the initial install, 2nd is the upgrade.
They share the same UpgradeCode. I registered both product with FLEXnet Connect. On the 2nd, I created a major version. Then I tried to add a new update on 1st product in FLEXnet Connect, update file being as the 2nd .msi file.

I try to test this update, but I got the error: "The Software Manager does not recognize this product. Please contact your software vendor for updates to this product. Error 13003: Version Not Registered with the FLEXnet Connect."

Do you know what's wrong?

Alina
0 Kudos
DebbieL
Level 17

The following help topic describes troubleshooting information for that error:
Calling the Agent Results in Error 1300x

I hope that helps.

Debbie Landers
Macrovision Corporation
0 Kudos
alina_b
Level 4

Now it works. Thanks.

I have one more question about the install conditions: I want a major version setup to install only if there is another install on the machine, having the same UpgradeCode number. I want to prevent the users to download an upgrade if they don't actually have an initial install to work on.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

A knowledgeable user could circumvent it any number of ways, but a simple block for this might be to add a Type 19 "error" custom action somewhere in the InstallUI and InstallExecute sequences after FindRelatedProducts. If you condition this appropriately on the "action property" of your major upgrade, it can abort when a previous version was not found.

Let me caution against this, however, as it means installing a base package, some series of major upgrades, then removing the latest version, would not allow the user to reinstall the latest version without installing the whole series again. Improperly conditioned it could also abort during repair or uninstall, so consider using the Installed property in your condition, and test these cases.
0 Kudos
alina_b
Level 4

I thought about using Installed property in the "Install Condition" (I use a BasicMSI project). This seams the easiest way to me. However, I didn't find much about building advanced conditions.

I want to check if there's already a product installed on the target machine with the same UpgradeCode as the product to be installed. How can I check this?

I know that this approach doesn't stop a hacker, but I just want to add another layer of "security". The database creation scripts are only executed on initial install, which is not available to the users, so they won't get much, even if they hack an update.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

In a major upgrade, Installed will initially be false, and remain so until a later run of either maintenance or product removal. So a launch condition on Installed will be useless here. You will need the results of FindRelatedProducts instead. As for building more complex conditions, perhaps see the MSDN and Help topic "Conditional Statement Syntax".
0 Kudos