Example #1
0
        private void CreateDeploymentPackage(CreatePackageRequest request, LogController controller, ServiceResponseBase <DataImportResponseItem> response)
        {
            var folderPath = request.FolderPath.FolderPath;

            var tasksDone  = 0;
            var totalTasks = 4;

            var xrmRecordService = XrmRecordService;
            var service          = xrmRecordService.XrmService;
            var solution         = service.Retrieve(Entities.solution, new Guid(request.Solution.Id));

            tasksDone++;
            if (solution.GetStringField(Fields.solution_.version) != request.ThisReleaseVersion)
            {
                controller.UpdateProgress(tasksDone, totalTasks, "Setting Release Version " + request.ThisReleaseVersion);
                solution.SetField(Fields.solution_.version, request.ThisReleaseVersion);
                service.Update(solution, new[] { Fields.solution_.version });
            }
            controller.UpdateProgress(tasksDone, totalTasks, "Exporting Solution " + request.Solution.Name);

            var uniqueName = (string)solution.GetStringField(Fields.solution_.uniquename);
            var req        = new ExportSolutionRequest();

            req.Managed      = request.ExportAsManaged;
            req.SolutionName = uniqueName;

            var exportResponse = (ExportSolutionResponse)service.Execute(req);

            var version     = solution.GetStringField(Fields.solution_.version);
            var versionText = version == null ? null : version.Replace(".", "_");
            var fileName    = string.Format("{0}_{1}{2}.zip", uniqueName, versionText,
                                            request.ExportAsManaged ? "_managed" : null);

            FileUtility.WriteToFile(folderPath, fileName, exportResponse.ExportSolutionFile);
            ++tasksDone;
            if (request.DataToInclude != null && request.DataToInclude.Any())
            {
                controller.UpdateProgress(tasksDone, totalTasks, "Exporting Data " + request.Solution.Name);
                var dataExportService = new ExportXmlService(xrmRecordService);
                dataExportService.ExportXml(request.DataToInclude,
                                            new Folder(GetDataExportFolder(folderPath)), request.IncludeNotes,
                                            request.IncludeNNRelationshipsBetweenEntities, controller);
            }
            tasksDone++;
            if (solution.GetStringField(Fields.solution_.version) != request.SetVersionPostRelease)
            {
                controller.UpdateProgress(tasksDone, totalTasks, "Setting New Solution Version " + request.SetVersionPostRelease);
                solution.SetField(Fields.solution_.version, request.SetVersionPostRelease);
                service.Update(solution, new[] { Fields.solution_.version });
            }
            if (request.DeployPackageInto != null)
            {
                if (response.HasError)
                {
                    throw new Exception("Package Deployment Aborted Due To Errors During Creating");
                }
                else
                {
                    var deployRequest = new DeployPackageRequest
                    {
                        FolderContainingPackage = request.FolderPath,
                        Connection = request.DeployPackageInto
                    };
                    var deployService = new DeployPackageService(new XrmRecordService(request.DeployPackageInto));
                    deployService.ExecuteExtention(deployRequest, response, controller);
                }
            }
        }
Example #2
0
 public override void ExecuteExtention(CreatePackageRequest request, ServiceResponseBase <DataImportResponseItem> response,
                                       LogController controller)
 {
     CreateDeploymentPackage(request, controller, response);
 }