public static string Package(string outputFilePath, string configJson, string assetsFolderPath) { if (!string.IsNullOrEmpty(outputFilePath)) { List <ZipEntryInfo> entries = new List <ZipEntryInfo>(); byte[] bytes = Encoding.UTF8.GetBytes(configJson); MemoryStream ms = new MemoryStream(bytes); entries.Add(new ZipEntryInfo(ms, ConfigFileName)); if (!string.IsNullOrEmpty(assetsFolderPath) && Directory.Exists(assetsFolderPath)) { string parentFolderPath = Directory.GetParent(assetsFolderPath).FullName; int entryNamePosition = parentFolderPath.Length + 1; foreach (string assetPath in Directory.EnumerateFiles(assetsFolderPath, "*.*", SearchOption.AllDirectories).Where(x => FileHelpers.IsImageFile(x))) { string entryName = assetPath.Substring(entryNamePosition); entries.Add(new ZipEntryInfo(assetPath, entryName)); } } ZipManager.Compress(outputFilePath, entries); return(outputFilePath); } return(null); }
public static string Package(string outputFilePath, string configJson, string assetsFolderPath) { if (!string.IsNullOrEmpty(outputFilePath)) { string outputFolder = Path.GetDirectoryName(outputFilePath); Helpers.CreateDirectory(outputFolder); string configFilePath = Path.Combine(outputFolder, ConfigFileName); File.WriteAllText(configFilePath, configJson, Encoding.UTF8); Dictionary <string, string> files = new Dictionary <string, string>(); files.Add(configFilePath, ConfigFileName); if (!string.IsNullOrEmpty(assetsFolderPath) && Directory.Exists(assetsFolderPath)) { string parentFolderPath = Directory.GetParent(assetsFolderPath).FullName; int entryNamePosition = parentFolderPath.Length + 1; foreach (string assetPath in Directory.EnumerateFiles(assetsFolderPath, "*.*", SearchOption.AllDirectories).Where(x => Helpers.IsImageFile(x))) { string entryName = assetPath.Substring(entryNamePosition); files.Add(assetPath, entryName); } } try { ZipManager.Compress(outputFilePath, files); } finally { File.Delete(configFilePath); } return(outputFilePath); } return(null); }
private static void CreateFolder(string source, string destination, SetupJobs job) { Console.WriteLine("Creating folder: " + destination); if (Directory.Exists(destination)) { Directory.Delete(destination, true); } Directory.CreateDirectory(destination); SetupHelpers.CopyFile(Path.Combine(source, "ShareX.exe"), destination); SetupHelpers.CopyFile(Path.Combine(source, "ShareX.exe.config"), destination); SetupHelpers.CopyFiles(source, "*.dll", destination); if (job == SetupJobs.CreateWindowsStoreDebugFolder) { SetupHelpers.CopyFiles(source, "*.pdb", destination); } SetupHelpers.CopyFiles(Path.Combine(ParentDir, "Licenses"), "*.txt", Path.Combine(destination, "Licenses")); if (job != SetupJobs.CreateWindowsStoreFolder && job != SetupJobs.CreateWindowsStoreDebugFolder) { if (!File.Exists(RecorderDevicesSetupPath)) { CompileISSFile("Recorder-devices-setup.iss"); } SetupHelpers.CopyFile(RecorderDevicesSetupPath, destination); SetupHelpers.CopyFile(Path.Combine(NativeMessagingHostDir, "ShareX_NativeMessagingHost.exe"), destination); } string[] languages = new string[] { "de", "es", "es-MX", "fa-IR", "fr", "hu", "id-ID", "it-IT", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "tr", "uk", "vi-VN", "zh-CN", "zh-TW" }; foreach (string language in languages) { SetupHelpers.CopyFiles(Path.Combine(source, language), "*.resources.dll", Path.Combine(destination, "Languages", language)); } Helpers.CopyAll(Path.Combine(ParentDir, @"ShareX.ScreenCaptureLib\Stickers"), Path.Combine(destination, "Stickers")); if (job == SetupJobs.CreatePortableAppsFolder) { Helpers.CreateEmptyFile(Path.Combine(destination, "PortableApps")); } else if (job == SetupJobs.CreateWindowsStoreFolder || job == SetupJobs.CreateWindowsStoreDebugFolder) { Helpers.CopyAll(WindowsStorePackageFilesDir, destination); } else if (job == SetupJobs.CreatePortable) { Helpers.CreateEmptyFile(Path.Combine(destination, "Portable")); //FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(releaseDir, "ShareX.exe")); //string zipFilename = string.Format("ShareX-{0}.{1}.{2}-portable.zip", versionInfo.ProductMajorPart, versionInfo.ProductMinorPart, versionInfo.ProductBuildPart); string zipPath = Path.Combine(OutputDir, "ShareX-portable.zip"); ZipManager.Compress(Path.GetFullPath(destination), Path.GetFullPath(zipPath)); Directory.Delete(destination, true); } Console.WriteLine("Folder created."); }