public void Execute(PackageOperationType operationType, IPackageDetails packageDetails, IRepository sourceRepository = null, bool allowedPrerelease = false)
{
Argument.IsNotNull(() => packageDetails);
using (_pleaseWaitService.WaitingScope())
{
using (_packageOperationContextService.UseOperationContext(operationType, packageDetails))
{
_packageOperationContextService.CurrentContext.Repository = sourceRepository;
switch (operationType)
{
case PackageOperationType.Uninstall:
_packageOperationService.UninstallPackage(packageDetails);
break;
case PackageOperationType.Install:
_packageOperationService.InstallPackage(packageDetails, allowedPrerelease);
break;
case PackageOperationType.Update:
_packageOperationService.UpdatePackages(packageDetails, allowedPrerelease);
break;
}
}
}
packageDetails.IsInstalled = null;
}