// Microsoft Visual C++ resource script for embedding version information.
// The format is described at:
//   http://msdn.microsoft.com/en-gb/library/windows/desktop/aa380599(v=vs.85).aspx
// The VERSIONINFO resource is described at:
//   https://msdn.microsoft.com/en-gb/library/windows/desktop/aa381058(v=vs.85).aspx


// Default values for required fields.

#ifndef RC_VERSION_FIELD_1
#define RC_VERSION_FIELD_1 0
#endif

#ifndef RC_VERSION_FIELD_2
#define RC_VERSION_FIELD_2 0
#endif

#ifndef RC_VERSION_FIELD_3
#define RC_VERSION_FIELD_3 0
#endif

#ifndef RC_VERSION_FIELD_4
#define RC_VERSION_FIELD_4 0
#endif

#ifndef RC_COMPANY_NAME
#define RC_COMPANY_NAME ""
#endif

#ifndef RC_FILE_DESCRIPTION
#define RC_FILE_DESCRIPTION ""
#endif

#ifndef RC_FILE_VERSION
#define RC_FILE_VERSION ""
#endif

#ifndef RC_INTERNAL_NAME
#define RC_INTERNAL_NAME ""
#endif

#ifndef RC_ORIGINAL_FILENAME
#define RC_ORIGINAL_FILENAME ""
#endif

#ifndef RC_PRODUCT_NAME
#define RC_PRODUCT_NAME ""
#endif

#ifndef RC_PRODUCT_VERSION
#define RC_PRODUCT_VERSION ""
#endif


1 VERSIONINFO
FILEVERSION RC_VERSION_FIELD_1,RC_VERSION_FIELD_2,RC_VERSION_FIELD_3,RC_VERSION_FIELD_4
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904B0"
    BEGIN
      // Required strings
      VALUE "CompanyName", RC_COMPANY_NAME
      VALUE "FileDescription", RC_FILE_DESCRIPTION
      VALUE "FileVersion", RC_FILE_VERSION
      VALUE "InternalName", RC_INTERNAL_NAME
      VALUE "OriginalFilename", RC_ORIGINAL_FILENAME
      VALUE "ProductName", RC_PRODUCT_NAME
      VALUE "ProductVersion", RC_PRODUCT_VERSION

      // Optional strings
#ifdef RC_COMMENTS
        VALUE "Comments", RC_COMMENTS
#endif

#ifdef RC_COPYRIGHT
        VALUE "LegalCopyright", RC_COPYRIGHT
#endif
    END
  END

  BLOCK "VarFileInfo"
  BEGIN
    // The translation must correspond to the above BLOCK inside StringFileInfo
    // langID     0x0409  U.S. English
    // charsetID  0x04B0  Unicode
    VALUE "Translation", 0x0409, 0x04B0
  END
END