LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Distribution Kit size / contents in CVI 8.0

 
I had the CVI 6/7 distribution kit concepts clear, but I now need some help understanding CVI 8.0 kits, specifically:
  1. It appears we are now limited to *target* machines (not just the development platform) with Win 2000 or later. True?
  2. Looking at Run-Time Engine (RTE) sizes from the links here shows the CVI 8.0 RTE jumped to 30MB from the 3.1MB for CVI 7.1. Is there any chance of a slimmer version being posted, perhaps without rarely-used features?
  3. I see that the Windows Installer program "instmsiw.exe" is included in the distribution kits CVI 8.0 makes.  Why is it needed at all if it is part of Win 2000/XP? 
  4. What is the smallest distribution kit one can make for a one-line "Hello world" program? I can get it down to 8.2MB without any RTE (but still including the 1.8MB "instmsiw.exe").  Adding in the "standard" RTE to the build brings it up to 15.9MB (!).

By the way, I also should say that the ability to have multiple build definitions, and more overall control of the installation is a real plus to me.

Thanks in advance,

Ian

0 Kudos
Message 1 of 10
(5,532 Views)
Hi Ian,

Let me see if I can help answer your questions:

1.  True.  The CVI runtime engine is only supported on Win2k or later, and several other elements of our distribution framework also exclude support for Win9X and/or NT.  Because of this, we cannot support distributing to these platforms.

2.  Those numbers are a bit misleading.  First of all, the 7.1 runtime you reference is just an .msi file, while the 8.0 runtime is a full distribution (with a setup.exe, etc).  About a third of that 30 MB is support components or other overhead for the new distribution framework.  The actual size of the CVI runtime elements is about 20 MB, but this includes ActiveX support, .NET support, low-level library support, as well as analysis library support files*, none of which is included in the 7.1 .msi file.  If you only want to distribute the standard CVI runtime support (includes analysis), you can deselect all but the "Standard Run-Time" item under LabWindows/CVI Run-Time Engine on the Drivers & Components tab.  This will bring the runtime's size contribution down to about 8 MB.  About 5 MB of that is analysis library support, which most users will need.  The addition of analysis runtime support accounts for the main size difference between 7.1 and 8.0.

3.  Win2k only includes version 1.1 of the Microsoft Installer framework, though our distributions require version 2.0.  If the target machine does not have the right version, your distribution will automatically upgrade it.  Even if you know your target machine has the right version, you cannot exclude instmsiw.exe from your distribution, or it will not install.

4.  You got it right.  A bare-bones installer is going to be just over 8 MB.  Adding the standard CVI runtime tacks on about another 8 MB.

I'm glad you're benefitting from the increased control and functionality of the improved distribution feature.  It is designed to make it easy to get your application working on your target machines without having intimate knowledge of the various components or libraries it depends on.  It also correctly handles upgrades and dependencies for your application and any drivers or components distributed with it.  Providing a framework that can handle this ultimately comes at the cost of increased installer size -- no free lunch!  Unless you have very strict size restrictions, the benefits are well worth the cost.

Hope this helps clear things up.

Mert A.
National Instruments

*Pre-8.0, the analysis library was a static lib that was linked right into any application using analysis functions.  Now, the lib just dynamically loads a dll, so a number of support dlls must be distributed along with the runtime engine.
Message 2 of 10
(5,532 Views)

 


Mert A. wrote:
Hi Ian,

...
2.  Those numbers are a bit misleading.  First of all, the 7.1 runtime you reference is just an .msi file, while the 8.0 runtime is a full distribution (with a setup.exe, etc). 
...

Mert A.
National Instruments


Hi Mert, would you clarify me a detail on what you said: the 7.1 runtime I can download from NI site is actually the real run-time engine or is simply an installer that needs some other software more maybe donwloaded during installation from the Internet?

Till now I am creating a full distribution kit including the RTE but in some case it would be better to distribute the RTE and the application in separate packages. In this case I need to know if the rte installer is a standalone unit or if I need to connect to the internet the machine into which I need to install it.

Thank you

Roberto



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 3 of 10
(5,508 Views)

Hi Roberto,

No need for alarm -- unless you need support for ActiveX controls, the single .msi file is all you need for 7.1-built applications.  The 8.0 RTE requires additional components (i.e. redistribution support and math kernel libraries for analysis) which are packaged along with the runtime .msi into a "meta" installer (like the ones that you can build with CVI 8.0).  What I meant to point out was that much of the size difference of the two downloads was due to these additional components and the overhead of packaging these components into a distribution.  Of course, if you intend to distribute the 8.0 RTE, you will need the whole package on the target machine -- not just CVIRTE.msi.

I'm sorry for any confusion.

Mert A.
National Instruments

0 Kudos
Message 4 of 10
(5,492 Views)

Mert,

Thanks for the helpful and detailed response. Since it was so good, I want to ask a couple of follow-up questionsSmiley Very Happy

First: Re #2 above (choosing "Standard Run-Time" only): In the help on this topic, it warns that:

If you check only a subset of the items under the top-level LabWindows/CVI Run-Time Engine item, such as the Standard Run-Time item or the Instrument Driver Run-Time item, LabWindows/CVI includes the files associated with those items as merge modules (.msm files). Those files are considered part of the application, so the LabWindows/CVI Run-Time Engine does not appear in the Windows Add or Remove Programs list and is not otherwise known to exist on the target system. This may cause problems if existing or future versions of the LabWindows/CVI Run-Time Engine are installed on the target computer.

Could you please explain what problems might lie ahead for my users regarding other/future versions of the RTE?  Is it that they might have to uninstall the old app if a future RTE is not backward compatible? Or are there perils in the future if one has multiple apps, each with their own, (unique version) .msm-based RTE? What if a user has an older app with the 7.1 RTE installed and then installs a new app that just gives them the .msm-based 8.0 RTE?

Second: Re: Setup.exe:  I distribute my app via a self-extracting file that WinZip creates by zipping up the distribution kit. When it runs, it has the capacity to unzip and then run an unzipped file, which in my case is the setup.exe in the distribution kit. Once that program terminates, WinZip can delete the unzipped files of the distribution kit. The problem in the past is that there were scenarios where "setup.exe" terminated before the installation was complete, as it handed things off to the MSI installer program. From what I have seen so far "setup.exe" seems to persist until my app is installed. Are there still scenarios where setup.exe may terminate before my app is installed? (e.g. if Windows installer 2.0 needs to be installed first) Or can I now create installations kits that neatly clean up after themselves?

Many thanks in advance!

--Ian

0 Kudos
Message 5 of 10
(5,439 Views)
Hello Ian,

I'm sorry about the delayed response, but I have been on vacation.  In response to your questions:

1.  I would disregard the last portion of that exerpt.  All versions of the RTE dlls will be installed using the same component identifier, whether installed via .msm or .msi; this should ensure that these files are properly upgraded and will not be uninstalled if another installed app needs them.  Upgrading from the RTE from 7.1 to 8.0 by a distribution installation is perfectly safe.  I'm sorry for the misleading warning.

2.  With CVI 8.0 distributions, setup.exe should not exit until the installation has completed.  The only exception is if any of your installed files use the "Launch After Installation" option with the "Launch and continue" launch style.  The installer (and setup.exe) will exit without waiting for those programs to complete.  The only warning I would issue about cleaning up the extracted installation files is that doing so prevents the user from repairing/modifying the installation later, as these actions need the distribution source files.  If you would like your users to be able to repair their installations, should they later somehow become mangled, I would recommend extracting the files to a cache directory of your choosing (NI uses c:\National Instruments Downloads\ for our self-extracting exes), running the installer from that location, and leaving the files.  They can delete the files themselves, if disk space is an issue.  If your distributions contain any of the larger drivers, like DAQ, you may not want to cache, as your installer will take up several hundred megs.

I hope this helps.

Mert A.
National Instruments
Message 6 of 10
(5,380 Views)

Thanks again, Mert! Very helpful answers.

--Ian

0 Kudos
Message 7 of 10
(5,342 Views)
Hello Mert,

we just have bought CVI 8.0. We have been using 5.0 and 6.0 for years and now wanted to benefit from the new features.
Thinking that an update usually should extend the possibilities, first of all it is bad that with 8.0 we can not offer Win9x/ME applications to our customers any more.
So we have to stick to 6.0 for those cases. (Even worse that we can not save 8.0's uir files in a 6.0 format). All quite disappointing, but no matter for THIS thread.

The problem we actually have is:
In 8.0, I opened a small CVI 6.0 project,  with only an UIR and some callback functions, no analysis, no drivers etc. In 6.0, we already had build a distribution kit.
When entering the distribution manager now, 8.0 says that it has found an earlier distribution kit definition (the one from 6.0) and asks me if this should be converted. I do so.  In the " Drivers and Components" dialog, CVI as a default then only marks the "Standard Runtime" - that looks OK. Building the distribution kit makes no problem, it is "only" 8MB. Running this distribution kit on a "fresh" machine also makes no problems. But when starting the installed program, we get the following error (translated from german):

"The dynamic Link Library cvirte.dll could not be found in the specified path c:\...." (see attachment for original message)

It is the same if we make a new small project in 8.0, where we only want the Standard runtime to be used -> we are not able to create ANY correct distribution kit < 40 MB at the moment (quite embarrassing that we today already had to sent a CD to a customer who usually gets our software by email).

We already contacted the support line in Munich, and they told us they can reproduce the problem, but do not know why.
So: what is wrong ?
If we can not downsize the distribution kit to < 10MB (at least for those simple applications), I fear we have to migrate from CVI to another development system - even though we don't want to .


Message Edited by H-1 on 04-06-2006 05:08 AM

Message Edited by H-1 on 04-06-2006 05:08 AM

0 Kudos
Message 8 of 10
(5,120 Views)

Hello H-1,

I'm very sorry to hear that you have been having negative experiences with the 8.0 upgrade.  The cvirte.dll issue is a known bug for distributions built on OSes that localize the "Merge Modules" directory.  See this thread for details and a workaround.  NI will be providing a fix for this bug very soon.

We have taken the approach of making our distribution builder more powerful and providing a lot of new options and features that our users can take advantage of when creating a package to distribute their applications.  Unfortunately, this comes at a cost of installer size.  Similarly, as CVI provides new controls/libraries/features, these also increase the size of the runtime engine over the course of releases.  Clearly, if you wish to distribute drivers with your application, the size of your installer will likely be dominated by the size of any included drivers.  However, we have heard from a number of customers who have expressed dissatisfaction with the size increase of minimal distributions.  We take these concerns seriously and will look into ways to bring that size down in the future.

As it stands now, a minimal distribution including the standard CVI runtime engine will be ~16 MB.  I hope this is acceptable for your purposes.

Good luck.

Mert A.
National Instruments

 
0 Kudos
Message 9 of 10
(5,090 Views)
H-1,

One more note: if your application does not use the analysis library functions (which it sounds like it doesn't), you can slim down your distribution by another ~5 MB if you hide the nianlys.msm merge module (which is installed in the Merge Modules directory mentioned in my previous post).  This module is included as a declared dependency of the cvirte.msm ("Standard Run-Time Engine").  By moving nianlys.msm to a different directory, or changing its extension, you prevent the module from being found and included in your distribution.  You will notice a warning in the build log, but your distribution will build successfully.  This behavior was intended to allow users to allow users to omit certain bulky module dependencies (such as the MS C runtime libraries)  when the target machine is known to already have them, or otherwise not need them.  Ironically, this is the same reason that your distribution successfully built, but your app failed once installed on the target (because the CVI RTE was not installed).

This tweak should drop your distribution kit down to ~10.7 MB, which I hope you will find to be reasonable.

***NOTE***: If in the future you build distributions for apps that do use the analysis library functions, you will need to un-hide the nianlys.msm module, or explicitly add it to that distribution via the "Add Additional Module..." button on the Drivers & Components tab.

Mert A.
National Instruments
0 Kudos
Message 10 of 10
(5,083 Views)