1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Brand-specific constants and install modes for Google Chrome.
6 
7 #include "chrome/install_static/google_chrome_install_modes.h"
8 
9 #include <stdlib.h>
10 
11 #include "chrome/app/chrome_dll_resource.h"
12 #include "chrome/common/chrome_icon_resources_win.h"
13 #include "chrome/install_static/install_modes.h"
14 
15 namespace install_static {
16 
17 const wchar_t kCompanyPathName[] = L"Google";
18 
19 const wchar_t kProductPathName[] = L"Chrome";
20 
21 const size_t kProductPathNameLength = _countof(kProductPathName) - 1;
22 
23 const char kSafeBrowsingName[] = "googlechrome";
24 
25 const InstallConstants kInstallModes[] = {
26     // The primary install mode for stable Google Chrome.
27     {
28         sizeof(kInstallModes[0]),
29         STABLE_INDEX,  // The first mode is for stable/beta/dev.
30         "",            // No install switch for the primary install mode.
31         L"",           // Empty install_suffix for the primary install mode.
32         L"",           // No logo suffix for the primary install mode.
33         L"{8A69D345-D564-463c-AFF1-A69D9E530F96}",
34         L"Google Chrome",                           // A distinct base_app_name.
35         L"Chrome",                                  // A distinct base_app_id.
36         L"ChromeHTML",                              // ProgID prefix.
37         L"Chrome HTML Document",                    // ProgID description.
38         L"{8A69D345-D564-463c-AFF1-A69D9E530F96}",  // Active Setup GUID.
39         L"{5C65F4B0-3651-4514-B207-D10CB699B14B}",  // CommandExecuteImpl CLSID.
40         {0xA2C6CB58,
41          0xC076,
42          0x425C,
43          {0xAC, 0xB7, 0x6D, 0x19, 0xD6, 0x44, 0x28,
44           0xCD}},  // Toast Activator CLSID.
45         {0x708860E0,
46          0xF641,
47          0x4611,
48          {0x88, 0x95, 0x7D, 0x86, 0x7D, 0xD3, 0x67, 0x5B}},  // Elevator CLSID.
49 
50         {0x463abecf,
51          0x410d,
52          0x407f,
53          {0x8a, 0xf5, 0xd, 0xf3, 0x5a, 0x0, 0x5c,
54           0xc8}},  // IElevator IID and TypeLib
55                    // {463ABECF-410D-407F-8AF5-0DF35A005CC8}.
56         L"",       // The empty string means "stable".
57         ChannelStrategy::ADDITIONAL_PARAMETERS,
58         true,  // Supports system-level installs.
59         true,  // Supports in-product set as default browser UX.
60         true,  // Supports retention experiments.
61         icon_resources::kApplicationIndex,  // App icon resource index.
62         IDR_MAINFRAME,                      // App icon resource id.
63         L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-"
64         L"924012149-",  // App container sid prefix for sandbox.
65     },
66     // A secondary install mode for Google Chrome Beta
67     {
68         sizeof(kInstallModes[0]),
69         BETA_INDEX,     // The mode for the side-by-side beta channel.
70         "chrome-beta",  // Install switch.
71         L" Beta",       // Install suffix.
72         L"Beta",        // Logo suffix.
73         L"{8237E44A-0054-442C-B6B6-EA0509993955}",  // A distinct app GUID.
74         L"Google Chrome Beta",                      // A distinct base_app_name.
75         L"ChromeBeta",                              // A distinct base_app_id.
76         L"ChromeBHTML",                             // ProgID prefix.
77         L"Chrome Beta HTML Document",               // ProgID description.
78         L"{8237E44A-0054-442C-B6B6-EA0509993955}",  // Active Setup GUID.
79         L"",                                        // CommandExecuteImpl CLSID.
80         {0xB89B137F,
81          0x96AA,
82          0x4AE2,
83          {0x98, 0xC4, 0x63, 0x73, 0xEA, 0xA1, 0xEA,
84           0x4D}},  // Toast Activator CLSID.
85         {0xDD2646BA,
86          0x3707,
87          0x4BF8,
88          {0xB9, 0xA7, 0x3, 0x86, 0x91, 0xA6, 0x8F, 0xC2}},  // Elevator CLSID.
89 
90         {0xa2721d66,
91          0x376e,
92          0x4d2f,
93          {0x9f, 0xf, 0x90, 0x70, 0xe9, 0xa4, 0x2b,
94           0x5f}},  // IElevator IID and TypeLib
95                    // {A2721D66-376E-4D2F-9F0F-9070E9A42B5F}.
96         L"beta",   // Forced channel name.
97         ChannelStrategy::FIXED,
98         true,  // Supports system-level installs.
99         true,  // Supports in-product set as default browser UX.
100         true,  // Supports retention experiments.
101         icon_resources::kBetaApplicationIndex,  // App icon resource index.
102         IDR_X005_BETA,                          // App icon resource id.
103         L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-"
104         L"924012151-",  // App container sid prefix for sandbox.
105     },
106     // A secondary install mode for Google Chrome Dev
107     {
108         sizeof(kInstallModes[0]),
109         DEV_INDEX,     // The mode for the side-by-side dev channel.
110         "chrome-dev",  // Install switch.
111         L" Dev",       // Install suffix.
112         L"Dev",        // Logo suffix.
113         L"{401C381F-E0DE-4B85-8BD8-3F3F14FBDA57}",  // A distinct app GUID.
114         L"Google Chrome Dev",                       // A distinct base_app_name.
115         L"ChromeDev",                               // A distinct base_app_id.
116         L"ChromeDHTML",                             // ProgID prefix.
117         L"Chrome Dev HTML Document",                // ProgID description.
118         L"{401C381F-E0DE-4B85-8BD8-3F3F14FBDA57}",  // Active Setup GUID.
119         L"",                                        // CommandExecuteImpl CLSID.
120         {0xF01C03EB,
121          0xD431,
122          0x4C83,
123          {0x8D, 0x7A, 0x90, 0x27, 0x71, 0xE7, 0x32,
124           0xFA}},  // Toast Activator CLSID.
125         {0xDA7FDCA5,
126          0x2CAA,
127          0x4637,
128          {0xAA, 0x17, 0x7, 0x40, 0x58, 0x4D, 0xE7, 0xDA}},  // Elevator CLSID.
129 
130         {0xbb2aa26b,
131          0x343a,
132          0x4072,
133          {0x8b, 0x6f, 0x80, 0x55, 0x7b, 0x8c, 0xe5,
134           0x71}},  // IElevator IID and TypeLib
135                    // {BB2AA26B-343A-4072-8B6F-80557B8CE571}.
136         L"dev",    // Forced channel name.
137         ChannelStrategy::FIXED,
138         true,  // Supports system-level installs.
139         true,  // Supports in-product set as default browser UX.
140         true,  // Supports retention experiments.
141         icon_resources::kDevApplicationIndex,  // App icon resource index.
142         IDR_X004_DEV,                          // App icon resource id.
143         L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-"
144         L"924012152-",  // App container sid prefix for sandbox.
145     },
146     // A secondary install mode for Google Chrome SxS (canary).
147     {
148         sizeof(kInstallModes[0]),
149         CANARY_INDEX,  // The mode for the side-by-side canary channel.
150         "chrome-sxs",  // Install switch.
151         L" SxS",       // Install suffix.
152         L"Canary",     // Logo suffix.
153         L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}",  // A distinct app GUID.
154         L"Google Chrome Canary",                    // A distinct base_app_name.
155         L"ChromeCanary",                            // A distinct base_app_id.
156         L"ChromeSSHTM",                             // ProgID prefix.
157         L"Chrome Canary HTML Document",             // ProgID description.
158         L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}",  // Active Setup GUID.
159         L"{1BEAC3E3-B852-44F4-B468-8906C062422E}",  // CommandExecuteImpl CLSID.
160         {0xFA372A6E,
161          0x149F,
162          0x4E95,
163          {0x83, 0x2D, 0x8F, 0x69, 0x8D, 0x40, 0xAD,
164           0x7F}},  // Toast Activator CLSID.
165         {0x704C2872,
166          0x2049,
167          0x435E,
168          {0xA4, 0x69, 0xA, 0x53, 0x43, 0x13, 0xC4, 0x2B}},  // Elevator CLSID.
169 
170         {0x4f7ce041,
171          0x28e9,
172          0x484f,
173          {0x9d, 0xd0, 0x61, 0xa8, 0xca, 0xce, 0xfe,
174           0xe4}},   // IElevator IID and TypeLib
175                     // {4F7CE041-28E9-484F-9DD0-61A8CACEFEE4}.
176         L"canary",  // Forced channel name.
177         ChannelStrategy::FIXED,
178         false,  // Does not support system-level installs.
179         false,  // Does not support in-product set as default browser UX.
180         true,   // Supports retention experiments.
181         icon_resources::kSxSApplicationIndex,  // App icon resource index.
182         IDR_SXS,                               // App icon resource id.
183         L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-"
184         L"924012150-",  // App container sid prefix for sandbox.
185     },
186 };
187 
188 static_assert(_countof(kInstallModes) == NUM_INSTALL_MODES,
189               "Imbalance between kInstallModes and InstallConstantIndex");
190 
191 }  // namespace install_static
192