|
63 | 63 | Condition="FIREFOXINSTALL=1 AND NOT REMOVE="ALL"" /> |
64 | 64 | <Custom Action="ExtensionSettingsNoInstall" Before="InstallFinalize" |
65 | 65 | Condition="FIREFOXINSTALL=0 AND NOT REMOVE="ALL"" /> |
| 66 | + <!-- ExtensionSettingsRemove blocks the extension so it can't be reinstalled from AMO |
| 67 | + without the native app, avoiding a dangling, non-functional extension. Reinstalling |
| 68 | + Web eID runs ExtensionSettingsInstall above, which overwrites this back to allowed, so |
| 69 | + this is not a permanent block. --> |
66 | 70 | <Custom Action="ExtensionSettingsRemove" Before="InstallFinalize" |
67 | 71 | Condition="REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE" /> |
68 | 72 | </InstallExecuteSequence> |
|
110 | 114 | <RegistryValue Root="HKLM" Type="string" Name="update_url" |
111 | 115 | Key="SOFTWARE\Google\Chrome\Extensions\ncibgoaomkmdpilpocfeponihegamlic" |
112 | 116 | Value="https://clients2.google.com/service/update2/crx" /> |
113 | | - <!-- Block chrome-token-signing extension to avoid conflicts --> |
| 117 | + <!-- Block chrome-token-signing extension to avoid conflicts. Chromium's registry policy |
| 118 | + loader (RegistryDict::ConvertToJSON in registry_dict.cc) only reads list-policy |
| 119 | + entries whose value NAME is numeric (IsKeyNumeric) - non-numeric names are silently |
| 120 | + ignored - so this can't be replaced with a collision-free unique string (e.g. a hash |
| 121 | + of the extension ID) as one might expect. The name must stay a bare number, which |
| 122 | + means it can theoretically collide with another vendor's installer using the same |
| 123 | + number under this list; there's no registry-level namespacing for this policy. |
| 124 | + Worst case on collision is that this entry is silently overwritten/ignored, i.e. the |
| 125 | + legacy extension isn't blocked - a compatibility nicety, not a security control - so |
| 126 | + this is accepted as-is rather than solved with a heavier enumerate-and-pick-next-free- |
| 127 | + slot custom action. --> |
114 | 128 | <RegistryValue Root="HKLM" Type="string" Name="56791" |
115 | 129 | Key="SOFTWARE\Policies\Google\Chrome\ExtensionInstallBlocklist" |
116 | 130 | Value="ckjefchnfjhjfedoccjbhjpbncimppeg" /> |
117 | 131 | </Component> |
118 | 132 | <Component Id="ChromePolicy" Transitive="yes" Condition="(CHROMEINSTALL = 1 AND CHROMEPOLICY = 1)" Bitness="always32"> |
| 133 | + <!-- Same hardcoded-numeric-name caveat as the Blocklist entry above applies here. --> |
119 | 134 | <RegistryValue Root="HKLM" Type="string" Name="56790" |
120 | 135 | Key="SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist" |
121 | 136 | Value="ncibgoaomkmdpilpocfeponihegamlic" /> |
|
124 | 139 | <RegistryValue Root="HKLM" Type="string" Name="update_url" |
125 | 140 | Key="SOFTWARE\Microsoft\Edge\Extensions\gnmckgbandlkacikdndelhfghdejfido" |
126 | 141 | Value="https://edge.microsoft.com/extensionwebstorebase/v1/crx" /> |
127 | | - <!-- Block chrome-token-signing extension to avoid conflicts --> |
| 142 | + <!-- Block chrome-token-signing extension to avoid conflicts. Same hardcoded-numeric-name |
| 143 | + caveat as the Chrome Blocklist entry above applies here (Edge's registry policy |
| 144 | + loader is Chromium-derived and behaves the same way). --> |
128 | 145 | <RegistryValue Root="HKLM" Type="string" Name="56791" |
129 | 146 | Key="SOFTWARE\Policies\Microsoft\Edge\ExtensionInstallBlocklist" |
130 | 147 | Value="fofaekogmodbjplbmlbmjiglndceaajh" /> |
131 | 148 | </Component> |
132 | 149 | <Component Id="EdgePolicy" Transitive="yes" Condition="(EDGEINSTALL = 1 AND EDGEPOLICY = 1)" Bitness="always32"> |
| 150 | + <!-- Same hardcoded-numeric-name caveat as the Blocklist entries above applies here. --> |
133 | 151 | <RegistryValue Root="HKLM" Type="string" Name="56790" |
134 | 152 | Key="SOFTWARE\Policies\Microsoft\Edge\ExtensionInstallForcelist" |
135 | 153 | Value="gnmckgbandlkacikdndelhfghdejfido" /> |
|
0 commit comments