// Application icon
1 ICON "docker.ico"

// Windows executable manifest
1 24 /* RT_MANIFEST */ "docker.exe.manifest"

// Version information
1 VERSIONINFO

#ifdef DOCKER_VERSION_QUAD
FILEVERSION     DOCKER_VERSION_QUAD
PRODUCTVERSION  DOCKER_VERSION_QUAD
#endif

BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "000004B0"
    BEGIN
      VALUE "ProductName", DOCKER_NAME

#ifdef DOCKER_VERSION
      VALUE "FileVersion", DOCKER_VERSION
      VALUE "ProductVersion", DOCKER_VERSION
#endif

#ifdef DOCKER_COMMIT
      VALUE "OriginalFileName", DOCKER_COMMIT
#endif

    END
  END

  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0000, 0x04B0
  END
END
