public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "HTML5"); string FinalDataLocation = Path.Combine(PackagePath, Params.ShortProjectName) + ".data"; // copy the "Executable" to the archive directory string GameExe = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameExe += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } GameExe += ".js"; // put the HTML file to the package directory string OutputFile = Path.Combine(PackagePath, (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName)) + ".html"; // data file SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".gz")); // data file js driver SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".js.gz")); // main js file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".gz")); // memory init file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".mem.gz")); // symbols file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".symbols.gz")); // utilities SC.ArchiveFiles(PackagePath, Path.GetFileName("Utility.js.gz")); // landing page. SC.ArchiveFiles(PackagePath, Path.GetFileName(OutputFile)); // Archive HTML5 Server and a Readme. var LaunchHelperPath = CombinePaths(CmdEnv.LocalRoot, "Engine/Binaries/DotNET/"); SC.ArchiveFiles(LaunchHelperPath, "HTML5LaunchHelper.exe"); SC.ArchiveFiles(Path.Combine(CombinePaths(CmdEnv.LocalRoot, "Engine"), "Build", "HTML5"), "Readme.txt"); SC.ArchiveFiles(PackagePath, Path.GetFileName(Path.Combine(PackagePath, "RunMacHTML5LaunchHelper.command"))); if (HTMLPakAutomation.CanCreateMapPaks(Params)) { // find all paks. string[] Files = Directory.GetFiles(Path.Combine(PackagePath, Params.ShortProjectName), "*", SearchOption.AllDirectories); foreach (string PakFile in Files) { var DestPak = PakFile.Replace(PackagePath, ""); SC.ArchivedFiles.Add(PakFile, DestPak); } } UploadToS3(SC); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "HTML5"); string FinalDataLocation = Path.Combine(PackagePath, Params.ShortProjectName) + ".data"; // copy the "Executable" to the archive directory string GameExe = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameExe += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } GameExe += ".js"; // put the HTML file to the package directory string OutputFile = Path.Combine(PackagePath, (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName)) + ".html"; SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation)); SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe)); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".mem")); SC.ArchiveFiles(PackagePath, Path.GetFileName("json2.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("jStorage.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("moz_binarystring.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(OutputFile)); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { string ErrorString = String.Format("Android is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); ErrorReporter.Error(ErrorString, (int)ErrorCodes.Error_OnlyOneTargetConfigurationSupported); throw new AutomationException(ErrorString); } string[] Architectures = UnrealBuildTool.AndroidToolChain.GetAllArchitectures(); string[] GPUArchitectures = UnrealBuildTool.AndroidToolChain.GetAllGPUArchitectures(); bool bMakeSeparateApks = UnrealBuildTool.Android.UEDeployAndroid.ShouldMakeSeparateApks(); bool bPackageDataInsideApk = UnrealBuildTool.Android.UEDeployAndroid.PackageDataInsideApk(false); bool bAddedOBB = false; foreach (string Architecture in Architectures) { foreach (string GPUArchitecture in GPUArchitectures) { string ApkName = GetFinalApkName(Params, SC.StageExecutables[0], true, bMakeSeparateApks ? Architecture : "", bMakeSeparateApks ? GPUArchitecture : ""); string ObbName = GetFinalObbName(ApkName); string BatchName = GetFinalBatchName(ApkName, Params, bMakeSeparateApks ? Architecture : "", bMakeSeparateApks ? GPUArchitecture : ""); // verify the files exist if (!FileExists(ApkName)) { string ErrorString = String.Format("ARCHIVE FAILED - {0} was not found", ApkName); ErrorReporter.Error(ErrorString, (int)ErrorCodes.Error_AppNotFound); throw new AutomationException(ErrorString); } if (!bPackageDataInsideApk && !FileExists(ObbName)) { string ErrorString = String.Format("ARCHIVE FAILED - {0} was not found", ObbName); ErrorReporter.Error(ErrorString, (int)ErrorCodes.Error_ObbNotFound); throw new AutomationException(ErrorString); } SC.ArchiveFiles(Path.GetDirectoryName(ApkName), Path.GetFileName(ApkName)); if (!bPackageDataInsideApk && !bAddedOBB) { bAddedOBB = true; SC.ArchiveFiles(Path.GetDirectoryName(ObbName), Path.GetFileName(ObbName)); } SC.ArchiveFiles(Path.GetDirectoryName(BatchName), Path.GetFileName(BatchName)); } } }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } var TargetConfiguration = SC.StageTargetConfigurations[0]; var ProjectIPA = MakeIPAFileName(TargetConfiguration, Params); // verify the .ipa exists if (!FileExists(ProjectIPA)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ProjectIPA); } SC.ArchiveFiles(Path.GetDirectoryName(ProjectIPA), Path.GetFileName(ProjectIPA)); }
public static void CreateArchiveManifest(ProjectParams Params, DeploymentContext SC) { if (!Params.Archive) { return; } var ThisPlatform = SC.StageTargetPlatform; ThisPlatform.GetFilesToArchive(Params, SC); //@todo add any archive meta data files as needed if (Params.ArchiveMetaData) { // archive the build.version file for extra info for testing, etc string BuildVersionFile = CombinePaths(SC.LocalRoot.FullName, "Engine", "Build", "Build.version"); SC.ArchiveFiles(Path.GetDirectoryName(BuildVersionFile), Path.GetFileName(BuildVersionFile)); } }
public static void CreateArchiveManifest(ProjectParams Params, DeploymentContext SC) { if (!Params.Archive) { return; } var ThisPlatform = SC.StageTargetPlatform; ThisPlatform.GetFilesToArchive(Params, SC); //@todo add any archive meta data files as needed if (Params.ArchiveMetaData) { // archive the build.properties for extra info for testing, etc string BuildPropertiesFile = CombinePaths(SC.LocalRoot, "Engine", "Build", "build.properties"); SC.ArchiveFiles(Path.GetDirectoryName(BuildPropertiesFile), Path.GetFileName(BuildPropertiesFile)); } }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "HTML5"); string FinalDataLocation = Path.Combine(PackagePath, Params.ShortProjectName) + ".data"; // copy the "Executable" to the archive directory string GameExe = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameExe += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } GameExe += ".js"; // put the HTML file to the package directory string OutputFile = Path.Combine(PackagePath, (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName)) + ".html"; // data file SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".gz")); // data file js driver SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".js.gz")); // main js file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".gz")); // memory init file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".mem.gz")); // symbols file SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".symbols.gz")); // utilities SC.ArchiveFiles(PackagePath, Path.GetFileName("Utility.js.gz")); // landing page. SC.ArchiveFiles(PackagePath, Path.GetFileName(OutputFile)); // Archive HTML5 Server and a Readme. var LaunchHelperPath = CombinePaths(CmdEnv.LocalRoot, "Engine/Binaries/DotNET/"); SC.ArchiveFiles(LaunchHelperPath, "HTML5LaunchHelper.exe"); SC.ArchiveFiles(Path.Combine(CombinePaths(CmdEnv.LocalRoot, "Engine"), "Build", "HTML5"), "Readme.txt"); SC.ArchiveFiles(PackagePath, Path.GetFileName(Path.Combine(PackagePath, "RunMacHTML5LaunchHelper.command"))); if (HTMLPakAutomation.CanCreateMapPaks(Params)) { // find all paks. string[] Files = Directory.GetFiles(Path.Combine(PackagePath, Params.ShortProjectName), "*",SearchOption.AllDirectories); foreach(string PakFile in Files) { var DestPak = PakFile.Replace(PackagePath,""); SC.ArchivedFiles.Add(PakFile, DestPak); } } UploadToS3(SC); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } var TargetConfiguration = SC.StageTargetConfigurations[0]; var ProjectIPA = MakeIPAFileName( TargetConfiguration, Params ); // verify the .ipa exists if (!FileExists(ProjectIPA)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ProjectIPA); } ConfigCacheIni PlatformGameConfig; bool bXCArchive = false; if (Params.EngineConfigs.TryGetValue(SC.StageTargetPlatform.PlatformType, out PlatformGameConfig)) { PlatformGameConfig.GetBool("/Script/IOSRuntimeSettings.IOSRuntimeSettings", "bGenerateXCArchive", out bXCArchive); } if (bXCArchive && Utils.IsRunningOnMono) { // Always put the archive in the current user's Library/Developer/Xcode/Archives path WindowsIdentity id = WindowsIdentity.GetCurrent(); string ArchivePath = "/Users/" + id.Name + "/Library/Developer/Xcode/Archives"; if (!DirectoryExists(ArchivePath)) { CreateDirectory(ArchivePath); } Console.WriteLine("Generating xc archive package in " + ArchivePath); string ArchiveName = Path.Combine(ArchivePath, Path.GetFileNameWithoutExtension(ProjectIPA) + ".xcarchive"); if (!DirectoryExists(ArchiveName)) { CreateDirectory(ArchiveName); } DeleteDirectoryContents(ArchiveName); // create the Products archive folder CreateDirectory(Path.Combine(ArchiveName, "Products", "Applications")); // copy in the application string AppName = Path.GetFileNameWithoutExtension(ProjectIPA) + ".app"; using (ZipFile Zip = new ZipFile(ProjectIPA)) { Zip.ExtractAll(ArchivePath, ExtractExistingFileAction.OverwriteSilently); List<string> Dirs = new List<string>(Directory.EnumerateDirectories(Path.Combine(ArchivePath, "Payload"), "*.app")); AppName = Dirs[0].Substring(Dirs[0].LastIndexOf(UnrealBuildTool.BuildHostPlatform.Current.Platform != UnrealTargetPlatform.Mac ? "\\" : "/") + 1); CopyDirectory_NoExceptions(Path.Combine(ArchivePath, "Payload", AppName), Path.Combine(ArchiveName, "Products", "Applications", AppName)); } // copy in the dSYM if found var ProjectExe = MakeExeFileName( TargetConfiguration, Params ); string dSYMName = (SC.IsCodeBasedProject ? Path.GetFileNameWithoutExtension(ProjectExe) : "UE4Game") + ".dSYM"; string dSYMSrcPath = Path.Combine(SC.ProjectBinariesFolder, dSYMName); if(DirectoryExists(new string[] { dSYMSrcPath } )) { // Create the dsyms archive folder CreateDirectory(Path.Combine(ArchiveName, "dSYMs")); string dSYMDstPath = Path.Combine(ArchiveName, "dSYMs", dSYMName); // /Volumes/MacOSDrive1/pfEpicWorkspace/Dev-Platform/Samples/Sandbox/PlatformShowcase/Binaries/IOS/PlatformShowcase.dSYM/Contents/Resources/DWARF/PlatformShowcase CopyFile_NoExceptions(Path.Combine(dSYMSrcPath, "Contents", "Resources", "DWARF", SC.IsCodeBasedProject ? Path.GetFileNameWithoutExtension(ProjectExe) : "UE4Game"), dSYMDstPath); } else if (File.Exists(dSYMSrcPath)) { // Create the dsyms archive folder CreateDirectory(Path.Combine(ArchiveName, "dSYMs")); string dSYMDstPath = Path.Combine(ArchiveName, "dSYMs", dSYMName); CopyFile_NoExceptions(dSYMSrcPath, dSYMDstPath); } // copy in the bitcode symbol maps if found string[] bcmapfiles = Directory.GetFiles(SC.ProjectBinariesFolder, "*.bcsymbolmap"); if(bcmapfiles.Length > 0) { // Create the dsyms archive folder CreateDirectory(Path.Combine(ArchiveName, "BCSymbolMaps")); foreach (string symbolSrcFilePath in bcmapfiles) { string symbolLeafFileName = Path.GetFileName(symbolSrcFilePath); string bcDstFilePath = Path.Combine(ArchiveName, "BCSymbolMaps", symbolLeafFileName); CopyFile_NoExceptions(symbolSrcFilePath, bcDstFilePath); } } // get the settings from the app plist file string AppPlist = Path.Combine(ArchiveName, "Products", "Applications", AppName, "Info.plist"); string OldPListData = File.Exists(AppPlist) ? File.ReadAllText(AppPlist) : ""; // bundle identifier int index = OldPListData.IndexOf("CFBundleIdentifier"); index = OldPListData.IndexOf("<string>", index) + 8; int length = OldPListData.IndexOf("</string>", index) - index; string BundleIdentifier = OldPListData.Substring(index, length); // short version index = OldPListData.IndexOf("CFBundleShortVersionString"); index = OldPListData.IndexOf("<string>", index) + 8; length = OldPListData.IndexOf("</string>", index) - index; string BundleShortVersion = OldPListData.Substring(index, length); // bundle version index = OldPListData.IndexOf("CFBundleVersion"); index = OldPListData.IndexOf("<string>", index) + 8; length = OldPListData.IndexOf("</string>", index) - index; string BundleVersion = OldPListData.Substring(index, length); // date we made this const string Iso8601DateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ"; string TimeStamp = DateTime.UtcNow.ToString(Iso8601DateTimeFormat); // create the archive plist StringBuilder Text = new StringBuilder(); Text.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); Text.AppendLine("<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"); Text.AppendLine("<plist version=\"1.0\">"); Text.AppendLine("<dict>"); Text.AppendLine("\t<key>ApplicationProperties</key>"); Text.AppendLine("\t<dict>"); Text.AppendLine("\t\t<key>ApplicationPath</key>"); Text.AppendLine("\t\t<string>Applications/" + AppName + "</string>"); Text.AppendLine("\t\t<key>CFBundleIdentifier</key>"); Text.AppendLine(string.Format("\t\t<string>{0}</string>", BundleIdentifier)); Text.AppendLine("\t\t<key>CFBundleShortVersionString</key>"); Text.AppendLine(string.Format("\t\t<string>{0}</string>", BundleShortVersion)); Text.AppendLine("\t\t<key>CFBundleVersion</key>"); Text.AppendLine(string.Format("\t\t<string>{0}</string>", BundleVersion)); Text.AppendLine("\t\t<key>SigningIdentity</key>"); Text.AppendLine(string.Format("\t\t<string>{0}</string>", Params.Certificate)); Text.AppendLine("\t</dict>"); Text.AppendLine("\t<key>ArchiveVersion</key>"); Text.AppendLine("\t<integer>2</integer>"); Text.AppendLine("\t<key>CreationDate</key>"); Text.AppendLine(string.Format("\t<date>{0}</date>", TimeStamp)); Text.AppendLine("\t<key>DefaultToolchainInfo</key>"); Text.AppendLine("\t<dict>"); Text.AppendLine("\t\t<key>DisplayName</key>"); Text.AppendLine("\t\t<string>Xcode 7.3 Default</string>"); Text.AppendLine("\t\t<key>Identifier</key>"); Text.AppendLine("\t\t<string>com.apple.dt.toolchain.XcodeDefault</string>"); Text.AppendLine("\t</dict>"); Text.AppendLine("\t<key>Name</key>"); Text.AppendLine(string.Format("\t<string>{0}</string>", SC.ShortProjectName)); Text.AppendLine("\t<key>SchemeName</key>"); Text.AppendLine(string.Format("\t<string>{0}</string>", SC.ShortProjectName)); Text.AppendLine("</dict>"); Text.AppendLine("</plist>"); File.WriteAllText(Path.Combine(ArchiveName, "Info.plist"), Text.ToString()); } else if (bXCArchive && !Utils.IsRunningOnMono) { LogWarning("Can not produce an XCArchive on windows"); } SC.ArchiveFiles(Path.GetDirectoryName(ProjectIPA), Path.GetFileName(ProjectIPA)); }
// -------------------------------------------------------------------------------- // ArchiveCommand.Automation.cs public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } // copy to archive directory string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath.FullName), "Binaries", "HTML5"); string UE4GameBasename = Path.GetFileNameWithoutExtension(Params.GetProjectExeForPlatform(UnrealTargetPlatform.HTML5).ToString()); string ProjectBasename = Params.ShortProjectName; string ProjectConfiguration = Params.ClientConfigsToBuild[0].ToString(); if (ProjectConfiguration != "Development") { UE4GameBasename += "-HTML5-" + ProjectConfiguration; ProjectBasename += "-HTML5-" + ProjectConfiguration; } SC.ArchiveFiles(PackagePath, UE4GameBasename + ".wasm"); // MAIN game code SC.ArchiveFiles(PackagePath, UE4GameBasename + ".js"); // MAIN js file (emscripten) SC.ArchiveFiles(PackagePath, UE4GameBasename + ".js.symbols"); // symbols file SC.ArchiveFiles(PackagePath, "Utility.js"); // utilities SC.ArchiveFiles(PackagePath, ProjectBasename + ".data"); // DATA file SC.ArchiveFiles(PackagePath, ProjectBasename + ".data.js"); // DATA file js driver (emscripten) SC.ArchiveFiles(PackagePath, ProjectBasename + ".UE4.js"); // UE4 js file SC.ArchiveFiles(PackagePath, ProjectBasename + ".css"); // UE4 css file SC.ArchiveFiles(PackagePath, ProjectBasename + ".html"); // landing page. // Archive HTML5 Server and a Readme. SC.ArchiveFiles(CombinePaths(CmdEnv.LocalRoot, "Engine/Binaries/DotNET/"), "HTML5LaunchHelper.exe"); SC.ArchiveFiles(CombinePaths(CmdEnv.LocalRoot, "Engine/Build/HTML5/"), "Readme.txt"); SC.ArchiveFiles(PackagePath, "RunMacHTML5LaunchHelper.command"); SC.ArchiveFiles(PackagePath, ".htaccess"); if (Compressed) { SC.ArchiveFiles(PackagePath, UE4GameBasename + ".wasmgz"); SC.ArchiveFiles(PackagePath, UE4GameBasename + ".jsgz"); SC.ArchiveFiles(PackagePath, UE4GameBasename + ".js.symbolsgz"); SC.ArchiveFiles(PackagePath, "Utility.jsgz"); SC.ArchiveFiles(PackagePath, ProjectBasename + ".datagz"); SC.ArchiveFiles(PackagePath, ProjectBasename + ".data.jsgz"); SC.ArchiveFiles(PackagePath, ProjectBasename + ".UE4.jsgz"); SC.ArchiveFiles(PackagePath, ProjectBasename + ".cssgz"); } else { // nuke old compressed files to prevent using stale files File.Delete(UE4GameBasename + ".wasmgz"); File.Delete(UE4GameBasename + ".jsgz"); File.Delete(UE4GameBasename + ".js.symbolsgz"); File.Delete("Utility.jsgz"); File.Delete(ProjectBasename + ".datagz"); File.Delete(ProjectBasename + ".data.jsgz"); File.Delete(ProjectBasename + ".UE4.jsgz"); File.Delete(ProjectBasename + ".cssgz"); } if (HTMLPakAutomation.CanCreateMapPaks(Params)) { // find all paks. string[] Files = Directory.GetFiles(Path.Combine(PackagePath, Params.ShortProjectName), "*", SearchOption.AllDirectories); foreach (string PakFile in Files) { SC.ArchivedFiles.Add(PakFile, Path.GetFileName(PakFile)); } } UploadToS3(SC, ProjectBasename + ".html"); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "HTML5"); string FinalDataLocation = Path.Combine(PackagePath, Params.ShortProjectName) + ".data"; // copy the "Executable" to the archive directory string GameExe = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameExe += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } GameExe += ".js"; // put the HTML file to the package directory string OutputFile = Path.Combine(PackagePath, (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName)) + ".html"; SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation)); SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe)); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".mem")); SC.ArchiveFiles(PackagePath, Path.GetFileName("json2.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("jstorage.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("moz_binarystring.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(OutputFile)); }
/// <summary> /// Get the files to deploy, specific to this platform, typically binaries /// </summary> /// <param name="SC">Deployment Context</param> public virtual void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { SC.ArchiveFiles(SC.StageDirectory); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("Android is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } var TargetConfiguration = SC.StageTargetConfigurations[0]; string ApkName = GetFinalApkName(Params, SC.StageExecutables[0], true); string ObbName = GetFinalObbName(ApkName); string BatchName = GetFinalBatchName(ApkName, Params); // verify the files exist if (!FileExists(ApkName)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ApkName); } if (!FileExists(ObbName)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ObbName); } SC.ArchiveFiles(Path.GetDirectoryName(ApkName), Path.GetFileName(ApkName)); SC.ArchiveFiles(Path.GetDirectoryName(ObbName), Path.GetFileName(ObbName)); SC.ArchiveFiles(Path.GetDirectoryName(BatchName), Path.GetFileName(BatchName)); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } var TargetConfiguration = SC.StageTargetConfigurations[0]; var ProjectIPA = MakeIPAFileName( TargetConfiguration, Params ); // verify the .ipa exists if (!FileExists(ProjectIPA)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ProjectIPA); } SC.ArchiveFiles(Path.GetDirectoryName(ProjectIPA), Path.GetFileName(ProjectIPA)); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } var TargetConfiguration = SC.StageTargetConfigurations[0]; string ProjectGameExeFilename = Params.ProjectGameExeFilename; if (UnrealBuildTool.ExternalExecution.GetRuntimePlatform () == UnrealTargetPlatform.Mac) { ProjectGameExeFilename = CombinePaths (Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "IOS", Path.GetFileName (Params.ProjectGameExeFilename)); } var ProjectIPA = MakeIPAFileName( TargetConfiguration, ProjectGameExeFilename ); if (!Params.IsCodeBasedProject) { ProjectIPA = ProjectIPA.Replace("UE4Game", Params.ShortProjectName); } // verify the .ipa exists if (!FileExists(ProjectIPA)) { throw new AutomationException("ARCHIVE FAILED - {0} was not found", ProjectIPA); } SC.ArchiveFiles(Path.GetDirectoryName(ProjectIPA), Path.GetFileName(ProjectIPA)); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath.FullName), "Binaries", "HTML5"); string ProjectDataName = Params.ShortProjectName + ".data"; // copy the "Executable" to the archive directory string GameBasename = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameBasename += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } string GameExe = GameBasename + ".js"; // put the HTML file to the package directory string OutputFilename = (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName) + ".html"; // data file SC.ArchiveFiles(PackagePath, ProjectDataName); // data file js driver SC.ArchiveFiles(PackagePath, ProjectDataName + ".js"); if (targetingWasm) { // main game code SC.ArchiveFiles(PackagePath, GameBasename + ".wasm"); // main js file SC.ArchiveFiles(PackagePath, GameExe); } else { // memory init file SC.ArchiveFiles(PackagePath, GameExe + ".mem"); // maingame code SC.ArchiveFiles(PackagePath, GameBasename + ".asm.js"); // main js file SC.ArchiveFiles(PackagePath, GameBasename + "_asm.js"); } // symbols file SC.ArchiveFiles(PackagePath, GameExe + ".symbols"); // utilities SC.ArchiveFiles(PackagePath, "Utility.js"); // landing page. SC.ArchiveFiles(PackagePath, OutputFilename); // Archive HTML5 Server and a Readme. SC.ArchiveFiles(CombinePaths(CmdEnv.LocalRoot, "Engine/Binaries/DotNET/"), "HTML5LaunchHelper.exe"); SC.ArchiveFiles(CombinePaths(CmdEnv.LocalRoot, "Engine/Build/HTML5/"), "Readme.txt"); SC.ArchiveFiles(PackagePath, "RunMacHTML5LaunchHelper.command"); SC.ArchiveFiles(PackagePath, ".htaccess"); if (Compressed) { SC.ArchiveFiles(PackagePath, ProjectDataName + "gz"); SC.ArchiveFiles(PackagePath, ProjectDataName + ".jsgz"); SC.ArchiveFiles(PackagePath, GameExe + "gz"); if (targetingWasm) { SC.ArchiveFiles(PackagePath, GameBasename + ".wasmgz"); } else { SC.ArchiveFiles(PackagePath, GameExe + ".memgz"); SC.ArchiveFiles(PackagePath, GameExe + ".asm.jsgz"); } SC.ArchiveFiles(PackagePath, GameExe + ".symbolsgz"); SC.ArchiveFiles(PackagePath, "Utility.jsgz"); } else { // nuke old compressed files to prevent using stale files File.Delete(ProjectDataName + "gz"); File.Delete(ProjectDataName + ".jsgz"); File.Delete(GameExe + "gz"); File.Delete(GameBasename + ".wasmgz"); File.Delete(GameExe + ".memgz"); File.Delete(GameExe + ".symbolsgz"); File.Delete("Utility.jsgz"); } if (HTMLPakAutomation.CanCreateMapPaks(Params)) { // find all paks. string[] Files = Directory.GetFiles(Path.Combine(PackagePath, Params.ShortProjectName), "*", SearchOption.AllDirectories); foreach (string PakFile in Files) { SC.ArchivedFiles.Add(PakFile, Path.GetFileName(PakFile)); } } UploadToS3(SC, OutputFilename); }
public override void GetFilesToArchive(ProjectParams Params, DeploymentContext SC) { if (SC.StageTargetConfigurations.Count != 1) { throw new AutomationException("iOS is currently only able to package one target configuration at a time, but StageTargetConfigurations contained {0} configurations", SC.StageTargetConfigurations.Count); } string PackagePath = Path.Combine(Path.GetDirectoryName(Params.RawProjectPath), "Binaries", "HTML5"); string FinalDataLocation = Path.Combine(PackagePath, Params.ShortProjectName) + ".data"; // copy the "Executable" to the archive directory string GameExe = Path.GetFileNameWithoutExtension(Params.ProjectGameExeFilename); if (Params.ClientConfigsToBuild[0].ToString() != "Development") { GameExe += "-HTML5-" + Params.ClientConfigsToBuild[0].ToString(); } GameExe += ".js"; // put the HTML file to the package directory string OutputFile = Path.Combine(PackagePath, (Params.ClientConfigsToBuild[0].ToString() != "Development" ? (Params.ShortProjectName + "-HTML5-" + Params.ClientConfigsToBuild[0].ToString()) : Params.ShortProjectName)) + ".html"; SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation)); SC.ArchiveFiles(PackagePath, Path.GetFileName(FinalDataLocation + ".js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe)); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".mem")); SC.ArchiveFiles(PackagePath, Path.GetFileName(GameExe + ".symbols")); SC.ArchiveFiles(PackagePath, Path.GetFileName("json2.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("jStorage.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName("moz_binarystring.js")); SC.ArchiveFiles(PackagePath, Path.GetFileName(OutputFile)); if (HTMLPakAutomation.CanCreateMapPaks(Params)) { // find all paks. string[] Files = Directory.GetFiles(Path.Combine(PackagePath, Params.ShortProjectName), "*",SearchOption.AllDirectories); foreach(string PakFile in Files) { var DestPak = PakFile.Replace(PackagePath,""); SC.ArchivedFiles.Add(PakFile, DestPak); } } }