Loading
DLL file not being upgraded on minor upgrade despite difference in assembly version due to error "has no eligible binary patches" or potentially something else.

Hi all, I have an InstallShield project and we recently upgraded one of our minor packages and it is not getting upgraded on minor upgrades. I get this error relating to "has no eligible binary patches" despite it working on previous upgrades.

 

I haven't changed anything else and it is failing from one iteration to the next. It is compiled through C#, and the DLL is quite small.

 

I have tried to run "repair", and various REINSTALLMODE parameters, along with other attempts to fix the issue.

 

I have been struggling to find a solution and have spent multiple days trying to figure it out and looking for any other suggestions.

 

Thanks!


  • shunt (Flexera Software)

    Hi,

     

    There are a few things to check here:

     

    1. Make sure that you increase the .dll file version. Windows Installer uses file versions of files to determine if they should be replaced or not:

    https://learn.microsoft.com/en-us/windows/win32/msi/file-versioning-rules

     

    2. Check that the .dll file you want to replace is the key file of the component. During Minor Upgrades, Components (and all the files within) are only reinstalled if the Key file has changed. 

     

    3. If you are using dynamic file linking, its possible that additional components with different GUIDs are being dynamically created at build time - try statically adding the .dll file to the project instead - this will isolate if dynamic file linking could be causing the issue or not.

     

    4. When a Minor upgrade is executed it has to be run with the REINSTALL and REINSTALLMODE commands. This is usually done automatically via the setup.exe which InstallShield creates - by default the REINSTALLMODE value is "omus" which will only replace files that are missing, or of an older version. For a test - try using "amus" - this will force all files to be reinstalled. 

     

    You can edit REINSTALLMODE in the Property Manager View in your InstallShield project.

     

    https://learn.microsoft.com/en-us/windows/win32/msi/reinstallmode

     

    I hope this information helps,

    Stuart

    Expand Post
  • Hi shunt, thanks for the information.

     

    In the end, none of these worked, and a Major upgrade with altering the Product Code is required.

     

    Thanks.

    Expand Post

Loading
DLL file not being upgraded on minor upgrade despite difference in assembly version due to error "has no eligible binary patches" or potentially something else.