06-18-2007 07:35 AM
Travis,
Yes that thread is exactly the problem. But you have to understand the implications of that posted solution. I've written dozens of little applications and big applications in labview at my company over the last few years. There are dozens of little executables being used all over. Some are just slick GUI's to look stuff up in databases, and some are huge multi-threaded burn-in test racks. So over about 50 or 60 comuters we need to maintain about three dozen labview applications written in different versions of labview. Again some of these are very simple apps, but they still have to be maintained because people need them.
This bug effectively means any application I built in 7.1 needs to be regenerated in 7.1.1 or later if we are going to keep using it. You can't install a 7.1 runtime engine without breaking the 7.1.1 runtime engine. I am going to say here that that type of problem is an unacceptable issue that is just as bad as broken code. It should have been tested for and found by NI long before the 7.1.1 release. The solution to that thread is fine if you are only worried about two computers. But when you have to maintain these applications across 60 computers this suggested solution is a huge inconvenience. And I believe 36 of those computers need DAQmx.
So we have to not just install, but maintain these PC's. Hard drives crash, new computers are bought, new installations have to be made for new programs I write, etc. So say someone would like to install one of my labview executables. The IT guy who does the installation has to know what labview version this application was written in and what labview version any other application on that PC is as well. If it was written in 7.1 he will need to first check to see if there is a 7.1.1 runtime on the PC, uninstall it, then install the 7.1 runtime, then reinstall the 7.1.1 runtime. Or if the PC is already carrying a 7.1 runtime and the new application tries to install a new 7.1 runtime it will simply uninstall the old one and you will be left with no runtime engine.
I also need to use DAQmx 7.5 or later. 7.4 and eariler had a bug that I posted about at the time, where the property to tell you the current sample index in the output buffer would reset to zero as soon as you stopped a DAQmx task. If you stopped a task you couldn't tell what index in the buffer you stopped at (it always returned zero), so you had no idea what voltage you stoppped at and you couldn't build a ramp back to zero. Anyway it was fixed in DAQmx 7.5, so I have to use at least that version, which means a 7.1.1 runtime on 36 computers even though they all carry labview executables from 7.1. You can see that for an IT department, maintaining these installations quickly turns into a big look-up table of how to carefully install each application without breaking another installation.
So this is my point, that a simple installer bug can turn into a massive headache, and it can cost just as much time as broken code. Once you compile an exe sometimes you'd like to wash your hands of it. But now I need to go back and rebuild 30 something executables in 7.1.1 or 8.2 just because of the 7.1 installer bug.
06-20-2007 10:54 AM
Hello Billings11 -
Thank you for your posts and detailed feedback. I would like to address some of the MSI concerns that you had brought up a few posts back in the thread.
You are correct in pointing out that NI's MSIs do not function as normal MSIs. We made the decision to create functionality which would extend MSI and allow us to create more robust installers. Our current installer framework acts as a supervisor over the installation. It has the ability to mark and match dependencies (more functionality than the MSI reference count) which are important when other NI products are being installed or if any product is uninstalled. The installer framework also provides a lookup service to all of the MSIs which can provide any installer with specific information about other NI products installed on the machine, paths to those products, etc. The framework gives the ability for groups within NI to create separate installation parts (MSIs) which can be brought together into one installer without recreating a single distribution MSI from scratch.
Extending functionality outside of normal MSIs also means that installation via a network group policy is no longer supported.
To support deploying through Active Directory, we would need to remove our installer framework instead and ship each piece of software as a single MSI. The features our framework provides would be eliminated, and much of the burden of tracking dependencies would be pushed onto the customer. Installation procedures would most likely become more complex, as each MSI would also be relatively blind to the current set of NI products on the machine.
To distribute the NI installers to many machines, our recommendation would be to place the installer on the network, use Active Directory to define the policy, and then distribute the software through Microsoft SMS (or a similar tool) by running the installer in silent mode. This involves creating a spec file, and then running 1 or more installers silently as part of a batch file. You had already brought up this point in a previous post:
"You might suggest running batch files as login scripts. But it takes longer for someone to create and test a batch file silent install than new installation in a real MSI file. You have to look up all the right switches to run the installation in silent mode with the right options - its a pain. Its really better in the long run to take the time to recreate NI's installation from scratch so you can have a real windows installer from that point forward."
I completely agree that the process for creating a batch file for the silent installation of NI products should be improved. We are working hard to create a process in which you can 1) create a spec file simply and quickly and 2) be able to run the installer easily in silent or basic mode. These improved features should reduce the issues your IT would have with NI software distribution through Microsoft SMS (or equivalent product).
Thanks again for your comments and have a great day!
Andrew W
Software R&D
National Instruments
06-21-2007 08:50 AM
Andrew,
I think you have made a mistake in your reasoning and decision making when it comes to installers.
Windows installer and other installers also have this ability as well. For example, when we install the latest Visual Studio or other applications it checks to see if the Dot Net framework is installed. Even something like our United Parcels Service software checks for other dependencies like an Access Runtime engine, MDAC, and other supporting components. One of the more difficult problems we have with the NI installer is that it does not gather the correct information for the installed products for an easier install. The MS Office Report toolkit is a good example because it does not install it in the proper directory when we upgraded from 7.1 to 8.2.
Also, sometimes the installers install extra components. In the NIDaq version 7.5 it auto installs LV 7.1.1 Runtime which ends up causing us problems when we add a second or third 7.1 app later. We never know what we are actually installing along with what we think we are installing.
Unfortunately, this is the very state we are in now. A one time install may go well, however upgrades can be very difficult. Not being able to adequately deploy the solutions takes a lot more time. For example we created a scratch install of a computer that needed
06-21-2007 08:50 AM
That is OK. Group policies allow you to install in an order within that policy. All we would need to do is know what the prereqs are just like any other package. You have taken the stance of trying to dumb-down the installer so you don't need to know what any dependencies are for things to work. But you have really cost us an inexcusable amount of functionality.
That is a lot of money. We are already paying $4500 per labview license. We shouldn't have to buy more expensive software to do something any properly made installer should do automatically.
As I pointed out earlier, this is almost impossible to get all the apps installed because the spec options are limited and from what I can see, undocumented.
When will they be done with this? We're certainly not upgrading ever again to any version of NI software that doesn't have this in an implementation consistent with what a modern installer should be in 2007.
06-22-2007 08:34 AM - edited 06-22-2007 08:34 AM
tst said about getting around local variables:
A common method for the issue you brought up is creating a cluster and passing that cluster through the shift register. Whenever you need a variable (a cluster element) you bundle and unbundle as needed.
Yeah I can see what you mean tst, that sounds like the best option if you don't need that data as part of a GUI. But what if you have waveform graphs on a front panel, or something like that?. You can't bundle them because you can't get to the specific control properties if its bundled. Usually I will be programatically setting graph scales and colors and stuff like that. So if you wrote a "virtual oscilloscope" type application you would have to pass almost all of that GUI data in separate shift registers. It would just be awesome to get something like a local variable that points to the original control's memory instead of copying it. I bet if they made it a priority they could come up with a cool a way to implement that while still staying true to dataflow.
Message Edited by billings11 on 06-22-2007 08:38 AM
06-22-2007 08:42 AM - edited 06-22-2007 08:42 AM
Message Edited by Ben on 06-22-2007 08:44 AM
06-23-2007 03:09 PM
Sure you can. Have a look here for an example which even shows delegating the code to a subVI (open Demo.vi).
@billings11 wrote:
You can't bundle them because you can't get to the specific control properties if its bundled.
06-23-2007 03:11 PM
06-25-2007 05:49 AM - edited 06-25-2007 05:49 AM
tst,
Yeah I was sort of playing with that after my post last week. I knew you could get to the array of references, but I never tried teh To More Specific Class functions. You can pretty much still get to everything.
Message Edited by billings11 on 06-25-2007 05:52 AM
06-27-2007 03:39 PM
So we have been working for a coupe of days now continuously trying to get a silent install going for labview 8.2 and all the other pieces of NI software to go on a development PC. Here are our issues so far:
While trying to use the methods they describe for installing