aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-03-12 16:22:04 +1100
committerSean Hall <r.sean.hall@gmail.com>2020-03-12 16:23:54 +1100
commit6ce359752afac0d3d70c2cf5fabd7d92859564ee (patch)
tree2c5bd798b6f6942a27031002015a5720032e7840
parent91cc7ff5c0f387d39c5999032b4472cbb00e1cd6 (diff)
downloadwix-6ce359752afac0d3d70c2cf5fabd7d92859564ee.tar.gz
wix-6ce359752afac0d3d70c2cf5fabd7d92859564ee.tar.bz2
wix-6ce359752afac0d3d70c2cf5fabd7d92859564ee.zip
Retry ElevationElevate once if we think it failed due to antivirus interference.
-rw-r--r--src/engine/core.cpp10
-rw-r--r--src/engine/elevation.cpp4
-rw-r--r--src/engine/engine.vcxproj4
-rw-r--r--src/engine/packages.config2
4 files changed, 15 insertions, 5 deletions
diff --git a/src/engine/core.cpp b/src/engine/core.cpp
index 519012e9..10750be8 100644
--- a/src/engine/core.cpp
+++ b/src/engine/core.cpp
@@ -508,10 +508,11 @@ extern "C" HRESULT CoreElevate(
508 ) 508 )
509{ 509{
510 HRESULT hr = S_OK; 510 HRESULT hr = S_OK;
511 DWORD cAVRetryAttempts = 0;
511 512
512 // If the elevated companion pipe isn't created yet, let's make that happen. 513 while (INVALID_HANDLE_VALUE == pEngineState->companionConnection.hPipe)
513 if (INVALID_HANDLE_VALUE == pEngineState->companionConnection.hPipe)
514 { 514 {
515 // If the elevated companion pipe isn't created yet, let's make that happen.
515 if (!pEngineState->sczBundleEngineWorkingPath) 516 if (!pEngineState->sczBundleEngineWorkingPath)
516 { 517 {
517 hr = CacheBundleToWorkingDirectory(pEngineState->registration.sczId, pEngineState->registration.sczExecutableName, &pEngineState->userExperience.payloads, &pEngineState->section, &pEngineState->sczBundleEngineWorkingPath); 518 hr = CacheBundleToWorkingDirectory(pEngineState->registration.sczId, pEngineState->registration.sczExecutableName, &pEngineState->userExperience.payloads, &pEngineState->section, &pEngineState->sczBundleEngineWorkingPath);
@@ -519,6 +520,11 @@ extern "C" HRESULT CoreElevate(
519 } 520 }
520 521
521 hr = ElevationElevate(pEngineState, hwndParent); 522 hr = ElevationElevate(pEngineState, hwndParent);
523 if (E_SUSPECTED_AV_INTERFERENCE == hr && 1 > cAVRetryAttempts)
524 {
525 ++cAVRetryAttempts;
526 continue;
527 }
522 ExitOnFailure(hr, "Failed to actually elevate."); 528 ExitOnFailure(hr, "Failed to actually elevate.");
523 529
524 hr = VariableSetNumeric(&pEngineState->variables, BURN_BUNDLE_ELEVATED, TRUE, TRUE); 530 hr = VariableSetNumeric(&pEngineState->variables, BURN_BUNDLE_ELEVATED, TRUE, TRUE);
diff --git a/src/engine/elevation.cpp b/src/engine/elevation.cpp
index 1b9336e0..0b96c300 100644
--- a/src/engine/elevation.cpp
+++ b/src/engine/elevation.cpp
@@ -291,6 +291,10 @@ extern "C" HRESULT ElevationElevate(
291 LogId(REPORT_STANDARD, MSG_LAUNCH_ELEVATED_ENGINE_SUCCESS); 291 LogId(REPORT_STANDARD, MSG_LAUNCH_ELEVATED_ENGINE_SUCCESS);
292 292
293 hr = PipeWaitForChildConnect(&pEngineState->companionConnection); 293 hr = PipeWaitForChildConnect(&pEngineState->companionConnection);
294 if (HRESULT_FROM_WIN32(ERROR_NO_DATA) == hr)
295 {
296 hr = E_SUSPECTED_AV_INTERFERENCE;
297 }
294 ExitOnFailure(hr, "Failed to connect to elevated child process."); 298 ExitOnFailure(hr, "Failed to connect to elevated child process.");
295 299
296 LogId(REPORT_STANDARD, MSG_CONNECT_TO_ELEVATED_ENGINE_SUCCESS); 300 LogId(REPORT_STANDARD, MSG_CONNECT_TO_ELEVATED_ENGINE_SUCCESS);
diff --git a/src/engine/engine.vcxproj b/src/engine/engine.vcxproj
index fecef29e..499fcd4d 100644
--- a/src/engine/engine.vcxproj
+++ b/src/engine/engine.vcxproj
@@ -2,7 +2,7 @@
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 4<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.11\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.11\build\WixToolset.BootstrapperCore.Native.props')" /> 5 <Import Project="..\..\packages\WixToolset.BootstrapperCore.Native.4.0.12\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.12\build\WixToolset.BootstrapperCore.Native.props')" />
6 <Import Project="..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" /> 6 <Import Project="..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" />
7 7
8 <ItemGroup Label="ProjectConfigurations"> 8 <ItemGroup Label="ProjectConfigurations">
@@ -167,7 +167,7 @@ rc.exe -fo "$(OutDir)engine.res" "$(IntDir)engine.messages.rc"</Command>
167 <PropertyGroup> 167 <PropertyGroup>
168 <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> 168 <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
169 </PropertyGroup> 169 </PropertyGroup>
170 <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.11\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.11\build\WixToolset.BootstrapperCore.Native.props'))" /> 170 <Error Condition="!Exists('..\..\packages\WixToolset.BootstrapperCore.Native.4.0.12\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.BootstrapperCore.Native.4.0.12\build\WixToolset.BootstrapperCore.Native.props'))" />
171 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props'))" /> 171 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.18\build\WixToolset.DUtil.props'))" />
172 <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets'))" /> 172 <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets'))" />
173 </Target> 173 </Target>
diff --git a/src/engine/packages.config b/src/engine/packages.config
index f7638ec7..01a9390c 100644
--- a/src/engine/packages.config
+++ b/src/engine/packages.config
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<packages> 2<packages>
3 <package id="Nerdbank.GitVersioning" version="2.1.65" targetFramework="native" developmentDependency="true" /> 3 <package id="Nerdbank.GitVersioning" version="2.1.65" targetFramework="native" developmentDependency="true" />
4 <package id="WixToolset.BootstrapperCore.Native" version="4.0.11" targetFramework="native" /> 4 <package id="WixToolset.BootstrapperCore.Native" version="4.0.12" targetFramework="native" />
5 <package id="WixToolset.DUtil" version="4.0.18" targetFramework="native" /> 5 <package id="WixToolset.DUtil" version="4.0.18" targetFramework="native" />
6</packages> \ No newline at end of file 6</packages> \ No newline at end of file