LabWindows/CVI Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

I develop software for many older systems that can not be upgraded or are running windows embedded.  I just tried to create a new application and could not install it from my distribution.  I found out I had to go and edit the setup.ini.  NI Installer Requires Windows 10 64-Bit (Version 1507) or Newer.  I've been using CVI since the DOS days.  One of the advantages has always been that I could recompile and I generally didn't have to worry about Windows updates screwing up my software.  This change seems ridiculous all of a sudden.

 

At present, when you double-click on a .cws or .prj file the most recent version of the CVI IDE is launched with the selected .prj or .cws file loaded.

However, both project and workspace files include the release of CVI they are developed on, so it would be possible to search in the system whether that release is installed and open it instead of the most recent one. This is crucial when you need to modify a program already deployed to a customer but do not want / is not possible to update the target machine configuration installing a newer Run-Time module than the one already installed.

At present you have no control over this event, but consider also that in case you make modifications to the UIR files also, it may become difficult to revert to the original IDE format; for this reason when I need to update an old program I need firstly to open the project file in notepad to see which CVI release to use for this.

 

If automating the launch in the correct release is not possible, at least issue a warning stating the difference in the IDE release used with respect to the original one.

The most recent version of the C runtime that comes with the Phar Lap ETS is msvcr90 from 2008. That really restricts the usage of more recent third-party libraries on real-time targets shipping this operating system.

 

Support for msvcr{100,110,120,140}, even with stubs for most of their functions, would be greatly appreciated.

The following choices are availables:

[Program Files]
[Program Files (x86)]
[Desktop]
[Windows Volume]
[Windows]
[System]
[SysWOW64]
[System16]
[Program Data]
[Public Documents]
[Common Files]
[Common Files (x86)]
[Start»Programs]
[Start Menu]
[Startup]
[Temp]
[Favorites]
[Fonts]
[Templates]
[Send To]
[National Instruments]
[National Instruments (x86)]
[LabVIEW]
[CVI]
[CVI Shared]
[CVI Public Documents]
[IVI Std Root]
[VXI PnP]
[VXI PnP OS]

 

The User folder corresponding to CSIDL_PROFILE is not available. And no way to use it.

It would be great if NI could provide standard translations of the NI runtime message file msgrte.txt in commonly-used languages.

 

Whilst we can get translations done ourselves, it is normally done by translators who have little knowledge of the runtime context so the quality is rather variable; also, I get the feeling that we are duplicating effort that may have been already spent elsewhere.

 

If it helps, I for one would be willing to pay for a decent translation.

Hi,

 

It would be handy when automating the build process with the CVI ActiveX interface to have the ability to change the active distribution, as mentioned in this thread:

http://forums.ni.com/t5/LabWindows-CVI/Setting-active-distribution-kit-using-ActiveX/m-p/504888/highlight/true#M28708

 

Thanks.

As discussed here, distributing the code of

 

#include <ansi_c.h>
int main ( int argc, char *argv [] )

{
    printf ( "%s", "Hello world" );

 

generated in CVI2013 results in a distribution kit of 74 MB minimum...  Using the NI default settings results in 219 MB...

 

Yes, I do have TB drives, but I dislike bloated software.

It would be helpful if the distribution kit had three additional options;

 

  1. Compress all of the files and subfolders into a single *.zip file.
  2. An option to convert the *.zip to a self extracting archive (SEA) file *.exe.
  3. An option to automatically run "Setup.exe" after completing the file extraction from the SEA.

Option 3 is only available if option 2 is selected and option 2 is only available if option 1 is selected.

 

The above can be done with external tools and is helpful when distributing via a web-download, Dropbox or another internet based system. Installation for the end user is then simply a case of clicking a single link and running a single file. After that they are prompted by the usual installation dialog.

I usually add a lot of files to my project (images, documents, ...) because in this way their path is taken as a relative path when building a distribution kit.

But in this way, if I press "Mark files in project" all the files are marked to search in, and so CVI gets a lot of errors for the files that can't be opened because they are not text files.

Using "Mark all c" and "Mark all h" extends the research also inside CVI installation directory, and (usually) this is not what I want.

 

I propose to replace "Mark files in project" with "Mark source files in project" or to add this last option to the existing ones.

I have had severe problems in development, due to a high synergy between my lack of attention and CVI behavior in search/replace dialogs.

I am talking about the fact that Find/Replace parameters [namely search directories] are stored at REGISTRY level, so that they remain the same across different workspaces.

Having to work with different version of the same software product, I have found myself looking into the wrong sources, or even doing mass updates, due to the fact that different projects have identically named sources and includes, just in different directory trees, and rapidly switching from one workspace

to the next I didn't "mind the step"

My suggestion, thus, is to store find/replace parameters at workspace or project level, so as to avoid the aforementioned inconvenience

I would like to have the possibility to store the uir-file not as a tui-file (old-fashioned ini file), instead as a xml file.

On my development machine, I have access to various library functions in the NI-Vision library.  Some of these functions apparenly require the NI-Vision Acquistion license, and some of these require the NI-Vision Runtime license, and some of these require no license.  They are all mixed together and I can find no documentation anywhere that tells me which license(s) I need to put on the deployed computers given what library functions I call in my application.  The only reliably way I have found to determine this is to deploy a test application to a PC that is not licensed and see if the function call fails with an ERR_UNREGISTERED.  It seems that there should be a better way.  Thanks.

Using CVI 2010 you can create different Custom Configurations

But I think that if a developer creates a new Custom Configuration (debug or release, x86 or x64), he wants to distribute it to a target machine. I don't create a Custom Configuration to have it run on my developer machine!

I've already asked to NI Support, and this can't be done in an automatic way.

 

So I suggest a new feature in the "Edit Installer" window to specify which Configuration (Default or Custom) to include into the installer (see attachments)

Download All

We use the our development and target installation PC's to support both new and legacy projects that were developed under earlier versions of IVI Compliance.  As the only current way to change IVI versions is to uninstall and re-install, we are stuck using the earliest one as a common denominator.   With hundreds of old projects to re-compile, frequent across-the-board updates are not possible.  Newer versions of instrument drivers such as HSDIO are only compatible with later versions of IVI. 

 

I would like to have a reasonably easy way to switch IVI versions, so we can support both old and new code from our development PCs.  Even a batch file and some registry edit instructions would be better than the way it is now.  However, that would limit its use in a secure environment where the users don't have general admin privileges.

 

From an NI business perspective, this may be blocking customers from purchasing upgrades or new NI products.

It would be handy to be able to use some of the special variables like %CVIPROJDIR% and %CVITARGETPRODVER% in the "Edit Installer" dialog box, mostly so that the "Output directory" name can be autogenerated.  Thanks.

Have you ever wanted to run a customizable batch file or executable after a CVI Application has been deployed? In my case I do. In my case, I want to automatically run a batch file that sets the Environment Paths in Windows of my executables and DLL's after the installation is completed. To make this work currently I am requiring the person who is installing the application to manually run a batch file to set up the Environment Paths in Windows. Potentially error prone if the paths are not set for my applications. My batch file would be written as: "Set Path <etc> from the command line prompt. CVI 2010 does not have this capability.

 

In older versions of CVI I think this feature existed but I do not know which CVI version National Instruments removed it from.

 

There may be other cases that I might want to run an executable(s) that sets up the application up in a default situation for first time use only.

 

I am sure there are other cases where other CVI Developers who would want this capability too.

 

In TestStand this feature exists in the "TestStand Deployment Utility" under the Custom Commands tab.   

support of Unicode character set would be most welcome

 Hi

 

It would be nice for the distribution to be in one installer able file.

Which i could then send to a customer.

 

Regards

Shakeel

The additional columns of a tree can be hidden using SetTreeColumnAttribute() with ATTR_COLUMN_VISIBLE parameter. This is an easy and effective way.

For a table this attribute isn't supported, so you can use some workaround that requires more coding and have some disadvantages (for example if you set the width to the minimum value of 1, the user can increase it with the mouse...).

I think that the ATTR_COLUMN_VISIBLE parameter would solve this needs in the perfect way.

From the CVI Help:

 

Some Interface to Win32 Application Programmatic Interface (API) functions have the same name as some LabWindows/CVI functions, causing a naming conflict. You must include the Interface to Win32 API include files before the LabWindows/CVI include files. LabWindows/CVI automatically resolves the conflict by using the LabWindows/CVI implementation of the function. To use the Win32 API implementation of the function instead, define the SDK_CONFLICT_PRIORITY macro in the Compiler Defines section of the Build Options dialog box.

If you enable the SDK_CONFLICT_PRIORITY macro, you cannot use the following LabWindows/CVI functions and should use the Win32 API implementation instead.

Formatting and I/O Library

  • CloseFile
  • OpenFile
  • ReadFile
  • SetCommitMode
  • WriteFile

Utility Library

  • Beep
  • CopyFile
  • DeleteFile
  • GetFileSize
  • GetFileTime
  • GetSystemTime
  • SetFileTime
  • SetSystemTime
  • inp
  • inpd
  • inpw
  • outp
  • outpd
  • outpw

 

Based on my experience these name conflicts have no advantages, and create a lot of problems: usually I use the CVI implementation, but it happens that after some time I need the Win32 API implementation of one of these functions (GetSystemTime(), for example).

In this situation I must heavily modify my code, changing the calls to all the above functions.

 

I don't like these naming conflicts at all.

I suggest that a "_CVI" prefix (or something like that) is added to the CVI implementation: an old project will recompile perfectly simply adding this prefix to the calls, without modifications to variables, structures, ...