I couldn't find a fitting answer regarding my problem using the search, so I'll try my luck asking.
First of all: I'm using Labwindows/CVI 8.5
I created a Setup for my application using the Distribution Kit Wizard. Under the Drivers & Components tab I only selected the "Standard Run-Time".
In the Advanced tab I left the "Install Labwindos/CVI Run-Time Engine in the application directory" option unchecked.
This installs and runs fine at my customers PC.
Now the problem:
My customer does not want that any files are being installed to the Windows\System32 directory....
So I checked the "Install Labwindos/CVI Run-Time Engine in the application directory" option and created a new Setup routine.
This installs fine and the cvirte folder is also being copied to the specified program directory and not to Windows\System32... but now everytime my customer tries to run the application he gets prompted with the following messagebox:
Can not find RTE directory:
Which is actually fine, since I wanted the RTE to be installed to my program directory, but somehow my application is still pointed towards looking into system32.
Is there any way to fix this without copying the RTE into Windows\System32 again?
Solved! Go to Solution.
This shouldn't be happening if the runtime engine exists in the same directory as the EXE the customer is running. Can you confirm that the EXE's directory contains the following three directories?
All three should be present, and if any one is not, then you could see the error you describe. If those directories are there, maybe you can give me some more details about the system: specific directory paths involved, history of relevant installs/uninstalls/upgrades, etc.
Mert A.National Instruments
Ok, I'll try to explain the whole setup, since I'm actually not using an EXE application.
In this specific case I have built a DLL file, which is installed to a custom directory.
I can confirm that the following folders are present in this directory:
I also added the installation path to the PATH environment variable (using a third party application).
Now my customer is using another software which makes calls to my DLL-file. This is when the message that the RTE couldn't be found in windows\system32 pops up.
To state this again: my DLL and the customers application are installed in different directories
My DLL sits in e.g. C:\Program Files\MyDLL\ (PATH envorinment variable is updated with this path correctly)
Customers App sits in C:\CustomerApp\
Now it seems, the customers app can find my DLL, but my DLL can't find the necessary RTE.
Regarding the history of installs/uninstalls/upgrades:
The first install routine was installing the RTE to the windows/system32 directory. (This worked fine)
This version was deinstalled by the customer using the deinstallation routine.
After that he installed the new version with the RTE in the DLLs directory.
I might need to recheck with the customer if there may be an old version of the DLL lying around somewhere. But I could reproduce this behaviour on my PC, after manually removing the RTE from the windows/system32 directory and checking that there are no dead files lying around anywhere.
Given your explanation, I can understand why you are seeing the error message. When trying to locate the resource (bin) and fonts directories, the RTE DLL looks in the directory of the process that loaded it and then in the system directory. Because the RTE is not installed to either of those locations (instead, it is installed in the same directory as your DLL), we fail to find the "RTE directory". There's nothing particularly wrong with what you're trying to do, except that we don't support it well. I am going to file a request to get this fixed for a future release. Until then, you have a few options:
1. Allow the RTE to install to the system directory, as it normally would.
2. Manually copy the cvirte directory from your DLL directory to the system directory.
3. Have the customer install your DLL package into his application's directory. The target directory can be changed by the customer at install time.
I realize these are not great options. I personally would strongly recommend the first option, despite your customer's protest. Is there a good reason he/she forbids you from using the system directory?
Thanks for your help in this matter!
Since we were short on time we decided to choose the first option, despite them not wanting to install into system32 at first. Possibilities of using the third option will be discussed in the future though.
I actually don't really know why they didn't want it to be installed in the system directory, I suppose it had to do something with regulations from their QM department.