public static void Freeze(ManagedMod mod) { // TODO: Remove connection to ManagedMods // Only freeze if not already frozen: if (mod.Frozen && File.Exists(mod.FrozenArchivePath)) { // TODO: ModActions.Freeze: Should the mod get "refrozen"? //ManagedMods.Instance.logFile.WriteLine($"Cannot freeze a mod ('{mod.Title}') that is already frozen.\n"); return; } Directory.CreateDirectory(mod.FrozenDataPath); // Getting preset: Archive2.Preset preset = ModHelpers.GetArchive2Preset(mod); ModDeployment.LogFile.WriteLine($" Freezing mod '{mod.Title}'..."); ModDeployment.LogFile.WriteLine($" Format: {preset.format}"); ModDeployment.LogFile.WriteLine($" Compression: {preset.compression}"); ModDeployment.LogFile.WriteLine($" Destination: FrozenData\\{mod.FrozenArchiveName}"); // Create archive: Archive2.Create(mod.FrozenArchivePath, mod.ManagedFolderPath, preset); // Change DiskState and save: mod.Frozen = true; mod.FrozenCompression = mod.Compression; mod.FrozenFormat = mod.Format; }
/// <summary> /// Used in the deployment chain to pack each bundled temporary folder to an archive. /// </summary> private static void PackBundledArchives(ResourceList resources, DeployArchiveList archives, bool freezeArchives) { // For each archive... foreach (DeployArchive archive in archives.Reverse()) { // ... if needed ... if (archive.Count > 0 && !Utils.IsDirectoryEmpty(archive.TempPath)) { // ... pack the temporary folder to an archive ... if (freezeArchives) { LogFile.WriteLine($" Freezing archive '{archive.ArchiveName}'"); // either freeze to FrozenData and then copy to Data: Archive2.Create(archive.GetFrozenArchivePath(), archive.TempPath, archive.Compression, archive.Format); if (Configuration.bUseHardlinks) { Utils.CreateHardLink(archive.GetFrozenArchivePath(), archive.GetArchivePath(), true); } else { File.Copy(archive.GetFrozenArchivePath(), archive.GetArchivePath(), true); } } else { LogFile.WriteLine($" Creating archive '{archive.ArchiveName}'"); // or create directly in Data: Archive2.Create(archive.GetArchivePath(), archive.TempPath, archive.Compression, archive.Format); } // ... and add it to the resource list. resources.Insert(0, archive.ArchiveName); } } // Clean up after we're finished. LogFile.WriteLine($" Deleting temporary folder..."); archives.DeleteTempFolder(); }
/// <summary> /// Used in the deployment chain to deploy a single mod with the SeparateBA2 method. /// Freezes a mod if necessary. /// </summary> private static void DeploySeparateArchive(ManagedMod mod, ResourceList resources) { LogFile.WriteLine($" Installing mod '{mod.Title}' as SeparateBA2"); // If mod is supposed to be deployed frozen... if (mod.Freeze) { // ... freeze if necessary ... if (!mod.Frozen) { //LogFile.WriteLine($" Freezing mod..."); ModActions.Freeze(mod); } LogFile.WriteLine($" Copying frozen archive..."); // ... and copy it to the Data folder. if (Configuration.bUseHardlinks) { Utils.CreateHardLink( mod.FrozenArchivePath, mod.ArchivePath, true); } else { File.Copy( mod.FrozenArchivePath, mod.ArchivePath, true); } } // If mod isn't supposed to be deployed frozen... else { // ... unfreeze mod if needed ... if (mod.Frozen) { LogFile.WriteLine($" Unfreezing mod..."); ModActions.Unfreeze(mod); } // Getting preset: Archive2.Preset preset = ModHelpers.GetArchive2Preset(mod); LogFile.WriteLine($" Creating new archive..."); LogFile.WriteLine($" Format: {preset.format}"); LogFile.WriteLine($" Compression: {preset.compression}"); // ... and create a new archive. Archive2.Create( mod.ArchivePath, mod.ManagedFolderPath, preset); } // Finally, update the disk state ... mod.CurrentArchiveName = mod.ArchiveName; mod.CurrentCompression = mod.Frozen ? mod.FrozenCompression : mod.Compression; mod.CurrentFormat = mod.Frozen ? mod.FrozenFormat : mod.Format; mod.Deployed = true; mod.PreviousMethod = ManagedMod.DeploymentMethod.SeparateBA2; // ... and add the archive to the resource list. resources.Add(mod.ArchiveName); LogFile.WriteLine($" Installed."); }
public static void Create(String ba2Archive, String folder, Archive2.Preset preset) { Archive2.Create(ba2Archive, folder, preset.compression, preset.format); }
public static void Create(String ba2Archive, String folder) { Archive2.Create(ba2Archive, folder, Archive2.Compression.Default, Archive2.Format.General); }