Skip to content

Commit cd53458

Browse files
author
Santosh Chintalapati
committed
Use Function Templates to implement Repair
1 parent 28e3b21 commit cd53458

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

dev/Deployment/Deployment.idl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,12 @@ namespace Microsoft.Windows.ApplicationModel.WindowsAppRuntime
8888
/// Checks the status of the WindowsAppRuntime of the current package and attempts to
8989
/// repair already installed WinAppSDK packages.
9090
[contract(DeploymentContract, 3)]
91-
[overload("Repair")]
9291
static DeploymentResult Repair();
9392

9493
/// Checks the status of the WindowsAppRuntime of the current package and attempts to
9594
/// repair already installed WinAppSDK packages, while applying the DeploymentRepairOptions
9695
/// passed in.
9796
[contract(DeploymentContract, 3)]
98-
[overload("Repair")]
9997
static DeploymentResult Repair(Microsoft.Windows.ApplicationModel.WindowsAppRuntime.DeploymentRepairOptions deploymentRepairOptions);
10098
};
10199
}

dev/Deployment/DeploymentManager.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
6969

7070
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentResult DeploymentManager::Repair()
7171
{
72-
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentInitializeOptions options{};
72+
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentRepairOptions options{};
7373
return Initialize(GetCurrentFrameworkPackageFullName(), options, true);
7474
}
7575

@@ -165,11 +165,14 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
165165
return DeploymentManager::Initialize(packageFullName, deploymentInitializeOptions);
166166
}
167167

168+
template <typename TOptions>
168169
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)
172171
{
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+
173176
auto& initializeActivityContext{ ::WindowsAppRuntime::Deployment::Activity::Context::Get() };
174177
const bool isPackagedProcess{ AppModel::Identity::IsPackagedProcess() };
175178
const int integrityLevel = Security::IntegrityLevel::GetIntegrityLevel();
@@ -179,7 +182,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
179182
}
180183

181184
::WindowsAppRuntime::Deployment::Activity::Context::Get().SetIsFullTrustPackage();
182-
initializeActivityContext.GetActivity().Start(deploymentInitializeOptions.ForceDeployment(),
185+
initializeActivityContext.GetActivity().Start(tOptions.ForceDeployment(),
183186
Security::IntegrityLevel::IsElevated(),
184187
isPackagedProcess,
185188
initializeActivityContext.GetIsFullTrustPackage(),
@@ -198,7 +201,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
198201

199202
try
200203
{
201-
deploymentResult = _Initialize(initializeActivityContext, packageFullName, deploymentInitializeOptions, isRepair);
204+
deploymentResult = _Initialize(initializeActivityContext, packageFullName, tOptions, isRepair);
202205
}
203206
catch (winrt::hresult_error const& e)
204207
{
@@ -227,7 +230,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
227230
DebugBreak();
228231
}
229232

230-
if (deploymentInitializeOptions.OnErrorShowUI() ||
233+
if (tOptions.OnErrorShowUI() ||
231234
::Microsoft::Configuration::IsOptionEnabled(L"MICROSOFT_WINDOWSAPPRUNTIME_DEPLOYMENT_INITIALIZE_ONERRORSHOWUI"))
232235
{
233236
LOG_IF_FAILED(Initialize_OnError_ShowUI(packageIdentity, release));
@@ -240,10 +243,11 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
240243
return deploymentResult;
241244
}
242245

246+
template <typename TOptions>
243247
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentResult DeploymentManager::_Initialize(
244248
::WindowsAppRuntime::Deployment::Activity::Context& initializeActivityContext,
245249
hstring const& packageFullName,
246-
winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::DeploymentInitializeOptions const& deploymentInitializeOptions,
250+
TOptions const& tOptions,
247251
bool isRepair)
248252
{
249253
auto getStatusResult{ DeploymentManager::GetStatus(packageFullName) };
@@ -257,7 +261,7 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
257261
}
258262

259263
std::wstring frameworkPackageFullName{ packageFullName };
260-
auto deployPackagesResult{ Deploy(frameworkPackageFullName, deploymentInitializeOptions.ForceDeployment()) };
264+
auto deployPackagesResult{ Deploy(frameworkPackageFullName, tOptions.ForceDeployment()) };
261265
DeploymentStatus status{};
262266
if (SUCCEEDED(deployPackagesResult))
263267
{

dev/Deployment/DeploymentManager.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem
2424
private:
2525
static WindowsAppRuntime::DeploymentResult GetStatus(hstring const& packageFullName);
2626
static WindowsAppRuntime::DeploymentResult Initialize(hstring const& packageFullName);
27-
static WindowsAppRuntime::DeploymentResult Initialize(hstring const& packageFullName,
28-
WindowsAppRuntime::DeploymentInitializeOptions const& deploymentInitializeOptions,
29-
bool isRepair = false);
27+
template <typename TOptions>
28+
static WindowsAppRuntime::DeploymentResult Initialize(hstring const& packageFullName, TOptions const& tOoptions, bool isRepair = false);
3029

3130
private:
31+
template <typename TOptions>
3232
static WindowsAppRuntime::DeploymentResult _Initialize(
3333
::WindowsAppRuntime::Deployment::Activity::Context& initializeActivityContext,
3434
hstring const& packageFullName,
35-
WindowsAppRuntime::DeploymentInitializeOptions const& deploymentInitializeOptions,
35+
TOptions const& tOoptions,
3636
bool isRepair);
3737

3838
private:

0 commit comments

Comments
 (0)