internal static ParseResultDto ParsePackageFile(PortalSettings PortalSettings, UserInfo UserInfo, string Type, string FileName) { string installFolder = GetPackageInstallFolder(Type); if (!string.IsNullOrEmpty(installFolder) && !string.IsNullOrEmpty(FileName)) { string packagePath = Path.Combine(Globals.ApplicationMapPath, "Install", installFolder, FileName); if (File.Exists(packagePath)) { using (FileStream stream = new FileStream(packagePath, FileMode.Open)) { try { return(InstallController.Instance.ParsePackage(PortalSettings, UserInfo, packagePath, stream)); } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } } } } ParseResultDto result = new ParseResultDto { NoManifest = true }; return(result); }
public HttpResponseMessage DownloadLanguagePackage(string cultureCode) { try { const string packageFileName = "installlanguage.resources"; string packagePath = Path.Combine(Globals.ApplicationMapPath, "Install/Language/" + packageFileName); ParseResultDto parsePackage = new ParseResultDto(); using (FileStream stream = new FileStream(packagePath, FileMode.Open)) { parsePackage = InstallController.Instance.ParsePackage(PortalSettings, UserInfo, packagePath, stream); } bool invalidPackage = !parsePackage.Success || !parsePackage.PackageType.Equals("CoreLanguagePack") || !parsePackage.Name.EndsWith(cultureCode, StringComparison.InvariantCultureIgnoreCase); if (invalidPackage) { DotNetNuke.Services.Upgrade.Internals.InstallController.Instance.IsAvailableLanguagePack(cultureCode); } return(DownLoadFile(packagePath)); } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public ActionResult ParsePackage() { ActionResult actionResult = new ActionResult(); try { dynamic files = HttpContext.Current.Request.Files; HttpPostedFile file = files[0]; ParseResultDto ParseResultDto = InstallController.Instance.ParsePackage(PortalSettings, UserInfo, file.FileName, file.InputStream); actionResult.Data = ParseResultDto; actionResult.IsSuccess = true; return(actionResult); } catch (Exception ex) { actionResult.AddError("internalError", ex.Message, ex); return(actionResult); } }
public ParseResultDto ParsePackage(PortalSettings portalSettings, UserInfo user, string filePath, Stream stream) { var parseResult = new ParseResultDto(); var fileName = Path.GetFileName(filePath); var extension = Path.GetExtension(fileName ?? "").ToLowerInvariant(); if (extension != ".zip" && extension != ".resources") { parseResult.Failed("InvalidExt"); } else { try { var installer = GetInstaller(stream, fileName, portalSettings.PortalId); try { if (installer.IsValid) { if (installer.Packages.Count > 0) { parseResult = new ParseResultDto(installer.Packages[0].Package); } parseResult.AzureCompact = AzureCompact(installer).GetValueOrDefault(false); parseResult.NoManifest = string.IsNullOrEmpty(installer.InstallerInfo.ManifestFile.TempFileName); parseResult.LegacyError = installer.InstallerInfo.LegacyError; parseResult.HasInvalidFiles = !installer.InstallerInfo.HasValidFiles; parseResult.AlreadyInstalled = installer.InstallerInfo.Installed; parseResult.AddLogs(installer.InstallerInfo.Log.Logs); } else { if (installer.InstallerInfo.ManifestFile == null) { parseResult.LegacySkinInstalled = CheckIfSkinAlreadyInstalled(fileName, installer, "Skin"); parseResult.LegacyContainerInstalled = CheckIfSkinAlreadyInstalled(fileName, installer, "Container"); } parseResult.Failed("InvalidFile", installer.InstallerInfo.Log.Logs); parseResult.NoManifest = string.IsNullOrEmpty(installer.InstallerInfo.ManifestFile?.TempFileName); if (parseResult.NoManifest) { // we still can install when the manifest is missing parseResult.Success = true; } } } finally { DeleteTempInstallFiles(installer); } } catch (SharpZipBaseException) { parseResult.Failed("ZipCriticalError"); } } return(parseResult); }