1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
// 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.
#include "precomp.h"
static HINSTANCE vhInstance = NULL;
static IBootstrapperApplication* vpApplication = NULL;
static void CALLBACK WixstdbaTraceError(
__in_z LPCSTR szFile,
__in int iLine,
__in REPORT_LEVEL rl,
__in UINT source,
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
__in va_list args
);
extern "C" BOOL WINAPI DllMain(
IN HINSTANCE hInstance,
IN DWORD dwReason,
IN LPVOID /* pvReserved */
)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
::DisableThreadLibraryCalls(hInstance);
vhInstance = hInstance;
break;
case DLL_PROCESS_DETACH:
vhInstance = NULL;
break;
}
return TRUE;
}
extern "C" HRESULT WINAPI BootstrapperApplicationCreate(
__in const BOOTSTRAPPER_CREATE_ARGS* pArgs,
__inout BOOTSTRAPPER_CREATE_RESULTS* pResults
)
{
HRESULT hr = S_OK;
IBootstrapperEngine* pEngine = NULL;
DutilInitialize(&WixstdbaTraceError);
hr = BalInitializeFromCreateArgs(pArgs, &pEngine);
ExitOnFailure(hr, "Failed to initialize Bal.");
hr = CreateBootstrapperApplication(vhInstance, FALSE, S_OK, pEngine, pArgs, pResults, &vpApplication);
BalExitOnFailure(hr, "Failed to create bootstrapper application interface.");
LExit:
ReleaseObject(pEngine);
return hr;
}
extern "C" void WINAPI BootstrapperApplicationDestroy()
{
ReleaseNullObject(vpApplication);
BalUninitialize();
DutilUninitialize();
}
extern "C" HRESULT WINAPI DncPrereqBootstrapperApplicationCreate(
__in HRESULT hrHostInitialization,
__in IBootstrapperEngine* pEngine,
__in const BOOTSTRAPPER_CREATE_ARGS* pArgs,
__inout BOOTSTRAPPER_CREATE_RESULTS* pResults
)
{
HRESULT hr = S_OK;
DutilInitialize(&WixstdbaTraceError);
BalInitialize(pEngine);
hr = CreateBootstrapperApplication(vhInstance, TRUE, hrHostInitialization, pEngine, pArgs, pResults, &vpApplication);
BalExitOnFailure(hr, "Failed to create .NET Core prerequisite bootstrapper application interface.");
LExit:
return hr;
}
extern "C" void WINAPI DncPrereqBootstrapperApplicationDestroy()
{
ReleaseNullObject(vpApplication);
BalUninitialize();
DutilUninitialize();
}
extern "C" HRESULT WINAPI MbaPrereqBootstrapperApplicationCreate(
__in HRESULT hrHostInitialization,
__in IBootstrapperEngine* pEngine,
__in const BOOTSTRAPPER_CREATE_ARGS* pArgs,
__inout BOOTSTRAPPER_CREATE_RESULTS* pResults
)
{
HRESULT hr = S_OK;
DutilInitialize(&WixstdbaTraceError);
BalInitialize(pEngine);
hr = CreateBootstrapperApplication(vhInstance, TRUE, hrHostInitialization, pEngine, pArgs, pResults, &vpApplication);
BalExitOnFailure(hr, "Failed to create managed prerequisite bootstrapper application interface.");
LExit:
return hr;
}
extern "C" void WINAPI MbaPrereqBootstrapperApplicationDestroy()
{
ReleaseNullObject(vpApplication);
BalUninitialize();
DutilUninitialize();
}
static void CALLBACK WixstdbaTraceError(
__in_z LPCSTR /*szFile*/,
__in int /*iLine*/,
__in REPORT_LEVEL /*rl*/,
__in UINT source,
__in HRESULT hrError,
__in_z __format_string LPCSTR szFormat,
__in va_list args
)
{
// BalLogError currently uses the Exit... macros,
// so if expanding the scope need to ensure this doesn't get called recursively.
if (DUTIL_SOURCE_THMUTIL == source)
{
BalLogErrorArgs(hrError, szFormat, args);
}
}
|