LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Application Builder Issue in LV 8.5

I have a project originally created in LabVIEW 8.2. I recently made the switch to 8.5, and now that I'm about to build the installer for this program, I came across a problem that I can't figure out. The application contains a file called parse.dll which is included in the support directory called "data." In 8.2 this worked fine. In 8.5, whenever I open the installer properties, this file is missing and it shows another file I include, Help.html, in both the data directory and the top level directory.

If I remove the app and re-add it to the program files folder on the source files page, it gets added correctly. However, I can't check the "Register COM" box on the source file settings page, it's greyed out. If I click OK, then re-open the installer properties, parse.dll is changed to Help.html again.

I tried deleting the installer from the project and creating it from scratch with the same result. I also tried putting the DLL in the main folder instead of data. This DLL needs to be included and registered with Windows in order for the program to work.

Any ideas why the application builder is having so much trouble with this file in 8.5?
0 Kudos
Message 1 of 13
(4,658 Views)
I've been doing some more digging, and I've found a lot of weird inconsistencies in the .lvproj file. For instance, this is part of it:

<Property Name="FileInfo[2].DirTag" Type="Str">{477139C8-75D2-410D-986D-7028469E53D6}</Property>
<Property Name="FileInfo[2].FileName" Type="Str">Parse.dll</Property>
<Property Name="FileInfo[2].FileTag" Type="Ref">/My Computer/Help.html</Property>
<Property Name="FileInfo[2].Type" Type="Int">3</Property>

It seems like it's getting really mixed up when saving the lvproj file. File names and tags are getting switched and both of these files aren't included according to the lvproj. I started with a fresh project in 8.5 to eliminate the possibility of upgrading issues from the 8.2 project and I'm seeing the same problems. When I run the installer on another computer, all the files are copied correctly, but the DLL is not getting registered. However it is added to the project file, it doesn't allow me to check the "register COM" box in the installer. The only file that enables this box is the executable.

I briefly attempted to save everything back to 8.2, but got some strange results. The other option is to register the DLL through the code, but I really shouldn't have to do this.


0 Kudos
Message 2 of 13
(4,619 Views)
OK, I got it to work by putting a call to system exec.vi in the code. If opening the DLL causes an error, system exec will register it and it will be opened again. This seems to work, but it isn't a permanent solution.
0 Kudos
Message 3 of 13
(4,605 Views)
I have found in some previous upgrades, that I fixed some issues by just making a new project file, as opposed to trying to use the previous version resaved under the new version.
Certified LabVIEW Associate Developer
0 Kudos
Message 4 of 13
(4,583 Views)
General tips and hints are great, but with these types problems it is always helpful to post the problem source code if possible. If the data in the project file seems to be written out incorrectly, then we either need a series of steps that reproduce the problem from scratch or as mentioned, the source code.
George M
National Instruments
0 Kudos
Message 5 of 13
(4,567 Views)
I hit the post button before I was done. I recommend working through the standard support channels to try to get your issue resolved. Providing the source code to an applications engineer will help greatly.
George M
National Instruments
0 Kudos
Message 6 of 13
(4,566 Views)
I was able to recreate the issue on a much smaller scale. I've attached the zipped project folder. This is a brand new project file, I did not copy it from my old one. Follow these steps to see what I'm talking about:

1. Unzip the directory and open the lvproj file.
2. Double click on My Installer in the prject window to open the installer properties.
3. Go to Source Files on the left hand side.
4. On the right side of the source files window, you will see a the files in the directory tree. You should see parse.dll listed in the main directory as well as the data directory.
5. Remove the application from the tree by highlighting one of the files and clicking the red X.
6. Add the application back to the [ProgramFilesFolder]\DLL_test directory. You should see all files added correctly (Help.html in the main dir, parse.dll in the data dir).
7. Click OK
8. Re-open the My Installer properties and go back to the Source Files page. Help.html has been replaced by parse.dll in the main dir yet again.

That should be clear enough to reproduce what I'm seeing. Also, go to the Source File Settings page and you should see that when you highlight parse.dll, you can't select the  register COM checkbox. It is only available for Application.exe.

You can open DLL_test.lvproj in notepad  and go to the installer section to see how it lists FileInfo[2]. It shows the filename as Help.html, but the tag is parse.dll. This doesn't make any sense.
0 Kudos
Message 7 of 13
(4,556 Views)

Hello Marc,

I used your project files and removed the Application and Installer that you had built and rebuilt them.  I wasn't able to reproduce the issue with the renaming/moving of the parse.dll and Help.html files but I did see that I was unable to register the DLL.  The "Register COM" checkbox was always grayed out whether the file was located in the data folder or in the top level directory.  I'll keep you posted.

Regards,

Clint M
National Instruments

0 Kudos
Message 8 of 13
(4,476 Views)
Thanks for sticking with this. I got around it for now by registering the dll with a system exec node if there was an error when first opening the reference. It works, but there is still this underlying problem with the application builder.
0 Kudos
Message 9 of 13
(4,469 Views)

Hi Marc,

It looks like this is an issue in LabVIEW 8.5.  I have sent a Corrective Action Request (ID: 4D3CTJLV) to R&D so that they can investigate this issue further.  The current workarounds are:

1)  Build an installer which runs a bat file after installing to register your COM object (see the LabVIEW help for further information) or

2)  Use System Exec.vi to register the DLL in the code.

You are currently using System Exec.vi, and unfortunately it looks like you might have to keep using this for right now.  Thanks for letting us know and sorry for the inconvenience.

Regards,

Clint M
National Instruments

0 Kudos
Message 10 of 13
(4,397 Views)