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

Install new major version, shows message "Another version of this product is already installed."

Follow all suggestions on the upgrade in the release, and nothing seem to allow the install to get past this message.

bruce_benson_0-1585857669361.png

 

Labels (1)
0 Kudos
(6) Replies
shunt
Revenera Moderator Revenera Moderator
Revenera Moderator

Firstly make sure that your new version has a higher ProductVersion number than the one you are attempting to upgrade.

The Windows Installer Engine is very specific in its requirements and any deviation from Upgrade best practices can result in unwanted behaviour. Take a look at the following article which provides steps on how to create a Major Upgrade - make sure that you are following each step:

https://community.flexera.com/t5/InstallShield-Knowledge-Base/Create-a-Major-Upgrade/ta-p/3879

These steps worked as described.  Thank you.

Now, we have .net dll's which all are not incremented during building so they have a static file version #, this is to have static versions on serialized objects.  

So the upgrade worked, but did only update the exe and dll's which have new versions in the file attributes, and did added new files.

Is this by design (yes), but is there anyway to have file dates be the determining factor to update files not version? 

Thanks

Bruce

0 Kudos
shunt
Revenera Moderator Revenera Moderator
Revenera Moderator

Hey Bruce,

Microsofts Windows Installer Engine follows a strict set of rules to determine if a file should or should not be replaced during an installation.
You can review these for yourself in the "File Versioning Rules" here:
https://docs.microsoft.com/en-us/windows/win32/msi/file-versioning-rules

You can see that if a new file has the same version number and a newer modified date then the file is NOT installed, and this is by default to preserve user data.

You can overwrite this behaviour in Installshield by following these steps:
- In your Installshield IDE go to the "File and Folders" view locate your file.
- Right click the file and select "Properties"
- Check the box "Always Overwrite"

This will increase the file version in the MSI tables (but not on the actual file itself) tricking the Windows Installer engine into thinking it has a higher file version and therefore installing the file.

I hope this helps,
Stuart

0 Kudos

I am using InstallShield Professional Edition 2019 R3.  

This is a [Basic MSI Project]

I went to the Files and Folders, found the file in the right side window, then right click ; properties is disabled.

Is this were the Overwrite always option should be?? Help!

bruce_benson_0-1586535978768.png

 

0 Kudos
shunt
Revenera Moderator Revenera Moderator
Revenera Moderator

It looks like you are using dynamic file linking, whilst this is a powerful tool it does come with limitations. As the files are only added when you actually build the project its not possible to alter their properties before. 

This means you can not set any properties such as Shared, Permanent, or Never Overwrite for a dynamically linked file.

A list of other limitations can be found here: https://docs.flexera.com/installshield19helplib/helplibrary/DFL-Limitations.htm

The solution here would be to statically add the files.

0 Kudos

Excellent information, on setting the Always override.

This works to a point, during the installation I see the new files go down in the folders as expected, but then are being removed.

 

This is showing up in the Log file, when upgrading.  Why the FileRemove() is being called.

MSI (s) (54:A4) [12:13:02:272]: Executing op: ActionStart(Name=RemoveFiles,Description=Removing files,Template=File: [1], Directory: [9])
MSI (s) (54:A4) [12:13:02:272]: Executing op: ProgressTotal(Total=68,Type=1,ByteEquivalent=175000)
MSI (s) (54:A4) [12:13:02:272]: Executing op: SetTargetFolder(Folder=C:\Program Files (x86)\EagleTM\Wings\)
MSI (s) (54:A4) [12:13:02:272]: Executing op: FileRemove(,FileName=WingsClient.exe,,ComponentId={7????89})
MSI (s) (54:A4) [12:13:02:272]: Verifying accessibility of file: WingsClient.exe
MSI (s) (54:A4) [12:13:02:288]: Executing op: FileRemove(,FileName=WingsClient.exe.config,,ComponentId={3????C2})
MSI (s) (54:A4) [12:13:02:288]: Verifying accessibility of file: WingsClient.exe.config

 

Thanks

0 Kudos