OLD | NEW |
---|---|
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // mini_installer.exe is the first exe that is run when chrome is being | 5 // mini_installer.exe is the first exe that is run when chrome is being |
6 // installed or upgraded. It is designed to be extremely small (~5KB with no | 6 // installed or upgraded. It is designed to be extremely small (~5KB with no |
7 // extra resources linked) and it has two main jobs: | 7 // extra resources linked) and it has two main jobs: |
8 // 1) unpack the resources (possibly decompressing some) | 8 // 1) unpack the resources (possibly decompressing some) |
9 // 2) run the real installer (setup.exe) with appropiate flags. | 9 // 2) run the real installer (setup.exe) with appropiate flags. |
10 // | 10 // |
(...skipping 10 matching lines...) Loading... | |
21 // are forced to manually link against it. It comes in the form of two | 21 // are forced to manually link against it. It comes in the form of two |
22 // object files that exist in $(VCInstallDir)\crt\src which are memset.obj and | 22 // object files that exist in $(VCInstallDir)\crt\src which are memset.obj and |
23 // P4_memset.obj. These two object files rely on the existence of a static | 23 // P4_memset.obj. These two object files rely on the existence of a static |
24 // variable named __sse2_available which indicates the presence of intel sse2 | 24 // variable named __sse2_available which indicates the presence of intel sse2 |
25 // extensions. We define it to false which causes a slower but safe code for | 25 // extensions. We define it to false which causes a slower but safe code for |
26 // memcpy and memset intrinsics. | 26 // memcpy and memset intrinsics. |
27 | 27 |
28 // having the linker merge the sections is saving us ~500 bytes. | 28 // having the linker merge the sections is saving us ~500 bytes. |
29 #pragma comment(linker, "/MERGE:.rdata=.text") | 29 #pragma comment(linker, "/MERGE:.rdata=.text") |
30 | 30 |
31 #include <intrin.h> // __stosb for MSVC express memset implementation | |
Mark Mentovai
2011/03/17 16:45:10
Maybe you can avoid diverging here by #including <
RN
2011/03/17 20:15:11
Well, __sse2_available is supposed to automaticall
| |
31 #include <windows.h> | 32 #include <windows.h> |
32 #include <setupapi.h> | 33 #include <setupapi.h> |
33 #include <shellapi.h> | 34 #include <shellapi.h> |
34 | 35 |
35 #include "chrome/installer/mini_installer/appid.h" | 36 #include "chrome/installer/mini_installer/appid.h" |
36 #include "chrome/installer/mini_installer/decompress.h" | 37 #include "chrome/installer/mini_installer/decompress.h" |
37 #include "chrome/installer/mini_installer/mini_installer.h" | 38 #include "chrome/installer/mini_installer/mini_installer.h" |
38 #include "chrome/installer/mini_installer/mini_string.h" | 39 #include "chrome/installer/mini_installer/mini_string.h" |
39 #include "chrome/installer/mini_installer/pe_resource.h" | 40 #include "chrome/installer/mini_installer/pe_resource.h" |
40 | 41 |
(...skipping 774 matching lines...) Loading... | |
815 | 816 |
816 return exit_code; | 817 return exit_code; |
817 } | 818 } |
818 | 819 |
819 } // namespace mini_installer | 820 } // namespace mini_installer |
820 | 821 |
821 int MainEntryPoint() { | 822 int MainEntryPoint() { |
822 int result = mini_installer::WMain(::GetModuleHandle(NULL)); | 823 int result = mini_installer::WMain(::GetModuleHandle(NULL)); |
823 ::ExitProcess(result); | 824 ::ExitProcess(result); |
824 } | 825 } |
826 | |
827 // VC Express editions don't come with the memset CRT obj file | |
828 #ifdef COMPILER_MSVC_EXPRESS | |
829 extern "C" { | |
830 #pragma function(memset) | |
831 void* memset(void *dest, int ci, size_t count) { | |
Mark Mentovai
2011/03/17 16:45:10
This and line 834 should be indented flush with th
RN
2011/03/17 20:15:11
OK - Done.
| |
832 __stosb((unsigned char*)dest, (unsigned char)ci, count); | |
833 return dest; | |
834 } | |
835 } | |
836 #endif | |
OLD | NEW |