private void InstallPackage(string downloadPath)
{
var firstOrDefault = Loader.LocalPackages.FirstOrDefault(pkg => pkg.ID == DownloadRequest.asset_id.ToString());
if (firstOrDefault != null)
{
var dynModel = Model;
try
{
firstOrDefault.UninstallCore(dynModel.CustomNodeManager, Loader, dynModel.PreferenceSettings);
}
catch
{
MessageBox.Show(String.Format(Resources.MessageFailToUninstallPackage,
ProductName,
DownloadRequest.asset_name.ToString()),
Resources.UninstallFailureMessageBoxTitle,
MessageBoxButton.OK, MessageBoxImage.Error);
}
}
var settings = Model.PreferenceSettings;
PackageDownloadHandle packageDownloadHandle = new PackageDownloadHandle();
packageDownloadHandle.Name = DownloadRequest.asset_name;
packageDownloadHandle.Done(downloadPath);
//string installedPkgPath = string.Empty;
Package dynPkg = null;
if (packageDownloadHandle.Extract(Model, this.PackageInstallPath, out dynPkg))
{
var p = Package.FromDirectory(dynPkg.RootDirectory, Model.Logger);
p.ID = DownloadRequest.asset_id;
Application.Current.Dispatcher.Invoke((Action)(() =>
{
Loader.Load(p);
}));
packageDownloadHandle.DownloadState = PackageDownloadHandle.State.Installed;
this.PackageInstallPath = string.Empty;
}
}