summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorgab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 14:06:57 +0000
committergab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 14:06:57 +0000
commit455e64b6dbd407befca3ec7fc83c5fa861df1c44 (patch)
treeb20d97dfc852467c58271f5ff637ad1fa7f6834d /build
parent619b2ad5ddf1b501955ad5ce06c69fe959eb5e56 (diff)
downloadchromium_src-455e64b6dbd407befca3ec7fc83c5fa861df1c44.zip
chromium_src-455e64b6dbd407befca3ec7fc83c5fa861df1c44.tar.gz
chromium_src-455e64b6dbd407befca3ec7fc83c5fa861df1c44.tar.bz2
Make setup.exe compatible with the component build.
The problem with the current component build is that chrome.exe and setup.exe only know to look for DLLs like base.dll in the current directory (except chrome.dll for which they're hardcoded to know where to look). On an install those DLLs are in the version directory so chrome.exe and setup.exe fail to run not finding required DLLs... To fix this we generate config files (to point in the version directory) and manifests (to list all the DLL dependencies explicitly) to be installed beside the exes. Each DLL also has a manifest in the version directory to give it an "assemblyIdentity" (i.e. a unique name which is referred to as a dependency by each exe's manifest). In order for external manifests to work, embedded manifests had to be disabled for component builds (otherwise Windows ignores the external one). Since embedded manifests are disabled and the generated manifests are only generated in the archive to be extracted at install-time. This CL also adds a copy step for the usually embedded manifests to be dropped in the build directory so that chrome.exe and setup.exe are usable from there without requiring an install. This doesn't make mini_installer.exe compatible with the component build yet (as mini_installer runs setup.exe right after extracting it and without any other DLLs/manifests beside it). However it is now possible to use setup.exe (which takes the exact same parameters as mini_installer.exe) from the build output directory with a component build :)!!! BUG=127233 TEST=Turn on component build with gyp config "component=shared_libary" and make sure we can install chrome with setup.exe. Make sure we can run the installed Chrome. Make sure we can uninstall the installed Chrome (i.e. that setup.exe in <version_dir>/Installer is able to find its DLLs). Review URL: https://chromiumcodereview.appspot.com/9701050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137118 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build')
-rw-r--r--build/common.gypi17
1 files changed, 17 insertions, 0 deletions
diff --git a/build/common.gypi b/build/common.gypi
index 3f3d972..27aa341 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -2832,6 +2832,23 @@
'_HAS_EXCEPTIONS=0',
],
}],
+ # To support installing a component build (where the DLLs are not in
+ # same directory as chrome.exe and setup.exe):
+ # create_installer_archive.py writes custom manifests for all the
+ # DLLs. The setting below prevents VS from automatically generating
+ # the usual manifests for those DLLs which would override the custom
+ # external manifests.
+ ['component=="shared_library"', {
+ 'target_conditions': [
+ ['_type=="shared_library"', {
+ 'msvs_settings': {
+ 'VCLinkerTool': {
+ 'GenerateManifest': 'false',
+ },
+ },
+ }],
+ ],
+ }],
['MSVS_VERSION=="2008"', {
'defines': [
'_HAS_TR1=0',