@@ -69,7 +69,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
69
69
70
70
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentResult DeploymentManager::Repair ()
71
71
{
72
- winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentInitializeOptions options{};
72
+ winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentRepairOptions options{};
73
73
return Initialize (GetCurrentFrameworkPackageFullName (), options, true );
74
74
}
75
75
@@ -165,11 +165,14 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
165
165
return DeploymentManager::Initialize (packageFullName, deploymentInitializeOptions);
166
166
}
167
167
168
+ template <typename TOptions>
168
169
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentResult DeploymentManager::Initialize (
169
- hstring const & packageFullName,
170
- winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentInitializeOptions const & deploymentInitializeOptions,
171
- bool isRepair)
170
+ hstring const & packageFullName, TOptions const & tOptions, bool isRepair)
172
171
{
172
+ THROW_HR_IF (HRESULT_FROM_WIN32 (ERROR_INVALID_DATATYPE),
173
+ (!isRepair && typeid (tOptions).name () != typeid (DeploymentInitializeOptions).name ()) ||
174
+ (isRepair && typeid (tOptions).name () != typeid (DeploymentRepairOptions).name ()));
175
+
173
176
auto & initializeActivityContext{ ::WindowsAppRuntime::Deployment::Activity::Context::Get () };
174
177
const bool isPackagedProcess{ AppModel::Identity::IsPackagedProcess () };
175
178
const int integrityLevel = Security::IntegrityLevel::GetIntegrityLevel ();
@@ -179,7 +182,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
179
182
}
180
183
181
184
::WindowsAppRuntime::Deployment::Activity::Context::Get ().SetIsFullTrustPackage();
182
- initializeActivityContext.GetActivity ().Start (deploymentInitializeOptions .ForceDeployment (),
185
+ initializeActivityContext.GetActivity ().Start (tOptions .ForceDeployment (),
183
186
Security::IntegrityLevel::IsElevated (),
184
187
isPackagedProcess,
185
188
initializeActivityContext.GetIsFullTrustPackage (),
@@ -198,7 +201,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
198
201
199
202
try
200
203
{
201
- deploymentResult = _Initialize (initializeActivityContext, packageFullName, deploymentInitializeOptions , isRepair);
204
+ deploymentResult = _Initialize (initializeActivityContext, packageFullName, tOptions , isRepair);
202
205
}
203
206
catch (winrt::hresult_error const & e)
204
207
{
@@ -227,7 +230,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
227
230
DebugBreak ();
228
231
}
229
232
230
- if (deploymentInitializeOptions .OnErrorShowUI () ||
233
+ if (tOptions .OnErrorShowUI () ||
231
234
::Microsoft::Configuration::IsOptionEnabled (L" MICROSOFT_WINDOWSAPPRUNTIME_DEPLOYMENT_INITIALIZE_ONERRORSHOWUI" ))
232
235
{
233
236
LOG_IF_FAILED (Initialize_OnError_ShowUI (packageIdentity, release));
@@ -240,10 +243,11 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
240
243
return deploymentResult;
241
244
}
242
245
246
+ template <typename TOptions>
243
247
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentResult DeploymentManager::_Initialize (
244
248
::WindowsAppRuntime::Deployment::Activity::Context& initializeActivityContext,
245
249
hstring const & packageFullName,
246
- winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentInitializeOptions const & deploymentInitializeOptions ,
250
+ TOptions const & tOptions ,
247
251
bool isRepair)
248
252
{
249
253
auto getStatusResult{ DeploymentManager::GetStatus (packageFullName) };
@@ -257,7 +261,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
257
261
}
258
262
259
263
std::wstring frameworkPackageFullName{ packageFullName };
260
- auto deployPackagesResult{ Deploy (frameworkPackageFullName, deploymentInitializeOptions .ForceDeployment ()) };
264
+ auto deployPackagesResult{ Deploy (frameworkPackageFullName, tOptions .ForceDeployment ()) };
261
265
DeploymentStatus status{};
262
266
if (SUCCEEDED (deployPackagesResult))
263
267
{
0 commit comments