public static void CopyMod(string sourceFolder, string destinationFolder, string modId, ProgressDelegate progressCallback) { if (string.IsNullOrWhiteSpace(sourceFolder) || !Directory.Exists(sourceFolder)) { throw new DirectoryNotFoundException($"Source folder was not found.\r\n{sourceFolder}"); } var modSourceFolder = sourceFolder; progressCallback?.Invoke(0, "Reading mod base information."); var fileName = IOUtils.NormalizePath(Path.Combine(modSourceFolder, "mod.info")); var list = new List <string>(); ParseBaseInformation(fileName, list); progressCallback?.Invoke(0, "Reading mod meta information."); fileName = IOUtils.NormalizePath(Path.Combine(modSourceFolder, "modmeta.info")); var metaInformation = new Dictionary <string, string>(); if (ParseMetaInformation(fileName, metaInformation)) { modSourceFolder = IOUtils.NormalizePath(Path.Combine(modSourceFolder, "WindowsNoEditor")); } var modFile = $"{destinationFolder}.mod"; progressCallback?.Invoke(0, "Deleting existing mod files."); // delete the server mod folder and mod file. if (Directory.Exists(destinationFolder)) { Directory.Delete(destinationFolder, true); } if (File.Exists(modFile)) { File.Delete(modFile); } progressCallback?.Invoke(0, "Copying mod files."); // update the mod files from the cache. var flag = Copy(modSourceFolder, destinationFolder, true); if (metaInformation.Count == 0 && flag) { metaInformation["ModType"] = "1"; } progressCallback?.Invoke(0, "Creating mod file."); // create the mod file. WriteModFile(modFile, modId, metaInformation, list); // copy the last updated file. fileName = IOUtils.NormalizePath(Path.Combine(sourceFolder, Config.Default.LastUpdatedTimeFile)); if (File.Exists(fileName)) { progressCallback?.Invoke(0, "Copying mod version file."); var tempFile = IOUtils.NormalizePath(fileName.Replace(sourceFolder, destinationFolder)); File.Copy(fileName, tempFile, true); } }
public static string GetModPath(string installDirectory, string modId) => IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId));
public static string GetLatestModTimeFile(string installDirectory, string modId) => IOUtils.NormalizePath(Path.Combine(installDirectory, Config.Default.ServerModsRelativePath, modId, Config.Default.LastUpdatedTimeFile));
public static string GetLatestModCacheTimeFile(string modId, bool isSotF) => IOUtils.NormalizePath(Path.Combine(ModUtils.GetModCachePath(modId, isSotF), Config.Default.LastUpdatedTimeFile));
public static string GetLogFolder() => IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.LogsDir));
public static string GetSteamCmdFile() => IOUtils.NormalizePath(Path.Combine(Config.Default.DataDir, Config.Default.SteamCmdDir, Config.Default.SteamCmdExe));