Zlib.DLL Conflict

  • 1
  • Problem
  • Updated 6 years ago
  • Solved
I am told by my techies that in writing MM9 the Mindjet programmers appear to have taken short cuts which involved including in the install a copy of zlib1.dll which they had renamed to zlib.dll (assumedly to save them renaming all the calls).

However this results in problems for any other program which relies on zlib.dll calls not supported by zlib1.dll, including ours!

Do Mindjet accept this to be the case?

Has it been fixed in MM2012? This would make the upgrade worthwhile.

Do Mindjet object to us making this public and including a warning of this in our product and supporting literature?
Photo of Derrick Ardron

Derrick Ardron

  • 3 Posts
  • 0 Reply Likes
  • frustrated

Posted 6 years ago

  • 1
Photo of Nick Duffill

Nick Duffill, Champion

  • 515 Posts
  • 172 Reply Likes
Derrick

MindManager 2012 installs zlib.dll version 1.2.3.0.

As an avoidance strategy (which is not nice, but no worse than the root cause), could you install the required version of zlib in the executable folder for your product? As far as I know, even if another application has already registered a different version, the version that is local to the executing runtime would take priority.

Alternatively, a worse solution might be to include zlib source code in your product, instead of referencing the DLL. This would be far from ideal, but if it is causing significant problems, then it might be something that could be done quicker than solving it in MindManager.
Photo of Derrick Ardron

Derrick Ardron

  • 3 Posts
  • 0 Reply Likes
Nick

The input I have is as follows:

Here is a link to a Microsoft definition on how DLLs are located for loading:
http://msdn.microsoft.com/en-us/libra...

Before the system searches for a DLL, it checks the following:

• If a DLL with the same module name is already loaded in memory, the system uses the loaded DLL, no matter which directory it is in. The system does not search for the DLL.
• If the DLL is on the list of known DLLs for the version of Windows on which the application is running, the system uses its copy of the known DLL (and the known DLL's dependent DLLs, if any). The system does not search for the DLL. For a list of known DLLs on the current system, see the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.

In this case where Mind Manager is loaded before our DLL it uses the one loaded by Mind Manager. If they’re not willing to look into the issue because it’s our application that crashes then we could uninstall and then re-install mind manager which will put their add-ons further down the execution list; this will cause Mind Manager to crash or function incorrectly rather than Save to CRM.

So it would appear that I can have one application or the other not work in some way.

Would you agree that to a user this is unsatisfactory?
Photo of Nick Duffill

Nick Duffill, Champion

  • 515 Posts
  • 172 Reply Likes
Derrick

I agree, this is a bad situation for everyone. Ideally, if there is something that the user can do locally, such as uninstall and reinstall, then they can at least get back on the road again, as there could be a long lead time in changing either product.

Unfortunately, the dll installed by MindManager is protected with automatic validation by the MSI package, so even if this is disrupted after installation, the next run of MindManager reinstates it.

Is it known that placing MindManager's version of zlib lower in the priority list by uninstalling and reinstalling will break MindManager? If it is the case that the MM version is down rev with the one you require, then would MM still work with a newer version? If I have understood correctly, then the zlib dll included with the MindManager installation is actually zlib1, but at a lower version level than the one you need.
Photo of Derrick Ardron

Derrick Ardron

  • 3 Posts
  • 0 Reply Likes
Nick

Are you of Gyronix fame and if so is Results Manager dead, replaced by the MM12 functionality? RM is the reason I am on MM9. Any advice on this?

With regard to zlib versions I understand that we actually use an earlier version i.e zlib.dll and that all zlib1.dll is a much later specification hence the adding of the numeric to fifferentiate the two. I am told that in renaming (to zlib.dll)the zlib1.dll installed with MM, the MM Programmers may have saved themselves a lot of work but as indicated any other program calling zlib.dll with a call which is not in zlib1.dll will have problems.

I no longer have the MM9 installer and do not want to make matters worse on my laptop. I therefore propose downloading a free evaluation copy of MM12 and building two versions of a VPC. On one I'll install our product first and on the other MM12 first and see what results I get.

All that could take a while (some time next week hopefully) and then I'll get back to this thread if that is OK.

This conversation is no longer open for comments or replies.