public static void ReinstallLocalPackage(string UID, ProjectPackMan openProject, string _namespace, out LogDataList log) { if (openProject == null || openProject.InstalledPackages == null) { try { throw new InstalledPackageNotFoundException(ExceptionMessages.General.PackWIDNotFound(UID)); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.PackageMissng(UID), _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } InstalledPackage foundInstalledPackage = openProject.InstalledPackages.FindByUID(UID); if (foundInstalledPackage == null) { try { throw new InstalledPackageNotFoundException(ExceptionMessages.General.PackWIDNotFound(UID)); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.PackageMissng(UID), _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } ReinstallLocalPackage(foundInstalledPackage, openProject, _namespace, out log); }
static InstalledPackage CreateLocalInstalledFile(RMPackage package, string sourceFolder, string packManStorePath, string _namespace, out LogDataList log) { log = new LogDataList(); string newInstalledDir = packManStorePath + "\\" + package.UniqueIDInMD5; LogDataList outLog = null; try { CreateInstalledFile(package, sourceFolder, newInstalledDir, _namespace, out outLog); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.UNABLE_CREATE_INSTALLED_FILES, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); InstalledPackage retVal = null; try { retVal = new InstalledPackage(newInstalledDir, _namespace, out outLog); } catch (Exception ex) { log.WriteWarningLog(InstallerMessages.Warning.UNABLE_LOAD_PACK, _namespace, ex); } log.AppendLogs(outLog); return(retVal); }
public static InstalledPackage InstallLocalPackage(string packagePath, string projectPath, string _namespace, out LogDataList log, bool ignoreClash = false, bool alreadyCopiedToTemp = false, bool procEvents = true) { if (string.IsNullOrWhiteSpace(projectPath)) { try { throw new ArgumentNullException(ExceptionMessages.General.PROJ_PATH_ARG_NULL); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.UNABLE_OPEN_LOCAL_PACKAGE_NULL, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } log = new LogDataList(); ProjectPackMan openedProject = null; LogDataList outLog = null; try { openedProject = new ProjectPackMan(projectPath, _namespace, out outLog); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.UNABLE_OPEN_LOCAL_PACKAGE + projectPath + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); InstalledPackage retVal = InstallLocalPackage(packagePath, openedProject, _namespace, out outLog, ignoreClash, alreadyCopiedToTemp, procEvents); log.AppendLogs(outLog); return(retVal); }
public static InstalledPackage UpdateLocalPackage(string pathToInstaller, string pathToProject, bool packageAlreadyCopiedToTem, string _namespace, out LogDataList log, bool skipInstallFileExistenceCheck = false) { if (string.IsNullOrWhiteSpace(pathToProject)) { try { throw new ArgumentNullException(ExceptionMessages.General.PROJ_PATH_ARG_NULL); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Uninstaller.Error.UNABLE_OPEN_LOCAL_PACKAGE_NULL, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } log = new LogDataList(); LogDataList outLog = null; ProjectPackMan openedProject = null; try { openedProject = new ProjectPackMan(pathToProject, _namespace, out outLog); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Uninstaller.Error.UNABLE_OPEN_LOCAL_PACKAGE + pathToProject + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); InstalledPackage retVal = UpdateLocalPackage(pathToInstaller, openedProject, packageAlreadyCopiedToTem, _namespace, out outLog, skipInstallFileExistenceCheck); log.AppendLogs(outLog); return(retVal); }
public static void AddSafely(this List <InstalledPackage> installedPackages, InstalledPackage elementToAdd) { if (installedPackages == null) { installedPackages = new List <InstalledPackage>(); } if (elementToAdd != null) { installedPackages.Add(elementToAdd); } }
static InstalledPackage CreateGlobalInstalledFile(RMPackage package, string sourceFolder, string _namespace, out LogDataList log) { log = new LogDataList(); string newInstalledDir = PMFileSystem.PackMan_ManDir + "\\" + package.UniqueIDInMD5; LogDataList outLog = null; try { CreateInstalledFile(package, sourceFolder, newInstalledDir, _namespace, out outLog); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.UNABLE_CREATE_INSTALLED_FILES, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); InstalledPackage retVal = null; try { retVal = new InstalledPackage(newInstalledDir, _namespace, out outLog); } catch (Exception ex) { log.WriteWarningLog(InstallerMessages.Warning.UNABLE_LOAD_PACK, _namespace, ex); } if (outLog != null) { log.Logs.AddRange(outLog.Logs); } try { NewProject.CopyPackageInstallInfo(sourceFolder, _namespace, out outLog); } catch (Exception ex) { log.WriteWarningLog(InstallerMessages.Warning.UNABLE_COPY_NEWDATA_DIR, _namespace, ex); } if (outLog != null) { log.Logs.AddRange(outLog.Logs); } return(retVal); }
public static void MakeInstalledPackageFileForDefPackage(string XmlPath, string _namespace, out LogDataList log, string rootDirectory = null, bool ignoreClash = false) { log = new LogDataList(); log.WriteInformationLog(MakeInstalledPackagesMessages.Info.CreateInstalledPack(XmlPath, rootDirectory), _namespace); LogDataList outLog = null; RMPackage newPack = null; Exception exResult; try { newPack = new RMPackage(XmlPath, _namespace, out outLog, rootDirectory); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(MakeInstalledPackagesMessages.Error.InvalidXML(XmlPath, rootDirectory), _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); string origDir = newPack.XMLDirectory; InstalledPackage installedPackage = GlobalPackages.FindByUID(newPack.UniqueID); string newPackDir = PMFileSystem.PackMan_ManDir + "\\" + newPack.UniqueIDInMD5; if (installedPackage != null) { if (ignoreClash) { Logger.WriteWarningLog(MakeInstalledPackagesMessages.Warning.InstalledPackExistsExit(newPack.Name), _namespace, null); return; } else { log.WriteWarningLog(MakeInstalledPackagesMessages.Warning.InstalledPackExistsReplace(newPack.Name), _namespace); if (Helper.DeleteFolderSafely(newPackDir, _namespace, out exResult, new DeleteFolderLogMessages(deleteFailed: MakeInstalledPackagesMessages.Error.UnableToDeleteExistingFolder)) == DeleteFolderResult.UserCancelled) { throw exResult; } } } string tempPackDir = PMFileSystem.PackMan_TempDir + "\\" + newPack.UniqueIDInMD5; if (Helper.DeleteFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG) == DeleteFolderResult.UserCancelled) { throw exResult; } if (Helper.CreateFolderSafely(newPackDir, _namespace, out exResult, new CreateFolderLogMessages(createFailed: MakeInstalledPackagesMessages.Error.UnableCreateRootDir)) == CreateFolderResult.UserCancelled) { throw exResult; } if (Helper.CreateFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_CREATE_TEMP_DIR_ARG) == CreateFolderResult.UserCancelled) { throw exResult; } string backupXMLInstallerPath = tempPackDir + "\\" + Vars.INSTALL_FILE_DEFAULT_FILENAME; makeInstPackageAnon onErrorBackup = delegate() { if (Helper.ShowMessageBox(MessageBoxStrings.PackageManagement.FailedMakeInstallPackageArch(newPack.Name), MessageBoxStrings.MESSAGEBOX_NAME, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { return(true); } Logger.WriteErrorLog(MakeInstalledPackagesMessages.Error.UserRequiredOnFailedBackUpNo(newPack.Name), _namespace, null, BasicDebugLogger.DebugErrorType.Error); Helper.DeleteFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG); Helper.DeleteFolderSafely(newPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_UNUSED_DIR_ARG); return(false); }; string rootPathOfFiles; if (rootDirectory == null) { rootPathOfFiles = newPack.XMLDirectory; } else { rootPathOfFiles = rootDirectory; } PackageUtil.ExplicitCopyAssetsAndLicFileTo(newPack, rootPathOfFiles, tempPackDir, _namespace); try { newPack.SaveToFile(backupXMLInstallerPath, _namespace, RMPackage.SaveToFileMode.ImplicitAssetInfo, logMessage: new WriteAllTextLogMessages(writeFailed: MakeInstalledPackagesMessages.Error.UnableCreateInstXML, logGroup: log)); } catch { if (onErrorBackup()) { goto onerrorContinue; } throw; } string archDest = newPackDir + "\\" + Vars.INSTALLED_ARCH_FILENAME; try { ArchiveManagement.CreateNewZip(tempPackDir, archDest, _namespace); } catch (Exception ex) { log.WriteWarningLog(MakeInstalledPackagesMessages.Error.UnableMakeBackup(newPack.Name, tempPackDir, archDest), _namespace, ex); if (onErrorBackup()) { goto onerrorContinue; } throw; } onerrorContinue: //newPack.Installed = true; //newPack.SetInstalledPropertyAll(RMPackObject.InstallStatus.Installed); if (newPack.License != null && newPack.License.LicenseSource == RMPackLic.Source.File && RMPackLic.IsAValidLicenseSourceFile(newPack.License.Data, origDir)) { string licSourcePath = origDir + "\\" + newPack.License.Data; string fileName = Path.GetFileName(licSourcePath); string destPath = newPackDir + "\\" + fileName; CopyFileResult copyRes = Helper.CopyFileSafely(licSourcePath, destPath, true, _namespace, out exResult, new CopyFileLogMessages(copyFileFailed: MakeInstalledPackagesMessages.Error.UnableCopyLicenseFile)); if (copyRes == CopyFileResult.UserCancelled || copyRes == CopyFileResult.SourceFileNotFound) { Helper.DeleteFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG); Helper.DeleteFolderSafely(newPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_UNUSED_DIR_ARG); throw exResult; } newPack.License.Data = fileName; } string installedXMLDest = newPackDir + "\\" + Vars.INSTALLED_XML_FILENAME; newPack.Implicit = false; try { newPack.SaveToFile(installedXMLDest, _namespace, RMPackage.SaveToFileMode.ExplicitAssetInfo, logMessage: new WriteAllTextLogMessages(writeFailed: MakeInstalledPackagesMessages.Error.UnableMakeMainXML)); } catch { Helper.DeleteFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG); Helper.DeleteFolderSafely(newPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_UNUSED_DIR_ARG); throw; } try { GlobalPackages.AddSafely(new InstalledPackage(newPackDir, _namespace, out outLog)); } catch (Exception ex) { log.WriteWarningLog(LoggerMessages.PackageManagement.InstalledPackage.Error.ErrorTryLoad(newPackDir), _namespace, ex); if (ex is InvalidInstalledPackageFile castedEx) { log.WriteErrorLog(castedEx.Message, _namespace, castedEx.InnerException); } else { log.WriteErrorLog(ex.Message, _namespace, ex); } } log.AppendLogs(outLog); try { NewProject.CopyPackageInstallInfo(tempPackDir, _namespace, out outLog); } catch (Exception ex) { log.WriteWarningLog(MakeInstalledPackagesMessages.Warning.UnableCopyNewProj(newPack.Name, newPackDir), _namespace, ex); } log.AppendLogs(outLog); Helper.DeleteFolderSafely(tempPackDir, _namespace, out exResult, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG); log.WriteInformationLog(MakeInstalledPackagesMessages.Info.SUCCESS_CREATE + newPack.Name + ".", _namespace); }
public static void ReinstallLocalPackage(InstalledPackage installedPackage, ProjectPackMan openProject, string _namespace, out LogDataList log) { log = new LogDataList(); Logger.WriteInformationLog(LoggerMessages.PackageManagement.Reinstaller.Information.REINSTALL_PACKAGE_START_L, _namespace); Exception outEx; if (openProject == null || !Directory.Exists(openProject.DirectoryPath)) { try { throw new DirectoryNotFoundException(ExceptionMessages.General.OPEN_PROJ_ARG_OR_DIRPATH_NULL); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.OpenProjNullOrMiss(openProject.DirectoryPath), _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } if (installedPackage == null || string.IsNullOrWhiteSpace(installedPackage.ArchivePath) || !File.Exists(installedPackage.ArchivePath)) { try { throw new FileNotFoundException(ExceptionMessages.PackageManagement.Reinstaller.ARCH_INSTALL_FILE_NOT_FOUND); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.ARCH_NOT_FOUND, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } if (Helper.DeleteFolderSafely(PMFileSystem.PackMan_TempInstall, _namespace, out outEx, LoggerMessages.GeneralError.UNABLE_DELETE_TEMP_DIR_ARG) == DeleteFolderResult.UserCancelled) { throw outEx; } if (Helper.CreateFolderSafely(PMFileSystem.PackMan_TempInstall, _namespace, out outEx, LoggerMessages.GeneralError.UNABLE_CREATE_TEMP_DIR_ARG) == CreateFolderResult.UserCancelled) { throw outEx; } if (OnReinstallBegin != null) { OnReinstallBegin.Invoke(installedPackage, false, openProject); } try { ArchiveManagement.ExtractZip(installedPackage.ArchivePath, PMFileSystem.PackMan_TempInstall, _namespace); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.UNABLE_EXTRACT_ARCH + PMFileSystem.PackMan_TempInstall + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } LogDataList outLog = null; try { Uninstaller.UninstallLocalPackage(openProject, installedPackage.Namespace, _namespace, out outLog, procEvents: false); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.UNABLE_UNINSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); InstalledPackage retVal = null; try { retVal = Installer.InstallLocalPackage(PMFileSystem.PackMan_TempInstall + "\\" + Vars.INSTALL_FILE_DEFAULT_FILENAME, openProject, _namespace, out outLog, true, true); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Reinstaller.Error.UNABLE_INSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); if (OnReinstallDone != null) { OnReinstallDone.Invoke(retVal, false, openProject); } Logger.WriteInformationLog(LoggerMessages.PackageManagement.Reinstaller.Information.REINSTALL_PACKAGE_DONE_L, _namespace); }
static UninstallResult ProcDelNonReadXMLPackage(string arg, string installedDir, InstalledPackage installedPackage, ProjectPackMan openedProject, string _namespace, out LogDataList log, bool procEvents = true, UninstallArgType argType = UninstallArgType.UID, bool globalPackage = true, string whereToRemove = null) { log = new LogDataList(); if (argType == UninstallArgType.DirectoryPath || argType == UninstallArgType.XMLPath) { LogDataList outLog = null; RMPackage package = null; if (procEvents && OnPackageUninstallBegin != null) { OnPackageUninstallBegin.Invoke(package, globalPackage, installedDir, installedPackage, openedProject); } RMPackage parsedPackage = null; try { parsedPackage = new RMPackage(arg, _namespace, out outLog); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(UninstallerMessages.Error.XML_FILE_INVALID + arg + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); UninstallResult res = UninstallPackage(parsedPackage, _namespace, out outLog, globalPackage, whereToRemove); log.AppendLogs(outLog); if (procEvents && OnPackageUninstalled != null) { OnPackageUninstalled.Invoke(package, globalPackage, installedPackage, openedProject); } return(res); } else { try { throw new InvalidArgumentException(argType.GetType(), "argType"); } catch (Exception ex) { Logger.WriteErrorLog(UninstallerMessages.Error.INVALID_PROCDELNONREADXMLPACKAGE_ARG, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } }
public static InstalledPackage InstallLocalPackage(string packagePath, ProjectPackMan openProject, string _namespace, out LogDataList log, bool ignoreClash = false, bool alreadyCopiedToTemp = false, bool procEvents = true, bool skipFileExistenceCheck = false) { log = new LogDataList(); if (string.IsNullOrWhiteSpace(packagePath)) { try { throw new ArgumentNullException(ExceptionMessages.General.PACK_PATH_ARG_NULL); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.PACKAGE_PATH_NULL, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } if (openProject == null || string.IsNullOrWhiteSpace(openProject.DirectoryPath)) { try { throw new ArgumentException(ExceptionMessages.General.OPEN_PROJ_ARG_OR_DIRPATH_NULL); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.NO_OPEN_PROJECT, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } Logger.WriteInformationLog(InstallerMessages.Information.PACKAGE_INSTALL_START_L + packagePath + ".", _namespace); Exception outEx; LogDataList outLog = null; string oldPackagePath = packagePath; try { if (!alreadyCopiedToTemp) { packagePath = InitPackageInstaller(packagePath, false, _namespace, out outLog); } } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.INIT_ERROR + packagePath + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } log.AppendLogs(outLog); RMPackage package = null; try { package = new RMPackage(packagePath, _namespace, out outLog); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(InstallerMessages.Error.XML_READ_ERROR + packagePath + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } log.AppendLogs(outLog); if (!skipFileExistenceCheck) { PerformPackageFilesExistenceCheck(package, _namespace, out outLog); if (outLog != null) { log.Logs.AddRange(outLog.Logs); } } if (!ignoreClash && openProject.InstalledPackages.FindByUID(package.UniqueID) != null) { try { throw new PackageAlreadyExistsException(ExceptionMessages.General.PackWIDExists(package.UniqueID)); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.PACKAGE_ALREADY_EXISTS, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } } if (procEvents && OnPackageInstallBegin != null) { OnPackageInstallBegin.Invoke(package, false, oldPackagePath, openProject); } try { PerformInstallLocal(package, openProject.DirectoryPath, _namespace); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.INSTALL_PACK_FAILED, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } string packManStorePath = openProject.DirectoryPath + "\\" + Vars.PACKAGE_MANAGER_DIRECTORY; if (!Directory.Exists(packManStorePath) && Helper.CreateFolderSafely(packManStorePath, _namespace, out outEx, LoggerMessages.GeneralError.CREATE_REQUIRED_DIR_FAILED_ARG) == CreateFolderResult.UserCancelled) { throw outEx; } InstalledPackage newInstall = null; try { newInstall = CreateLocalInstalledFile(package, Path.GetDirectoryName(packagePath), packManStorePath, _namespace, out outLog); openProject.InstalledPackages.AddSafely(newInstall); } catch { if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } if (outLog != null) { log.Logs.AddRange(outLog.Logs); } if (!alreadyCopiedToTemp) { CleanupTempInstallDir(_namespace, false); } if (procEvents && OnPackageInstalled != null) { OnPackageInstalled.Invoke(package, false, oldPackagePath, openProject); } Logger.WriteInformationLog(InstallerMessages.Information.PACKAGE_INSTALL_DONE_L, _namespace); return(newInstall); }
// -------- Global Packages -------- // public static InstalledPackage InstallGlobalPackage(string packagePath, string _namespace, out LogDataList log, bool ignoreClash = false, bool alreadyCopiedToTemp = false, bool procEvents = true, bool skipFileExistenceCheck = false) { Logger.WriteInformationLog(InstallerMessages.Information.PACKAGE_INSTALL_START_G + packagePath + ".", _namespace); log = new LogDataList(); string oldPackagePath = packagePath; LogDataList outLog = null; try { if (!alreadyCopiedToTemp) { packagePath = packagePath = InitPackageInstaller(packagePath, true, _namespace, out outLog); } } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.INIT_ERROR + packagePath + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } log.AppendLogs(outLog); RMPackage package = null; try { package = new RMPackage(packagePath, _namespace, out outLog); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(InstallerMessages.Error.XML_READ_ERROR + packagePath + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } log.AppendLogs(outLog); if (!skipFileExistenceCheck) { PerformPackageFilesExistenceCheck(package, _namespace, out outLog); log.AppendLogs(outLog); } if (!ignoreClash && GlobalPackages.FindByUID(package.UniqueID) != null) { try { throw new PackageAlreadyExistsException(ExceptionMessages.General.PackWIDExists(package.UniqueID)); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.PACKAGE_ALREADY_EXISTS, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } } if (procEvents && OnPackageInstallBegin != null) { OnPackageInstallBegin.Invoke(package, true, oldPackagePath, null); } try { PerformInstallGlobal(package, _namespace); } catch (Exception ex) { Logger.WriteErrorLog(InstallerMessages.Error.INSTALL_PACK_FAILED, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } InstalledPackage newInstall = null; try { newInstall = CreateGlobalInstalledFile(package, Path.GetDirectoryName(packagePath), _namespace, out outLog); GlobalPackages.AddSafely(newInstall); } catch { if (procEvents) { CleanupTempInstallDir(_namespace, false); } throw; } log.AppendLogs(outLog); if (!alreadyCopiedToTemp) { CleanupTempInstallDir(_namespace, false); } if (OnPackageInstalled != null) { OnPackageInstalled.Invoke(package, true, oldPackagePath, null); } Logger.WriteInformationLog(InstallerMessages.Information.PACKAGE_INSTALL_DONE_G, _namespace); return(newInstall); }
public static InstalledPackage UpdateLocalPackage(string pathToInstaller, ProjectPackMan openProject, bool packageAlreadyCopiedToTemp, string _namespace, out LogDataList log, bool skipInstallFileExistenceCheck = false) { log = new LogDataList(); if (openProject == null) { try { throw new NullProjectException(ExceptionMessages.General.OPEN_PROJ_ARG_NULL); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.NO_OPEN_PROJ, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } if (string.IsNullOrWhiteSpace(openProject.DirectoryPath)) { try { throw new InvalidPathException(ExceptionMessages.General.OPEN_PROJ_DIR_PATH_ARG_NULL, openProject.DirectoryPath); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.INVALID_OPEN_PROJ_DIR, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } string origPath = pathToInstaller; Logger.WriteInformationLog(LoggerMessages.PackageManagement.Updater.Information.UpdatePackageStart(openProject.DirectoryPath, pathToInstaller), _namespace); LogDataList outLog = null; try { if (!packageAlreadyCopiedToTemp) { pathToInstaller = Installer.InitPackageInstaller(pathToInstaller, false, _namespace, out outLog); } } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.UNABLE_EXTRACT_LOCAL + pathToInstaller + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); RMPackage package = null; try { package = new RMPackage(pathToInstaller, _namespace, out outLog); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.UNABLE_PARSE_XML_LOCAL + pathToInstaller + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); if (openProject.InstalledPackages == null) { try { throw new PackageNotFoundException(false, ExceptionMessages.General.PROJ_NO_PACKAGES); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.OPEN_PROJ_NOT_ABLE_FIND_PACK, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } InstalledPackage packageInstalled = openProject.InstalledPackages.FindByUID(package.UniqueID); if (packageInstalled == null) { try { throw new PackageNotFoundException(false, ExceptionMessages.General.PackWIDNotFound(package.UniqueID)); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.OPEN_PROJ_NOT_ABLE_FIND_PACK, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } if (OnPackageUpdateBegin != null) { OnPackageUpdateBegin.Invoke(packageInstalled, package, false, origPath, openProject); } try { Uninstaller.UninstallLocalPackage(openProject, package.UniqueID, _namespace, out outLog, procEvents: false); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.FAILED_UNINSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.CriticalError); throw; } log.AppendLogs(outLog); InstalledPackage newlyInstalledPackage = null; try { newlyInstalledPackage = Installer.InstallLocalPackage(pathToInstaller, openProject, _namespace, out outLog, true, true, false, skipInstallFileExistenceCheck); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.FAILED_INSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.CriticalError); throw; } log.AppendLogs(outLog); if (OnPackageUpdateDone != null) { OnPackageUpdateDone.Invoke(newlyInstalledPackage, newlyInstalledPackage.Package, false, origPath, openProject); } Logger.WriteInformationLog(LoggerMessages.PackageManagement.Updater.Information.UpdatePackageDone(origPath), _namespace); return(newlyInstalledPackage); }
public static InstalledPackage UpdateGlobalPackage(string pathToInstaller, string _namespace, out LogDataList log, bool alreadyCopiedToTemp = false, bool skipInstallFileExistenceCheck = false) { log = new LogDataList(); Logger.WriteInformationLog(LoggerMessages.PackageManagement.Updater.Information.UPDATE_PACKAGE_START_G + pathToInstaller + ".", _namespace); string origPath = pathToInstaller; LogDataList outLog = null; try { if (!alreadyCopiedToTemp) { pathToInstaller = Installer.InitPackageInstaller(pathToInstaller, true, _namespace, out outLog); } } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.UNABLE_EXTRACT_GLOBAL + pathToInstaller + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); RMPackage package = null; try { package = new RMPackage(pathToInstaller, _namespace, out outLog); } catch (Exception ex) { log.AppendLogs(outLog); Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.XML_INVALID + pathToInstaller + ".", _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } log.AppendLogs(outLog); if (GlobalPackages == null) { try { throw new NullGlobalPackagesException(); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.NO_GLOBAL_PACKAGES, _namespace, ex, BasicDebugLogger.DebugErrorType.Error); throw; } } InstalledPackage packageInstalled = GlobalPackages.FindByUID(package.UniqueID); if (packageInstalled == null) { try { throw new PackageNotFoundException(true); } catch (Exception ex) { Logger.WriteWarningLog(LoggerMessages.PackageManagement.Updater.Warning.PACKAGE_TO_BE_UPDATED_NOT_FOUND, _namespace, ex); throw; } } if (OnPackageUpdateBegin != null) { OnPackageUpdateBegin.Invoke(packageInstalled, package, true, origPath, null); } try { Uninstaller.UninstallGlobalPackage(package.UniqueID, _namespace, out outLog, renumberParts: false, procEvents: false); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.FAILED_UNINSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.CriticalError); throw; } log.AppendLogs(outLog); InstalledPackage newlyInstalledPackage = null; try { newlyInstalledPackage = Installer.InstallGlobalPackage(pathToInstaller, _namespace, out outLog, true, true, false, skipInstallFileExistenceCheck); } catch (Exception ex) { Logger.WriteErrorLog(LoggerMessages.PackageManagement.Updater.Error.FAILED_INSTALL, _namespace, ex, BasicDebugLogger.DebugErrorType.CriticalError); throw; } log.AppendLogs(outLog); if (OnPackageUpdateDone != null) { OnPackageUpdateDone.Invoke(newlyInstalledPackage, newlyInstalledPackage.Package, true, origPath, null); } Logger.WriteInformationLog(LoggerMessages.PackageManagement.Updater.Information.UPDATE_PACKAGE_DONE_G, _namespace); return(newlyInstalledPackage); }