Hi,
I include three NI DLLs as part of my app: visa32.dll, NiViSv32.dll, and Nispylog.dll. These DLLs live in the program's bin folder (not the System32 folder). When a user installs a different version of the NI software, with later versions of the DLLs, problems occur when running the NI applications.
Since there are conflicting versions of the DLLs in different locations (evil twins), the obvious solution might be to keep the DLLs in the System32 folder only. But then there's the potential that the NI software installation might overwrite the DLLs used by my app. Or the reverse situation may occur, in which my app's installation might overwrite the NI software DLLs. In either case, there's the potential for the DLL versions to not match.
Given that the DLL mismatch may occur, I'm thinking that a possible way to minimize problems is to stop putting DLLs in my program's bin directory, to check if the DLLs are in the System32 folder during my app's installation, and to replace the DLLs only with DLLs of a later version (and to do nothing if the DLLs are of an earlier version). This "fix" assumes that these DLLs are backward-compatible, however. Is this assumption correct?
(This fix can't protect against the case where an older version of the NI software is installed after my app has been installed.)
Thanks for your help!