10-06-2021 02:46 AM
Hi,
in the meantime another patched version of CVI and its RT is available, 2020 f2 (unfortunately no CVI 2021).
I'd like to ask NI personnel to provide some information about the changes made.
10-06-2021 02:33 PM
CVI 2020: build number 49152
CVI 2020 f1: build number 49252
CVI 2020 f2: build number 49352
10-13-2021 08:21 AM
The fix of patch f2 is listed here and addresses an issue with the DDE client.
Also the fixes of patch f1 are listed there.
04-26-2023 09:20 AM
update: patch f3 can be installed with an old, perpetual license, one doesn't need the new annual license model, fortunately
CVI 2020: build number 49152
CVI 2020 f1: build number 49252
CVI 2020 f2: build number 49352
CVI 2020 f3: build number 49452
04-27-2023 12:18 AM
Hi Wolfgang
There is no read me for f3
Do you know what has changed/added ?
Thanks
Gabel daniel
04-27-2023 02:09 AM
No... I have no clue, but I hope that in some weeks documentation will be updated here
05-02-2023 06:21 AM - edited 05-02-2023 06:22 AM
A bitofftopic in this thread, anyway... has anyone managed to get the CVI build number at build time or at run time? _CVI_ preprocessor constant stops at "tiny" version number.
05-02-2023 06:34 AM - edited 05-02-2023 06:39 AM
...not using CVI functions, the suggestion of a GetCVIVersionEx function only reached the 'Under Consideration' status...
....but you suggested an alternative solution yourself, here 😁
05-02-2023 06:50 AM - edited 05-02-2023 06:52 AM
I developed this function based on some WIN SDK document; it retrieves all version infos stored inside an .exe file. On my CVI2017 install it gives "17.0.0.295" (build number should be the last field): is this what you are looking for?
//--------------------------------------------------------------------------
//
// Funzione VersioneFile
//
//--------------------------------------------------------------------------
/// HIFN VersioneFile
/// HIFN Function to retriev version info stored inside an .exe file
/// HIRET Error code - '0' if no error detected
/// HIPAR file/pathname of the program to elaborate
/// HIPAR versione/String where to tore informations retrieved
int CVIFUNC ET_VersioneFile (char *file, char *versione)
{
void* tempBuffer = NULL;
void* versionInfo = NULL;
int line, error = 0;
char langName[16];
UINT len;
DWORD infoSize;
DWORD uselessParm;
DWORD* tempDWORD;
if ((infoSize = GetFileVersionInfoSize (file, &uselessParm))) {
nullChk (versionInfo = malloc (infoSize));
if (!GetFileVersionInfo (file, 0, infoSize, versionInfo))
goto Error;
/* Get the Language and Code Page */
/* The below 'hex' value looks a little confusing, but essentially */
/* it is the hexidecimal representation of a couple different values */
/* that represent the language and character set that we are wanting */
/* string values for. 040904E4 is very common, it means: */
/* US English, Windows MultiLingual characterset -- or: */
/* 04------ = SUBLANG_ENGLISH_USA */
/* --09---- = LANG_ENGLISH */
/* --11---- = LANG_JAPANESE */
/* ----04E4 = 1252 = Codepage for Windows:Multilingual */
if (VerQueryValue (versionInfo, TEXT("\\VarFileInfo\\Translation"),
((void **)(&tempDWORD)), &len)) {
/* lVerPointer is a pointer to four 4 bytes of Hex number, first two */
/* bytes are language id, and last two bytes are code page. However, */
/* Lang_Charset_String needs a string of 4 hex digits, the first two */
/* characters correspond to the language id and last two the last two*/
/* character correspond to the code page id. */
langName[0] = 0;
sprintf (langName, "%04hX%04hX", LOWORD (*tempDWORD),
HIWORD (*tempDWORD));
if (langName[0]) {
sprintf (file, "\\StringFileInfo\\%s\\ProductVersion", langName);
if (!VerQueryValue (versionInfo, TEXT (file), &tempBuffer, &len) == 0)
if (tempBuffer)
strcpy (versione, (char *)tempBuffer);
}
}
}
Error:
if (versionInfo) free (versionInfo);
return error;
}
05-02-2023 09:45 AM - edited 05-02-2023 10:00 AM
@Wolfgang: You can't imagine how embarrassed 😳 I am right now: as an excuse I could mention advancing age and so on, but I'm actually a bit worried about my mental health.
I remember reading something on this forum, but not writing it myself! 🤣
It was 2016, after all.
@Roberto: qua la situazione è grave davvero 😅, e pensa che ci ho sbattuto la testa per un paio d'ore. Ovviamente anche la tua soluzione risolve il "problema".
Thanks a lot!