Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: Makefile.DevInstall

Issue 10952045: Developer installation from within Visual Studio (Closed)
Left Patch Set: Took UAC out of the build loop Created June 19, 2013, 4:54 p.m.
Right Patch Set: Fixes addressing comments Created June 20, 2013, 3:21 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « AdblockPlusDeveloperInstall.vcxproj ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 # 1 #
2 # NMAKE is a 32-bit application, which makes it problematic to make 64-bit regis try entries with the standard command-line tools such as "reg.exe". 2 # NMAKE is a 32-bit application, which makes it problematic to make 64-bit regis try entries with the standard command-line tools such as "reg.exe".
3 # As a 32-bit application, when it loads "reg.exe" from the ordinary directory, %WINDIR%\System32, the WOW64 system redirects it load from %WINDIR%\SysWOW64. 3 # As a 32-bit application, when it loads "reg.exe" from the ordinary directory, %WINDIR%\System32, the WOW64 system redirects it load from %WINDIR%\SysWOW64.
4 # So even if you explicitly put in the 64-bit path, because NMAKE is 32-bit it w ill load the 32-bit version anyway. 4 # So even if you explicitly put in the 64-bit path, because NMAKE is 32-bit it w ill load the 32-bit version anyway.
5 # To get around this, we check for the existence of %WINDIR%\sysnative\reg.exe, which if present means a few things. 5 # To get around this, we check for the existence of %WINDIR%\sysnative\reg.exe, which if present means a few things.
6 # -- 1. We're running on Windows Vista or later, because 64-bit XP doesn't have "sysnative." 6 # -- 1. We're running on Windows Vista or later, because 64-bit XP doesn't have "sysnative."
7 # -- 2. We're running on a 64-bit version of Windows. 7 # -- 2. We're running on a 64-bit version of Windows.
8 # -- 3. We're running from a 32-bit process, which should always be true about N MAKE. 8 # -- 3. We're running from a 32-bit process, which should always be true about N MAKE.
9 # 9 #
10 # See http://ovidiupl.wordpress.com/2008/07/11/useful-wow64-file-system-trick/ f or more details. 10 # See http://ovidiupl.wordpress.com/2008/07/11/useful-wow64-file-system-trick/ f or more details.
11 # 11 #
12 !if [cmd /c if exist %WINDIR%\sysnative\reg.exe exit /b 1] 12 !if [cmd /c if exist %WINDIR%\sysnative\reg.exe exit /b 1]
13 REG=$(WINDIR)\sysnative\reg.exe 13 REG=$(WINDIR)\sysnative\reg.exe
14 X64=1 14 X64=1
15 !else 15 !else
16 REG=$(WINDIR)\reg.exe 16 REG=$(WINDIR)\reg.exe
17 !message Warning: Developer installation not tested on XP or 32-bit Windows. 17 !message Warning: Developer installation not tested on XP or 32-bit Windows.
18 !endif 18 !endif
19 19
20 !message DLL=$(DLL) 20 !message DLL=$(DLL)
21 21
22 # 22 #
23 # Default (first) target is a help message, in case anybody runs it outside Visu al Studio. 23 # Default (first) target is a help message, in case anybody runs it outside Visu al Studio.
24 # 24 #
25 help: 25 help:
26 @echo This Makefile is intended to be run from within Visual Studio to p rovide developer installations of Adblock Plus for IE. 26 @echo This Makefile is intended to be run from within Visual Studio to p rovide developer installations of Adblock Plus for IE.
27 27
28 build64: register64 check_BHO copy 28 build64: register64 check_BHO64 copy
29 29
30 rebuild64: clean64 build64 30 rebuild64: clean64 build64
31 31
32 build32: register32 check_BHO copy 32 build32: register32 check_BHO32 copy
33 33
34 rebuild32: clean32 build32 34 rebuild32: clean32 build32
35 35
36 # 36 #
37 # We're using "reg.exe" for the HKCU keys because the one with the DLL path name would need to be backslash-quoted to go into a .REG file. 37 # We're using "reg.exe" for the HKCU keys because the one with the DLL path name would need to be backslash-quoted to go into a .REG file.
38 # 38 #
39 # Note that the CLSID is register in HKCU, which avoids the need to elevate with UAC to high integrity in order to write. 39 # Note that the CLSID is register in HKCU, which avoids the need to elevate with UAC to high integrity in order to write.
40 # Also note that the "Browser Helper Object" key is in HKLM, which is required b ecause of IE. 40 # Also note that the "Browser Helper Object" key is in HKLM, which is required b ecause of IE.
41 # IE only scans in HKLM for BHO entries. 41 # IE only scans in HKLM for BHO entries.
42 # IE does not scan HKCU for BHO entries, contrary to some sources online. 42 # IE does not scan HKCU for BHO entries, contrary to some sources online.
43 # The tale for this is that it would be a security violation to allow an Adminis trator to run a BHO from HKCU, 43 # The tale for this is that it would be a security violation to allow an Adminis trator to run a BHO from HKCU,
44 # since anything might have written to HKCU (a low-integrity part of the regi stry). 44 # since anything might have written to HKCU (a low-integrity part of the regi stry).
45 # On the other hand, IE could just run low-integrity BHO in a low-integrity cont ainer, but no, it can't do that. 45 # On the other hand, IE could just run low-integrity BHO in a low-integrity cont ainer, but no, it can't do that.
46 # 46 #
47 register64: 47 register64:
48 @echo Start 'register' action. 48 @echo Start 'register' action.
49 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664} /ve /d "Adblock Plus for IE Browser Helper Object" /f >nul 49 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664} /ve /d "Adblock Plus for IE Browser Helper Object" /f >nul
50 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /ve /d "$(DLL)" /f >nul 50 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /ve /d "$(DLL)" /f >nul
51 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /v ThreadingModel /d "Both" /f >nul 51 $(REG) add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664}\InprocServer32 /v ThreadingModel /d "Both" /f >nul
52 @date /t >"$(OutDir)registered.timestamp.txt" 52 @date /t >"$(OutDir)registered.timestamp.txt"
53 @time /t >>"$(OutDir)registered.timestamp.txt" 53 @time /t >>"$(OutDir)registered.timestamp.txt"
54 54
55 # 55 #
56 # This is exactly the same as 'register64' except it does not use the $(REG) mac ro but rather just 'reg' 56 # This is exactly the same as 'register64' except it does not use the $(REG) mac ro but rather just 'reg'
57 # On 64-bit Windows, invoking it this way ends up with the 32-bit version of 're g'. 57 # On 64-bit Windows, invoking it this way ends up with the 32-bit version of 're g'.
Wladimir Palant 2013/06/20 07:10:38 How about renaming the current REG variable into R
Eric 2013/06/20 14:13:47 I want to disagree with one thing. Nothing is ever
58 # See above about 'sysnative' for why that is. 58 # See above about 'sysnative' for why that is.
59 # On 32-bit Windows, it does what you'd expect. 59 # On 32-bit Windows, it does what you'd expect.
60 # Thus we can use this for 32-bit build targets on both 32- and 64-bit Windows. 60 # Thus we can use this for 32-bit build targets on both 32- and 64-bit Windows.
61 # 61 #
62 register32: 62 register32:
63 @echo Start 'register' action. 63 @echo Start 'register' action.
64 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4} /ve /d "Adblock Plus for IE Browser Helper Object" /f >nul 64 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4} /ve /d "Adblock Plus for IE Browser Helper Object" /f >nul
65 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4}\InprocServer32 /ve /d "$(DLL)" /f >nul 65 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4}\InprocServer32 /ve /d "$(DLL)" /f >nul
66 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4}\InprocServer32 /v ThreadingModel /d "Both" /f >nul 66 reg add HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694ED66 4}\InprocServer32 /v ThreadingModel /d "Both" /f >nul
67 @date /t >"$(OutDir)registered.timestamp.txt" 67 @date /t >"$(OutDir)registered.timestamp.txt"
68 @time /t >>"$(OutDir)registered.timestamp.txt" 68 @time /t >>"$(OutDir)registered.timestamp.txt"
69 69
70 # 70 #
71 # Fortuitously, the warning message below is actually parsed by Visual Studio an d show up with a yellow flag in the error list. 71 # Fortuitously, the warning message below is actually parsed by Visual Studio an d show up with a yellow flag in the error list.
72 # 72 #
73 check_BHO: 73 check_BHO64:
74 !if [$(REG) query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer\Browser Helper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" 2>&1 >nu l] 74 !if [$(REG) query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Explorer\Browser Helper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" 2>&1 >nu l]
Wladimir Palant 2013/06/20 07:10:38 What about HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
Eric 2013/06/20 14:13:47 You're correct. I also need to add it to the query
75 @echo Warning: BHO key not registered. IE cannot find the plugin unless the BHO key is present in the registry. Use "BHO_add.reg" to add the key.
76 !endif
77
78 check_BHO32:
79 !if [reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Exp lorer\Browser Helper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" 2>&1 >nul]
75 @echo Warning: BHO key not registered. IE cannot find the plugin unless the BHO key is present in the registry. Use "BHO_add.reg" to add the key. 80 @echo Warning: BHO key not registered. IE cannot find the plugin unless the BHO key is present in the registry. Use "BHO_add.reg" to add the key.
76 !endif 81 !endif
77 82
78 copy: 83 copy:
79 @echo Copying files 84 @echo Copying files
80 copy "$(ProjectDir)files\settings.ini" "$(OutDir)settings.ini" 85 copy "$(ProjectDir)files\settings.ini" "$(OutDir)settings.ini"
81 xcopy /s /I /y /D "$(ProjectDir)html\*" "$(OutDir)html" 86 xcopy /s /I /y /D "$(ProjectDir)html\*" "$(OutDir)html"
82 xcopy /s /I /y /D "$(ProjectDir)locales\*" "$(OutDir)locales" 87 xcopy /s /I /y /D "$(ProjectDir)locales\*" "$(OutDir)locales"
83 @date /t >"$(OutDir)copied.timestamp.txt" 88 @date /t >"$(OutDir)copied.timestamp.txt"
84 @time /t >>"$(OutDir)copied.timestamp.txt" 89 @time /t >>"$(OutDir)copied.timestamp.txt"
85 90
86 # 91 #
87 # N.B. We don't delete the CLSID in HKLM for clean. That wouldn't be our key, bu t the installer's. 92 # N.B. We don't delete the CLSID in HKLM for clean. That wouldn't be our key, bu t the installer's.
Wladimir Palant 2013/06/20 07:10:38 IMHO, since this is about the development environm
Eric 2013/06/20 14:13:47 There are three reasons not to delete installer ke
88 # 93 #
89 clean64: 94 clean64:
90 $(REG) delete HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-43246 94ED664} /f 95 $(REG) delete HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-43246 94ED664} /f
91 96
92 clean32: 97 clean32:
93 reg delete HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664} /f 98 reg delete HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324694E D664} /f
94 99
95 # 100 #
96 # This utility queries all the registry locations that might be present either i n a developer install or a regular one. 101 # This utility queries all the registry locations that might be present either i n a developer install or a regular one.
97 # The '-' annotation means to ignore the error code. '2>nul' means to ignore any error text. It's not an error for a registry key to be absent. 102 # The '-' annotation means to ignore the error code. '2>nul' means to ignore any error text. It's not an error for a registry key to be absent.
98 # The BHO key is only relevant in HKLM. The CLSID keys may be either in HKLM or HKCU. 103 # The BHO key is only relevant in HKLM. The CLSID keys may be either in HKLM or HKCU.
99 # 104 #
100 query: 105 query:
101 # BHO key 106 # BHO key
102 -@$(REG) query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer sion\Explorer\Browser Helper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" 2>n ul 107 -@$(REG) query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer sion\Explorer\Browser Helper Objects\{FFCB3198-32F3-4E8B-9539-4324694ED664}" 2>n ul
103 # Native platform keys 108 # Native platform keys
104 -@$(REG) query HKLM\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664} /ve 2>nul 109 -@$(REG) query HKLM\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664} /ve 2>nul
105 -@$(REG) query HKLM\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664}\InprocServer32 2>nul 110 -@$(REG) query HKLM\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664}\InprocServer32 2>nul
106 -@$(REG) query HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664} /ve 2>nul 111 -@$(REG) query HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664} /ve 2>nul
107 -@$(REG) query HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664}\InprocServer32 2>nul 112 -@$(REG) query HKCU\Software\Classes\CLSID\{FFCB3198-32F3-4E8B-9539-4324 694ED664}\InprocServer32 2>nul
108 !ifdef X64 113 !ifdef X64
109 # WoW64 keys 114 # WoW64 keys
110 -@$(REG) query HKLM\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664} /ve 2>nul 115 -@$(REG) query HKLM\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664} /ve 2>nul
111 -@$(REG) query HKLM\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664}\InprocServer32 2>nul 116 -@$(REG) query HKLM\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664}\InprocServer32 2>nul
112 -@$(REG) query HKCU\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664} /ve 2>nul 117 -@$(REG) query HKCU\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664} /ve 2>nul
113 -@$(REG) query HKCU\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664}\InprocServer32 2>nul 118 -@$(REG) query HKCU\Software\Wow6432Node\Classes\CLSID\{FFCB3198-32F3-4E 8B-9539-4324694ED664}\InprocServer32 2>nul
114 !endif 119 !endif
LEFTRIGHT

Powered by Google App Engine
This is Rietveld