コード例 #1
0
        public override void ExecuteExtention(ImportSolutionRequest request, ImportSolutionResponse response,
                                              LogController controller)
        {
            //just use the method in DeployPackageService to do the import
            var xrmRecordService = new XrmRecordService(request.Connection);
            var service          = new DeployPackageService(xrmRecordService);

            service.ImportSolutions(new[] { request.SolutionZip.FileName }, controller, xrmRecordService);
        }
コード例 #2
0
        public override void ExecuteExtention(ImportSolutionRequest request, ImportSolutionResponse response,
                                              ServiceRequestController controller)
        {
            //just use the method in DeployPackageService to do the import
            var xrmRecordService = new XrmRecordService(request.Connection);
            var service          = new DeployPackageService();
            var importItems      = service.ImportSolutions(new[] { request.SolutionZip.FileName }, controller.Controller, xrmRecordService);

            response.AddResponseItems(importItems.Select(it => new ImportSolutionResponseItem(it)));
        }
コード例 #3
0
        public override void ExecuteExtention(ImportSolutionRequest request, ImportSolutionResponse response,
                                              ServiceRequestController controller)
        {
            //just use the method in DeployPackageService to do the import
            var xrmRecordService       = new XrmRecordService(request.Connection, ConnectionFactory);
            var service                = new DeployPackageService(null);
            var importSolutionResponse = service.ImportSolutions(new[] { request.SolutionZip.FileName }, controller.Controller, xrmRecordService);

            response.LoadImportSolutionsResponse(importSolutionResponse);
            response.Connection = request.Connection;
            if (!importSolutionResponse.Success)
            {
                response.Message = $"There was an error importing the solution";
            }
            else
            {
                response.Message = $"The Solution Has Been Deployed Into {request.Connection}";
            }
        }
コード例 #4
0
        private void CreateDeploymentPackage(CreatePackageRequest request, ServiceRequestController controller, CreatePackageResponse 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.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();
                    var deployPackageResponse = new DeployPackageResponse();
                    deployService.ExecuteExtention(deployRequest, deployPackageResponse, controller);
                    response.LoadDeployPackageResponse(deployPackageResponse);
                }
            }
        }