/// <summary>
///
/// </summary>
/// <param name="from"></param>
/// <param name="sourceHost"></param>
/// <param name="packageZip"></param>
/// <param name="appRootFolder"></param>
/// <param name="imageResourceFolder">Folder where app image will be created</param>
/// <param name="config"></param>
//public static void Upgrade(DeployedConfigFile from, string packageZip, string appRootFolder, string imageResourceFolder, out DeployedConfigFile config) {
// lock (PackageManager.locker) {
// PackageManager.Unpack(packageZip, appRootFolder, imageResourceFolder, out config);
// PackageManager.Delete(from, imageResourceFolder);
// }
//}
/// <summary>
///
/// </summary>
/// <param name="from"></param>
/// <param name="sourceHost"></param>
/// <param name="packageZip"></param>
/// <param name="appRootFolder"></param>
/// <param name="imageResourceFolder">Folder where app image will be created</param>
/// <param name="config"></param>
//public static void Upgrade(DeployedConfigFile from, string sourceHost, Stream packageZip, string appRootFolder, string imageResourceFolder, out DeployedConfigFile config) {
// lock (PackageManager.locker) {
// PackageManager.Unpack(packageZip, sourceHost, appRootFolder, imageResourceFolder, out config);
// PackageManager.Delete(from, imageResourceFolder);
// }
//}
/// <summary>
/// Delete unpacked package
/// </summary>
/// <param name="config"></param>
public static void Delete(DeployedConfigFile config, string imageResourceFolder) {
lock (PackageManager.locker) {
if (string.IsNullOrEmpty(config.File)) {
throw new InvalidOperationException(string.Format("Failed to uninstall application, Missing folder settings."));
}
string folder = Path.GetDirectoryName(config.File);
if (!Directory.Exists(folder)) {
throw new InvalidOperationException(string.Format("Failed to uninstall application, invalid folder path {0}", folder));
}
config.Verify();
DirectoryInfo di = new DirectoryInfo(folder);
di.Delete(true); // Remove version folder.
// Delete app image
string imageFile = Path.Combine(imageResourceFolder, config.ImageUri);
if (File.Exists(imageFile)) {
File.Delete(imageFile);
}
// Clean up empty folders
DirectoryInfo channelFolder = di.Parent;
if (Utils.IsDirectoryEmpty(channelFolder.FullName)) {
channelFolder.Delete();
DirectoryInfo nameSpaceFolder = di.Parent.Parent;
if (Utils.IsDirectoryEmpty(nameSpaceFolder.FullName)) {
nameSpaceFolder.Delete();
}
}
}
}