diff options
Diffstat (limited to 'src/burn/engine/msuengine.cpp')
-rw-r--r-- | src/burn/engine/msuengine.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/burn/engine/msuengine.cpp b/src/burn/engine/msuengine.cpp index 2591973f..de8e8c38 100644 --- a/src/burn/engine/msuengine.cpp +++ b/src/burn/engine/msuengine.cpp | |||
@@ -273,6 +273,7 @@ extern "C" HRESULT MsuEngineExecutePackage( | |||
273 | LPWSTR sczSystemPath = NULL; | 273 | LPWSTR sczSystemPath = NULL; |
274 | LPWSTR sczWusaPath = NULL; | 274 | LPWSTR sczWusaPath = NULL; |
275 | LPWSTR sczCommand = NULL; | 275 | LPWSTR sczCommand = NULL; |
276 | LPWSTR sczEscapedKB = NULL; | ||
276 | SC_HANDLE schWu = NULL; | 277 | SC_HANDLE schWu = NULL; |
277 | BOOL fWuWasDisabled = FALSE; | 278 | BOOL fWuWasDisabled = FALSE; |
278 | STARTUPINFOW si = { }; | 279 | STARTUPINFOW si = { }; |
@@ -328,8 +329,11 @@ extern "C" HRESULT MsuEngineExecutePackage( | |||
328 | break; | 329 | break; |
329 | 330 | ||
330 | case BOOTSTRAPPER_ACTION_STATE_UNINSTALL: | 331 | case BOOTSTRAPPER_ACTION_STATE_UNINSTALL: |
332 | hr = AppEscapeCommandLineArgumentFormatted(&sczEscapedKB, L"%ls", pPackage->Msu.sczKB); | ||
333 | ExitOnFailure(hr, "Failed to escape MSU KB."); | ||
334 | |||
331 | // format command | 335 | // format command |
332 | hr = StrAllocFormatted(&sczCommand, L"\"%ls\" /uninstall /kb:%ls /quiet /norestart", sczWusaPath, pPackage->Msu.sczKB); | 336 | hr = StrAllocFormatted(&sczCommand, L"\"%ls\" /uninstall /kb:%ls /quiet /norestart", sczWusaPath, sczEscapedKB); |
333 | ExitOnFailure(hr, "Failed to format MSU uninstall command."); | 337 | ExitOnFailure(hr, "Failed to format MSU uninstall command."); |
334 | break; | 338 | break; |
335 | 339 | ||
@@ -352,7 +356,7 @@ extern "C" HRESULT MsuEngineExecutePackage( | |||
352 | hr = EnsureWUServiceEnabled(fStopWusaService, &schWu, &fWuWasDisabled); | 356 | hr = EnsureWUServiceEnabled(fStopWusaService, &schWu, &fWuWasDisabled); |
353 | ExitOnFailure(hr, "Failed to ensure WU service was enabled to install MSU package."); | 357 | ExitOnFailure(hr, "Failed to ensure WU service was enabled to install MSU package."); |
354 | 358 | ||
355 | hr = ExeEngineRunProcess(pfnGenericMessageHandler, pvContext, pPackage, sczWusaPath, sczCommand, NULL, &dwExitCode); | 359 | hr = ExeEngineRunProcess(pfnGenericMessageHandler, pvContext, pPackage, sczWusaPath, sczCommand, NULL, NULL, &dwExitCode); |
356 | ExitOnFailure(hr, "Failed to run MSU process"); | 360 | ExitOnFailure(hr, "Failed to run MSU process"); |
357 | 361 | ||
358 | // We'll normalize the restart required error code from wusa.exe just in case. Most likely | 362 | // We'll normalize the restart required error code from wusa.exe just in case. Most likely |
@@ -389,6 +393,7 @@ LExit: | |||
389 | ReleaseStr(sczWindowsPath); | 393 | ReleaseStr(sczWindowsPath); |
390 | ReleaseStr(sczWusaPath); | 394 | ReleaseStr(sczWusaPath); |
391 | ReleaseStr(sczCommand); | 395 | ReleaseStr(sczCommand); |
396 | ReleaseStr(sczEscapedKB); | ||
392 | 397 | ||
393 | ReleaseHandle(pi.hProcess); | 398 | ReleaseHandle(pi.hProcess); |
394 | ReleaseHandle(pi.hThread); | 399 | ReleaseHandle(pi.hThread); |