bool FLauncherProfileManager::SaveJSONProfile(const ILauncherProfileRef& Profile) { if (Profile->GetId().IsValid()) { FString Text; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&Text); Profile->Save(Writer.Get()); Writer->Close(); return FFileHelper::SaveStringToFile(Text, *Profile->GetFilePath()); } return false; }
void FLauncherProfileManager::SaveProfile(const ILauncherProfileRef& Profile) { if (Profile->GetId().IsValid()) { FString ProfileFileName = GetProfileFolder() / Profile->GetId().ToString() + TEXT(".ulp"); FArchive* ProfileFileWriter = IFileManager::Get().CreateFileWriter(*ProfileFileName); if (ProfileFileWriter != nullptr) { Profile->Serialize(*ProfileFileWriter); delete ProfileFileWriter; } } }
void FLauncherProfileManager::RemoveProfile( const ILauncherProfileRef& Profile ) { AllProfiles.Remove(Profile); if (SavedProfiles.Remove(Profile) > 0) { if (Profile->GetId().IsValid()) { // delete the persisted profile on disk FString ProfileFileName = GetProfileFolder() / Profile->GetId().ToString() + TEXT(".ulp"); // delete the profile IFileManager::Get().Delete(*ProfileFileName); ProfileRemovedDelegate.Broadcast(Profile); } } }
bool FLauncherProfileManager::SaveProfile(const ILauncherProfileRef& Profile) { if (Profile->GetId().IsValid()) { FString ProfileFileName = Profile->GetFilePath(); FArchive* ProfileFileWriter = IFileManager::Get().CreateFileWriter(*ProfileFileName); if (ProfileFileWriter != nullptr) { Profile->Serialize(*ProfileFileWriter); delete ProfileFileWriter; return true; } } return false; }
void FLauncherProfileManager::ChangeProfileName(const ILauncherProfileRef& Profile, FString Name) { FString OldName = Profile->GetName(); FString OldProfileFileName = Profile->GetFilePath(); //change name and save to new location Profile->SetName(Name); if (SaveJSONProfile(Profile)) { //delete the old profile if the location moved. File names should be uppercase so this compare works on case sensitive and insensitive platforms if (OldProfileFileName.Compare(Profile->GetFilePath()) != 0) { IFileManager::Get().Delete(*OldProfileFileName); } } else { //if we couldn't save successfully, change the name back to keep files/profiles matching. Profile->SetName(OldName); } }
ILauncherWorkerPtr FLauncher::Launch( const ITargetDeviceProxyManagerRef& DeviceProxyManager, const ILauncherProfileRef& Profile ) { if (Profile->IsValidForLaunch()) { FLauncherWorker* LauncherWorker = new FLauncherWorker(DeviceProxyManager, Profile); if ((LauncherWorker != NULL) && (FRunnableThread::Create(LauncherWorker, TEXT("LauncherWorker"), false, false, 0, TPri_Normal) != NULL)) { return MakeShareable(LauncherWorker); } } return NULL; }
void FLauncherProfileManager::AddProfile( const ILauncherProfileRef& Profile ) { if (!SavedProfiles.Contains(Profile)) { // replace the existing profile ILauncherProfilePtr ExistingProfile = GetProfile(Profile->GetId()); if (ExistingProfile.IsValid()) { RemoveProfile(ExistingProfile.ToSharedRef()); } if (!Profile->GetDeployedDeviceGroup().IsValid()) { Profile->SetDeployedDeviceGroup(AddNewDeviceGroup()); } // add the new profile SavedProfiles.Add(Profile); AllProfiles.Add(Profile); ProfileAddedDelegate.Broadcast(Profile); } }
static void SetupIOSDLCProfile(ILauncherProfileRef& DLCProfile, const FProfileParameters& Params, const FString& ProjectPath) { DLCProfile->SetProjectSpecified(true); DLCProfile->SetProjectPath(ProjectPath); DLCProfile->SetBuildUAT(true); // App build configuration DLCProfile->SetBuildGame(false); //// Cooking DLCProfile->SetCookMode(ELauncherProfileCookModes::ByTheBook); DLCProfile->SetCookConfiguration(Params.BuildConfiguration); for (const FString& MapName : Params.DLCMaps) { DLCProfile->AddCookedMap(MapName); } DLCProfile->AddCookedPlatform(IOSProfileConstants::AppPlatformName); // Release settings DLCProfile->SetCreateReleaseVersion(false); DLCProfile->SetBasedOnReleaseVersionName(IOSProfileConstants::AppReleaseName); DLCProfile->SetCreateDLC(true); DLCProfile->SetDLCName(IOSProfileConstants::DLCName); DLCProfile->SetDLCIncludeEngineContent(false); DLCProfile->SetIncrementalCooking(false); DLCProfile->SetCompressed(false); DLCProfile->SetDeployWithUnrealPak(true); // HTTP chunk data DLCProfile->SetGenerateHttpChunkData(true); DLCProfile->SetHttpChunkDataReleaseName(IOSProfileConstants::DLCName); { FString CloudDir = Params.ArchiveDirectory / TEXT("HTTPchunks/") / IOSProfileConstants::DLCName; IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile(); if (!PlatformFile.DirectoryExists(*CloudDir)) { PlatformFile.CreateDirectoryTree(*CloudDir); } DLCProfile->SetHttpChunkDataDirectory(CloudDir); } // Packaging DLCProfile->SetPackagingMode(ELauncherProfilePackagingModes::DoNotPackage); // Deploy DLCProfile->SetDeploymentMode(ELauncherProfileDeploymentModes::DoNotDeploy); // Launch DLCProfile->SetLaunchMode(ELauncherProfileLaunchModes::DoNotLaunch); }
static void SetupIOSAppProfile(ILauncherProfileRef& AppProfile, const FProfileParameters& Params, const FString& ProjectPath) { AppProfile->SetProjectSpecified(true); AppProfile->SetProjectPath(ProjectPath); AppProfile->SetBuildUAT(true); // App build configuration AppProfile->SetBuildGame(true); AppProfile->SetBuildConfiguration(Params.BuildConfiguration); //// Cooking AppProfile->SetCookMode(ELauncherProfileCookModes::ByTheBook); AppProfile->SetCookConfiguration(Params.BuildConfiguration); for (const FString MapName : Params.AppMaps) { AppProfile->AddCookedMap(MapName); } AppProfile->AddCookedPlatform(IOSProfileConstants::AppPlatformName); // Release settings AppProfile->SetCreateReleaseVersion(true); AppProfile->SetCreateReleaseVersionName(IOSProfileConstants::AppReleaseName); AppProfile->SetIncrementalCooking(false); AppProfile->SetCompressed(false); AppProfile->SetDeployWithUnrealPak(true); // Packaging AppProfile->SetPackagingMode(ELauncherProfilePackagingModes::Locally); // Archive AppProfile->SetArchive(true); { FString AppDir = Params.ArchiveDirectory / TEXT("App/") / IOSProfileConstants::AppReleaseName; IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile(); if (!PlatformFile.DirectoryExists(*AppDir)) { PlatformFile.CreateDirectoryTree(*AppDir); } AppProfile->SetArchiveDirectory(AppDir); } // Deploy AppProfile->SetDeploymentMode(ELauncherProfileDeploymentModes::DoNotDeploy); // Launch AppProfile->SetLaunchMode(ELauncherProfileLaunchModes::DoNotLaunch); }