/*
 *  openvpnmsica -- Custom Action DLL to provide OpenVPN-specific support to MSI packages
 *
 *  Copyright (C) 2018-2021 Simon Rozman <simon@rozman.si>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2
 *  as published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#ifdef HAVE_CONFIG_H
#include <config.h>
#else
#include <config-msvc-version.h>
#endif
#include <winresrc.h>

#pragma code_page(65001) /* UTF8 */

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

VS_VERSION_INFO VERSIONINFO
    FILEVERSION OPENVPN_VERSION_RESOURCE
    PRODUCTVERSION OPENVPN_VERSION_RESOURCE
    FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE | VS_FF_PATCHED | VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD
#ifdef _DEBUG
    FILEFLAGS VS_FF_DEBUG
#else
    FILEFLAGS 0x0L
#endif
    FILEOS VOS_NT_WINDOWS32
    FILETYPE VFT_DLL
    FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "The OpenVPN Project"
            VALUE "FileDescription", "Custom Action DLL to provide OpenVPN-specific support to MSI packages"
            VALUE "FileVersion", PACKAGE_VERSION ".0"
            VALUE "InternalName", "OpenVPN"
            VALUE "LegalCopyright", "Copyright © The OpenVPN Project"
            VALUE "OriginalFilename", "libopenvpnmsica.dll"
            VALUE "ProductName", "OpenVPN"
            VALUE "ProductVersion", PACKAGE_VERSION ".0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
