// Microsoft Visual C++ generated resource script.
//
#include "chrome_exe_resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// The application icon should: have the lowest ID, be placed first, and its
// resource name should be alphabetically less than the name of any other icon
// resource (http://msdn.microsoft.com/en-us/library/ms997538.aspx).
// Note: chrome/installer/util/shell_util.cc depends on the order and number of
// icons.  To avoid breaking existing shortcuts, add new icons at the end
// (following the ordering described above).
#if defined(GOOGLE_CHROME_BUILD)
IDR_MAINFRAME           ICON                    "theme\google_chrome\chrome.ico"
IDR_MAINFRAME_2         ICON                    "theme\google_chrome\chrome2.ico"
IDR_MAINFRAME_3         ICON                    "theme\google_chrome\chrome3.ico"
IDR_MAINFRAME_4         ICON                    "theme\google_chrome\chrome4.ico"
// The SXS icon must have an index of 4, the constant is used in Chrome code to
// identify it.
IDR_SXS                 ICON                    "theme\google_chrome\chrome_sxs.ico"
#else
IDR_MAINFRAME           ICON                    "theme\chromium\chromium.ico"
#endif

// Icon for the App Lancher. Named with a leading X to keep the name
// alphabetically after IDR_SXS.
#if defined(GOOGLE_CHROME_BUILD)
// The App Launcher icon must have an index of 5 in Chrome, and 6 for SXS.
IDR_X_APP_LIST          ICON                    "theme\\google_chrome\\app_list.ico"
IDR_X_APP_LIST_SXS      ICON                    "theme\\google_chrome\\app_list_sxs.ico"
#else
// The App Launcher icon must have an index of 1 for Chromium.
IDR_X_APP_LIST          ICON                    "theme\\chromium\\app_list.ico"
#endif


/////////////////////////////////////////////////////////////////////////////
//
// GOOGLEUPDATEAPPLICATIONCOMMANDS is a "well-known" marker resource defined
// by Omaha. Executables must both be signed by Google and contain the marker
// in order to expose application commands.
//
#define IDR_GOOGLE_UPDATE_APP_COMMANDS_MARKUP 1

IDR_GOOGLE_UPDATE_APP_COMMANDS_MARKUP GOOGLEUPDATEAPPLICATIONCOMMANDS { 1L }


#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
