Remove BITS support. Update DUtil dependency.
Bob Arnson committed
Feb 9, 2021 at 21:35 UTC
422d6e48e2f9bdcec62f9a147cb8c2f34bf73a5f
11 files changed
+15
-561
src/engine/apply.cpp
+6
-19
@@ -1509,26 +1509,13 @@ static HRESULT DownloadPayload(
1509
cacheCallback.pfnCancel = NULL; // TODO: set this
1510
cacheCallback.pv = pProgress;
1511
1512
- // If the protocol is specially marked, "bits" let's use that.
1513
- if (L'b' == pDownloadSource->sczUrl[0] &&
1514
- L'i' == pDownloadSource->sczUrl[1] &&
1515
- L't' == pDownloadSource->sczUrl[2] &&
1516
- L's' == pDownloadSource->sczUrl[3] &&
1517
- (L':' == pDownloadSource->sczUrl[4] || (L's' == pDownloadSource->sczUrl[4] && L':' == pDownloadSource->sczUrl[5]))
1518
- )
1519
- {
1520
- hr = BitsDownloadUrl(&cacheCallback, pDownloadSource, wzDestinationPath);
1521
- }
1522
- else // wininet handles everything else.
1523
- {
1524
- authenticationData.pUX = pProgress->pUX;
1525
- authenticationData.wzPackageOrContainerId = wzPackageOrContainerId;
1526
- authenticationData.wzPayloadId = wzPayloadId;
1527
- authenticationCallback.pv = static_cast<LPVOID>(&authenticationData);
1528
- authenticationCallback.pfnAuthenticate = &AuthenticationRequired;
1512
+ authenticationData.pUX = pProgress->pUX;
1513
+ authenticationData.wzPackageOrContainerId = wzPackageOrContainerId;
1514
+ authenticationData.wzPayloadId = wzPayloadId;
1515
+ authenticationCallback.pv = static_cast<LPVOID>(&authenticationData);
1516
+ authenticationCallback.pfnAuthenticate = &AuthenticationRequired;
1517
1530
- hr = DownloadUrl(pDownloadSource, qwDownloadSize, wzDestinationPath, &cacheCallback, &authenticationCallback);
1531
- }
1518
+ hr = DownloadUrl(pDownloadSource, qwDownloadSize, wzDestinationPath, &cacheCallback, &authenticationCallback);
1519
ExitOnFailure(hr, "Failed attempt to download URL: '%ls' to: '%ls'", pDownloadSource->sczUrl, wzDestinationPath);
1520
1521
LExit:
src/engine/bitsengine.cpp
deleted
-505
@@ -1,505 +0,0 @@
1
-// 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
-
3
-#include "precomp.h"
4
-
5
-// const
6
-
7
-const DWORD BITSENGINE_NO_PROGRESS_TIMEOUT = 2 * 60;
8
-const DWORD BITSENGINE_MSG_WAIT_TIMEOUT = 1;
9
-
10
-// functions
11
-
12
-static HRESULT CreateJob(
13
- __out IBackgroundCopyJob** ppJob
14
- );
15
-static HRESULT SetCredentials(
16
- __in IBackgroundCopyJob* pJob,
17
- __in_z_opt LPCWSTR wzUser,
18
- __in_z_opt LPCWSTR wzPassword
19
- );
20
-static void SendError(
21
- __in DOWNLOAD_CACHE_CALLBACK* pCacheCallback,
22
- __in IBackgroundCopyJob* pJob,
23
- __in HRESULT hrError,
24
- __in BG_ERROR_CONTEXT context,
25
- __out_opt BOOL* pfRetry
26
- );
27
-
28
-
29
-// class
30
-
31
-class CBurnBitsCallback : public IBackgroundCopyCallback
32
-{
33
-public: // IUnknown
34
- virtual STDMETHODIMP QueryInterface(
35
- __in const IID& riid,
36
- __out void** ppvObject
37
- )
38
- {
39
- HRESULT hr = S_OK;
40
-
41
- ExitOnNull(ppvObject, hr, E_INVALIDARG, "Invalid argument ppvObject");
42
- *ppvObject = NULL;
43
-
44
- if (::IsEqualIID(__uuidof(IBackgroundCopyCallback), riid))
45
- {
46
- *ppvObject = static_cast<IBackgroundCopyCallback*>(this);
47
- }
48
- else if (::IsEqualIID(IID_IUnknown, riid))
49
- {
50
- *ppvObject = reinterpret_cast<IUnknown*>(this);
51
- }
52
- else // no interface for requested iid
53
- {
54
- ExitFunction1(hr = E_NOINTERFACE);
55
- }
56
-
57
- AddRef();
58
-
59
- LExit:
60
- return hr;
61
- }
62
-
63
- virtual STDMETHODIMP_(ULONG) AddRef()
64
- {
65
- return ::InterlockedIncrement(&this->m_cReferences);
66
- }
67
-
68
- virtual STDMETHODIMP_(ULONG) Release()
69
- {
70
- long l = ::InterlockedDecrement(&this->m_cReferences);
71
- if (0 < l)
72
- {
73
- return l;
74
- }
75
-
76
- delete this;
77
- return 0;
78
- }
79
-
80
-public: // IBackgroundCopyCallback
81
- virtual STDMETHODIMP JobTransferred(
82
- __in IBackgroundCopyJob* pJob
83
- )
84
- {
85
- HRESULT hr = S_OK;
86
-
87
- hr = SendProgress(pJob);
88
- ExitOnFailure(hr, "Failure while sending progress during BITS job transferred.");
89
-
90
- LExit:
91
- if (FAILED(hr))
92
- {
93
- ProcessResult(BG_ERROR_CONTEXT_NONE, hr);
94
- }
95
- else
96
- {
97
- ::SetEvent(m_hComplete);
98
- }
99
-
100
- return S_OK; // must return S_OK otherwise BITS just keeps calling back.
101
- }
102
-
103
- virtual STDMETHODIMP JobError(
104
- __in IBackgroundCopyJob* /*pJob*/,
105
- __in IBackgroundCopyError* pError
106
- )
107
- {
108
- HRESULT hr = S_OK;
109
- BG_ERROR_CONTEXT context = BG_ERROR_CONTEXT_NONE;
110
- HRESULT hrError = S_OK;
111
-
112
- hr = pError->GetError(&context, &hrError);
113
- ExitOnFailure(hr, "Failed to get error context.");
114
-
115
- if (SUCCEEDED(hrError))
116
- {
117
- hr = E_UNEXPECTED;
118
- }
119
-
120
- LExit:
121
- ProcessResult(context, FAILED(hrError) ? hrError : hr);
122
-
123
- return S_OK; // must return S_OK otherwise BITS just keeps calling back.
124
- }
125
-
126
- virtual STDMETHODIMP JobModification(
127
- __in IBackgroundCopyJob* pJob,
128
- __in DWORD /*dwReserved*/
129
- )
130
- {
131
- HRESULT hr = S_OK;
132
- BG_JOB_STATE state = BG_JOB_STATE_ERROR;
133
-
134
- ::EnterCriticalSection(&m_cs);
135
-
136
- hr = pJob->GetState(&state);
137
- ExitOnFailure(hr, "Failed to get state during job modification.");
138
-
139
- // If we're actually downloading stuff, let's send progress.
140
- if (BG_JOB_STATE_TRANSFERRING == state)
141
- {
142
- hr = SendProgress(pJob);
143
- ExitOnFailure(hr, "Failure while sending progress during BITS job modification.");
144
- }
145
-
146
- LExit:
147
- ::LeaveCriticalSection(&m_cs);
148
-
149
- ProcessResult(BG_ERROR_CONTEXT_NONE, hr);
150
-
151
- return S_OK; // documentation says to always return S_OK
152
- }
153
-
154
-public:
155
- void Reset()
156
- {
157
- m_hrError = S_OK;
158
- m_contextError = BG_ERROR_CONTEXT_NONE;
159
-
160
- ::ResetEvent(m_hComplete);
161
- }
162
-
163
- HRESULT WaitForCompletion(
164
- __in IBackgroundCopyJob* pJob
165
- )
166
- {
167
- HRESULT hr = S_OK;
168
- HANDLE rghEvents[1] = { m_hComplete };
169
- MSG msg = { };
170
- BOOL fMessageProcessed = FALSE;
171
-
172
- do
173
- {
174
- fMessageProcessed = FALSE;
175
-
176
- switch (::MsgWaitForMultipleObjects(countof(rghEvents), rghEvents, FALSE, BITSENGINE_MSG_WAIT_TIMEOUT * 1000, QS_ALLINPUT))
177
- {
178
- case WAIT_OBJECT_0:
179
- break;
180
-
181
- case WAIT_OBJECT_0 + 1:
182
- ::PeekMessageW(&msg, NULL, 0, 0, PM_NOREMOVE);
183
- fMessageProcessed = TRUE;
184
- break;
185
-
186
- case WAIT_TIMEOUT:
187
- // Call the progress callback periodically if we are not transferring to ensure that cancelling is responsive
188
- // (progress callback is also handles cancelling). Note that if we are transferring, IBackgroundCopyCallback
189
- // methods handle progress/cancelling. If we are not transferring, the IBackgroundCopyCallback methods may
190
- // not be called until the job times out (minutes for a foreground job, weeks for a background job).
191
- SendProgressIfNotTransferring(pJob);
192
- fMessageProcessed = TRUE;
193
- break;
194
-
195
- default:
196
- ExitWithLastError(hr, "Failed while waiting for download.");
197
- }
198
- } while (fMessageProcessed);
199
-
200
- LExit:
201
- return hr;
202
- }
203
-
204
- void GetError(
205
- __out HRESULT* pHR,
206
- __out BG_ERROR_CONTEXT* pContext
207
- )
208
- {
209
- *pHR = m_hrError;
210
- *pContext = m_contextError;
211
- }
212
-
213
-private:
214
- HRESULT SendProgress(
215
- __in IBackgroundCopyJob* pJob
216
- )
217
- {
218
- HRESULT hr = S_OK;
219
- BG_JOB_PROGRESS progress = { };
220
-
221
- if (m_pCallback && m_pCallback->pfnProgress)
222
- {
223
- hr = pJob->GetProgress(&progress);
224
- ExitOnFailure(hr, "Failed to get progress when BITS job was transferred.");
225
-
226
- hr = CacheSendProgressCallback(m_pCallback, progress.BytesTransferred, progress.BytesTotal, INVALID_HANDLE_VALUE);
227
- ExitOnFailure(hr, "Failed to send progress from BITS job.");
228
- }
229
-
230
- LExit:
231
- return hr;
232
- }
233
-
234
- void SendProgressIfNotTransferring(
235
- __in IBackgroundCopyJob* pJob
236
- )
237
- {
238
- HRESULT hr = S_OK;
239
- BG_JOB_STATE state = BG_JOB_STATE_ERROR;
240
-
241
- ::EnterCriticalSection(&m_cs);
242
-
243
- hr = pJob->GetState(&state);
244
- ExitOnFailure(hr, "Failed to get BITS job state.");
245
-
246
- if (BG_JOB_STATE_TRANSFERRING != state)
247
- {
248
- hr = SendProgress(pJob);
249
- ExitOnFailure(hr, "Failure while sending progress.");
250
- }
251
-
252
- LExit:
253
- ::LeaveCriticalSection(&m_cs);
254
-
255
- ProcessResult(BG_ERROR_CONTEXT_NONE, hr);
256
- }
257
-
258
- void ProcessResult(
259
- __in BG_ERROR_CONTEXT context,
260
- __in HRESULT hr
261
- )
262
- {
263
- if (FAILED(hr))
264
- {
265
- m_contextError = context;
266
- m_hrError = hr;
267
-
268
- ::SetEvent(m_hComplete);
269
- }
270
- }
271
-
272
-public:
273
- CBurnBitsCallback(
274
- __in_opt DOWNLOAD_CACHE_CALLBACK* pCallback,
275
- __out HRESULT* pHR
276
- )
277
- {
278
- HRESULT hr = S_OK;
279
-
280
- m_cReferences = 1;
281
- ::InitializeCriticalSection(&m_cs);
282
-
283
- m_hComplete = ::CreateEventW(NULL, TRUE, FALSE, NULL);
284
- ExitOnNullWithLastError(m_hComplete, hr, "Failed to create BITS job complete event.");
285
-
286
- m_contextError = BG_ERROR_CONTEXT_NONE;
287
- m_hrError = S_OK;
288
-
289
- m_pCallback = pCallback;
290
-
291
- LExit:
292
- *pHR = hr;
293
- }
294
-
295
- ~CBurnBitsCallback()
296
- {
297
- m_pCallback = NULL;
298
- ReleaseHandle(m_hComplete);
299
- ::DeleteCriticalSection(&m_cs);
300
- }
301
-
302
-private:
303
- long m_cReferences;
304
- CRITICAL_SECTION m_cs;
305
- BG_ERROR_CONTEXT m_contextError;
306
- HRESULT m_hrError;
307
-
308
- HANDLE m_hComplete;
309
- DOWNLOAD_CACHE_CALLBACK* m_pCallback;
310
-};
311
-
312
-
313
-extern "C" HRESULT BitsDownloadUrl(
314
- __in DOWNLOAD_CACHE_CALLBACK* pCallback,
315
- __in DOWNLOAD_SOURCE* pDownloadSource,
316
- __in_z LPCWSTR wzDestinationPath
317
- )
318
-{
319
- HRESULT hr = S_OK;
320
- LPWSTR sczDownloadUrl = NULL;
321
- CBurnBitsCallback* pBitsCallback = NULL;
322
- IBackgroundCopyJob* pJob = NULL;
323
- BOOL fRetry = FALSE;
324
- BG_ERROR_CONTEXT contextError = BG_ERROR_CONTEXT_NONE;
325
-
326
- // If the URL isn't at least 8 characters long (e.g.: "bits://X") then it
327
- // isn't going to do us any good.
328
- if (8 > lstrlenW(pDownloadSource->sczUrl))
329
- {
330
- hr = E_INVALIDARG;
331
- ExitOnRootFailure(hr, "Invalid BITS engine URL: %ls", pDownloadSource->sczUrl);
332
- }
333
-
334
- // Fix the URL to be "http" instead of "bits".
335
- hr = StrAllocString(&sczDownloadUrl, pDownloadSource->sczUrl, 0);
336
- ExitOnFailure(hr, "Failed to copy download URL.");
337
-
338
- sczDownloadUrl[0] = L'h';
339
- sczDownloadUrl[1] = L't';
340
- sczDownloadUrl[2] = L't';
341
- sczDownloadUrl[3] = L'p';
342
-
343
- // Create and configure the BITS job.
344
- hr = CreateJob(&pJob);
345
- ExitOnFailure(hr, "Failed to create BITS job.");
346
-
347
- hr = SetCredentials(pJob, pDownloadSource->sczUser, pDownloadSource->sczPassword);
348
- ExitOnFailure(hr, "Failed to set credentials for BITS job.");
349
-
350
- hr = pJob->AddFile(sczDownloadUrl, wzDestinationPath);
351
- ExitOnFailure(hr, "Failed to add file to BITS job.");
352
-
353
- // Set the callback into the BITs job.
354
- pBitsCallback = new CBurnBitsCallback(pCallback, &hr);
355
- ExitOnNull(pBitsCallback, hr, E_OUTOFMEMORY, "Failed to create BITS job callback.");
356
- ExitOnFailure(hr, "Failed to initialize BITS job callback.");
357
-
358
- hr = pJob->SetNotifyInterface(pBitsCallback);
359
- ExitOnFailure(hr, "Failed to set callback interface for BITS job.");
360
-
361
- // Go into our retry download loop.
362
- do
363
- {
364
- fRetry = FALSE;
365
-
366
- pBitsCallback->Reset(); // ensure we are ready for the download to start (again?).
367
-
368
- hr = pJob->Resume();
369
- ExitOnFailure(hr, "Falied to start BITS job.");
370
-
371
- hr = pBitsCallback->WaitForCompletion(pJob);
372
- ExitOnFailure(hr, "Failed while waiting for BITS download.");
373
-
374
- // See if there are any errors.
375
- pBitsCallback->GetError(&hr, &contextError);
376
- if (HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT) == hr)
377
- {
378
- ExitFunction();
379
- }
380
- else if (FAILED(hr))
381
- {
382
- SendError(pCallback, pJob, hr, contextError, &fRetry);
383
- }
384
- } while (fRetry);
385
- ExitOnFailure(hr, "Failed to download BITS job.");
386
-
387
- // After all that, we should have the file downloaded so complete the job to get
388
- // the file copied to the destination.
389
- hr = pJob->Complete();
390
- ExitOnFailure(hr, "Failed to complete BITS job.");
391
-
392
-LExit:
393
- if (pJob)
394
- {
395
- pJob->SetNotifyInterface(NULL);
396
-
397
- // If we failed, kill the job.
398
- if (FAILED(hr))
399
- {
400
- pJob->Cancel(); // TODO: should we cancel if we're going to retry the package? Probably the right thing to do.
401
- }
402
- }
403
-
404
- ReleaseObject(pBitsCallback);
405
- ReleaseObject(pJob);
406
- ReleaseStr(sczDownloadUrl);
407
-
408
- return hr;
409
-}
410
-
411
-static HRESULT CreateJob(
412
- __out IBackgroundCopyJob** ppJob
413
- )
414
-{
415
- HRESULT hr = S_OK;
416
- IBackgroundCopyManager* pBitsManager = NULL;
417
- IBackgroundCopyJob* pJob = NULL;
418
- GUID guidJob = { };
419
-
420
- hr = ::CoCreateInstance(__uuidof(BackgroundCopyManager), NULL, CLSCTX_ALL, __uuidof(IBackgroundCopyManager), reinterpret_cast<LPVOID*>(&pBitsManager));
421
- ExitOnFailure(hr, "Failed to create IBackgroundCopyManager.");
422
-
423
- hr = pBitsManager->CreateJob(L"WixBurn", BG_JOB_TYPE_DOWNLOAD, &guidJob, &pJob);
424
- ExitOnFailure(hr, "Failed to create BITS job.");
425
-
426
- hr = pJob->SetNotifyFlags(BG_NOTIFY_JOB_TRANSFERRED | BG_NOTIFY_JOB_ERROR | BG_NOTIFY_JOB_MODIFICATION);
427
- ExitOnFailure(hr, "Failed to set notification flags for BITS job.");
428
-
429
- hr = pJob->SetNoProgressTimeout(BITSENGINE_NO_PROGRESS_TIMEOUT); // use 2 minutes since default is 14 days.
430
- ExitOnFailure(hr, "Failed to set progress timeout.");
431
-
432
- hr = pJob->SetPriority(BG_JOB_PRIORITY_FOREGROUND);
433
- ExitOnFailure(hr, "Failed to set BITS job to foreground.");
434
-
435
- *ppJob = pJob;
436
- pJob = NULL;
437
-
438
-LExit:
439
- ReleaseObject(pJob);
440
- ReleaseObject(pBitsManager);
441
-
442
- return hr;
443
-}
444
-
445
-static HRESULT SetCredentials(
446
- __in IBackgroundCopyJob* pJob,
447
- __in_z_opt LPCWSTR wzUser,
448
- __in_z_opt LPCWSTR wzPassword
449
- )
450
-{
451
- HRESULT hr = S_OK;
452
- IBackgroundCopyJob2* pJob2 = NULL;
453
- BG_AUTH_CREDENTIALS ac = { };
454
-
455
- // If IBackgroundCopyJob2::SetCredentials() is supported, set the username/password.
456
- hr = pJob->QueryInterface(IID_PPV_ARGS(&pJob2));
457
- if (SUCCEEDED(hr))
458
- {
459
- ac.Target = BG_AUTH_TARGET_PROXY;
460
- ac.Credentials.Basic.UserName = const_cast<LPWSTR>(wzUser);
461
- ac.Credentials.Basic.Password = const_cast<LPWSTR>(wzPassword);
462
-
463
- ac.Scheme = BG_AUTH_SCHEME_NTLM;
464
- hr = pJob2->SetCredentials(&ac);
465
- ExitOnFailure(hr, "Failed to set background copy NTLM credentials");
466
-
467
- ac.Scheme = BG_AUTH_SCHEME_NEGOTIATE;
468
- hr = pJob2->SetCredentials(&ac);
469
- ExitOnFailure(hr, "Failed to set background copy negotiate credentials");
470
- }
471
-
472
- hr = S_OK;
473
-
474
-LExit:
475
- ReleaseObject(pJob2);
476
-
477
- return hr;
478
-}
479
-
480
-static void SendError(
481
- __in DOWNLOAD_CACHE_CALLBACK* pCacheCallback,
482
- __in IBackgroundCopyJob* pJob,
483
- __in HRESULT hrError,
484
- __in BG_ERROR_CONTEXT /*context*/,
485
- __out_opt BOOL* pfRetry
486
- )
487
-{
488
- HRESULT hr = S_OK;
489
- IBackgroundCopyError* pError = NULL;
490
- LPWSTR pszErrorDescription = NULL;
491
-
492
- hr = pJob->GetError(&pError);
493
- if (SUCCEEDED(hr))
494
- {
495
- pError->GetErrorDescription(LANGIDFROMLCID(::GetThreadLocale()), &pszErrorDescription);
496
- }
497
-
498
- CacheSendErrorCallback(pCacheCallback, hrError, pszErrorDescription, pfRetry);
499
-
500
- if (pszErrorDescription)
501
- {
502
- ::CoTaskMemFree(pszErrorDescription);
503
- }
504
- ReleaseObject(pError);
505
-}
src/engine/bitsengine.h
deleted
-23
@@ -1,23 +0,0 @@
1
-#pragma once
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
-
4
-
5
-#ifdef __cplusplus
6
-extern "C" {
7
-#endif
8
-
9
-// structs
10
-
11
-
12
-// functions
13
-
14
-HRESULT BitsDownloadUrl(
15
- __in DOWNLOAD_CACHE_CALLBACK* pCallback,
16
- __in DOWNLOAD_SOURCE* pDownloadSource,
17
- __in LPCWSTR wzDestinationPath
18
- );
19
-
20
-
21
-#ifdef __cplusplus
22
-}
23
-#endif
src/engine/engine.vcxproj
+2
-4
@@ -1,7 +1,7 @@
1
<?xml version="1.0" encoding="utf-8"?>
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
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4
- <Import Project="..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" />
4
+ <Import Project="..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" />
5
<ItemGroup Label="ProjectConfigurations">
6
<ProjectConfiguration Include="Debug|Win32">
7
<Configuration>Debug</Configuration>
@@ -45,7 +45,6 @@
45
<ItemGroup>
46
<ClCompile Include="apply.cpp" />
47
<ClCompile Include="approvedexe.cpp" />
48
- <ClCompile Include="bitsengine.cpp" />
48
<ClCompile Include="burnextension.cpp" />
49
<ClCompile Include="detect.cpp" />
50
<ClCompile Include="embedded.cpp" />
@@ -90,7 +89,6 @@
89
<ItemGroup>
90
<ClInclude Include="apply.h" />
91
<ClInclude Include="approvedexe.h" />
93
- <ClInclude Include="bitsengine.h" />
92
<ClInclude Include="..\WixToolset.BootstrapperCore.Native\inc\BootstrapperApplication.h" />
93
<ClInclude Include="..\WixToolset.BootstrapperCore.Native\inc\BootstrapperEngine.h" />
94
<ClInclude Include="..\WixToolset.BootstrapperCore.Native\inc\BundleExtension.h" />
@@ -167,7 +165,7 @@ rc.exe -fo "$(OutDir)engine.res" "$(IntDir)engine.messages.rc"</Command>
165
<PropertyGroup>
166
<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>
167
</PropertyGroup>
170
- <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props'))" />
168
+ <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props'))" />
169
<Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets'))" />
170
</Target>
171
</Project>
\ No newline at end of file
src/engine/packages.config
+1
-1
@@ -1,5 +1,5 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<packages>
3
<package id="Nerdbank.GitVersioning" version="3.3.37" targetFramework="native" developmentDependency="true" />
4
- <package id="WixToolset.DUtil" version="4.0.61" targetFramework="native" />
4
+ <package id="WixToolset.DUtil" version="4.0.62" targetFramework="native" />
5
</packages>
\ No newline at end of file
src/engine/precomp.h
-2
@@ -4,7 +4,6 @@
4
5
#include <windows.h>
6
#include <aclapi.h>
7
-#include <Bits.h>
7
8
#include <math.h>
9
#include <msiquery.h>
@@ -96,7 +95,6 @@
95
#include "manifest.h"
96
#include "splashscreen.h"
97
#include "uithread.h"
99
-#include "bitsengine.h"
98
#include "netfxchainer.h"
99
100
#include "externalengine.h"
src/stub/packages.config
+1
-1
@@ -4,5 +4,5 @@
4
<package id="Microsoft.SourceLink.Common" version="1.0.0" targetFramework="native" developmentDependency="true" />
5
<package id="Microsoft.SourceLink.GitHub" version="1.0.0" targetFramework="native" developmentDependency="true" />
6
<package id="Nerdbank.GitVersioning" version="3.3.37" targetFramework="native" developmentDependency="true" />
7
- <package id="WixToolset.DUtil" version="4.0.61" targetFramework="native" />
7
+ <package id="WixToolset.DUtil" version="4.0.62" targetFramework="native" />
8
</packages>
\ No newline at end of file
src/stub/stub.vcxproj
+2
-2
@@ -5,7 +5,7 @@
5
<Import Project="..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props" Condition="Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" />
6
<Import Project="..\..\packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props" Condition="Exists('..\..\packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props')" />
7
<Import Project="..\..\packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props" Condition="Exists('..\..\packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props')" />
8
- <Import Project="..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" />
8
+ <Import Project="..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" />
9
10
<ItemGroup Label="ProjectConfigurations">
11
<ProjectConfiguration Include="Debug|Win32">
@@ -117,6 +117,6 @@
117
<Error Condition="!Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props'))" />
118
<Error Condition="!Exists('..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets'))" />
119
<Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.3.3.37\build\Nerdbank.GitVersioning.targets'))" />
120
- <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props'))" />
120
+ <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props'))" />
121
</Target>
122
</Project>
\ No newline at end of file
src/test/BurnUnitTest/BurnUnitTest.vcxproj
+2
-2
@@ -4,7 +4,7 @@
4
5
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6
<Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" />
7
- <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" />
7
+ <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" />
8
<ItemGroup Label="ProjectConfigurations">
9
<ProjectConfiguration Include="Debug|ARM64">
10
<Configuration>Debug</Configuration>
@@ -95,6 +95,6 @@
95
</PropertyGroup>
96
<Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.props'))" />
97
<Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.47\build\WixBuildTools.TestSupport.Native.targets'))" />
98
- <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.61\build\WixToolset.DUtil.props'))" />
98
+ <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.62\build\WixToolset.DUtil.props'))" />
99
</Target>
100
</Project>
\ No newline at end of file
src/test/BurnUnitTest/packages.config
+1
-1
@@ -10,5 +10,5 @@
10
<package id="xunit.runner.visualstudio" version="2.4.1" />
11
<package id="WixBuildTools.TestSupport" version="4.0.47" />
12
<package id="WixBuildTools.TestSupport.Native" version="4.0.47" />
13
- <package id="WixToolset.DUtil" version="4.0.61" targetFramework="native" />
13
+ <package id="WixToolset.DUtil" version="4.0.62" targetFramework="native" />
14
</packages>
\ No newline at end of file
src/test/BurnUnitTest/precomp.h
-1
@@ -67,7 +67,6 @@
67
#include "embedded.h"
68
#include "manifest.h"
69
#include "splashscreen.h"
70
-#include "bitsengine.h"
70
#include "detect.h"
71
72
#pragma managed