protected override void Execute(CodeActivityContext context) { string configurationFile = ConfigurationFile.Get(context); string manifestFile = ModelManifestFile.Get(context); string version = VersionOverride.Get(context); string description = DescriptionOverride.Get(context); var serverConfig = Helper.GetServerConfig(configurationFile); CodeCrib.AX.Manage.ModelStore store = null; if (serverConfig.AOSVersionOrigin.Substring(0, 3) == "6.0") { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}", serverConfig.Database)); } else { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}_model", serverConfig.Database)); } if (!string.IsNullOrEmpty(version) || !string.IsNullOrEmpty(description)) { store.CreateModel(manifestFile, version, description); } else { store.CreateModel(manifestFile); } if (SetNoInstallMode.Get(context)) { store.SetNoInstallMode(); } }
protected override void Execute(CodeActivityContext context) { string configurationFile = ConfigurationFile.Get(context); string modelName, publisher, layer; CodeCrib.AX.Manage.ModelStore.ExtractModelInfo(ModelManifestFile.Get(context), out publisher, out modelName, out layer); var serverConfig = Helper.GetServerConfig(configurationFile); CodeCrib.AX.Manage.ModelStore store = null; if (serverConfig.AOSVersionOrigin.Substring(0, 3) == "6.0") { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}", serverConfig.Database)); } else { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}_model", serverConfig.Database)); } context.TrackBuildMessage(string.Format("Uninstalling all models from layer {0}", layer)); store.UninstallAllLayerModels(layer); if (SetNoInstallMode.Get(context)) { store.SetNoInstallMode(); } }
protected override void Execute(CodeActivityContext context) { string configurationFile = ConfigurationFile.Get(context); string modelFile = ModelFile.Get(context); string axutilFolder = AxUtilBinaryFolder.Get(context); string modelName, publisher, layer; CodeCrib.AX.Manage.ModelStore.ExtractModelInfo(ModelManifestFile.Get(context), out publisher, out modelName, out layer); string keyFile = StrongNameKeyFile.Get(context); var serverConfig = Helper.GetServerConfig(configurationFile); CodeCrib.AX.Manage.ModelStore store = null; if (serverConfig.AOSVersionOrigin.Substring(0, 3) == "6.0") { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}", serverConfig.Database), axutilFolder); } else { store = new Manage.ModelStore(serverConfig.DatabaseServer, string.Format("{0}_model", serverConfig.Database), axutilFolder); } context.TrackBuildMessage(string.Format("Exporting model {0} ({1})", modelName, publisher)); store.ExportModel(modelName, publisher, modelFile, keyFile); }
protected override void Execute(CodeActivityContext context) { bool updateXRef = UpdateCrossReference.Get(context); int timeOutMinutes = TimeOutMinutes.Get(context); string clientExePath = ClientExecutablePath.Get(context); StringList aotCompilePaths = AOTCompilePaths.Get(context); if (aotCompilePaths == null || aotCompilePaths.Count == 0) { // Nothing to do. return; } string configurationFile = ConfigurationFile.Get(context); Client.Commands.AutoRun command = new Client.Commands.AutoRun { LazyClassLoading = true, LazyTableLoading = true, Minimize = true }; if (!string.IsNullOrEmpty(configurationFile)) { command.ConfigurationFile = configurationFile; } StringList layerCodes = LayerCodes.Get(context); if (layerCodes != null) { string modelManifest = ModelManifestFile.Get(context); if (!string.IsNullOrEmpty(modelManifest)) { string model; string publisher; string layer; string layerCode; Helper.ExtractClientLayerModelInfo(configurationFile, layerCodes, modelManifest, out model, out publisher, out layer, out layerCode); command.Model = model; command.ModelPublisher = publisher; command.Layer = layer; command.LayerCode = layerCode; } } Client.AutoRun.AxaptaAutoRun axaptaAutoRun = new Client.AutoRun.AxaptaAutoRun() { ExitWhenDone = true }; foreach (string path in aotCompilePaths) { axaptaAutoRun.Steps.Add(new Client.AutoRun.CompileApplication() { UpdateCrossReference = false, Node = path }); } string autorunFilename = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); Client.AutoRun.AxaptaAutoRun.SerializeAutoRun(axaptaAutoRun, autorunFilename); command.Filename = autorunFilename; context.TrackBuildMessage("Compiling individual AOT nodes"); if (string.IsNullOrEmpty(clientExePath)) { Client.Client.ExecuteCommand(command, timeOutMinutes); } else { Client.Client.ExecuteCommand(clientExePath, command, timeOutMinutes); } // Compile log is not parsed at this point. We expect to // run a full compile at a later step to get the compile results. }
protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state) { int timeoutMinutes = TimeOutMinutes.Get(context); string configurationFile = ConfigurationFile.Get(context); StringList layerCodes = LayerCodes.Get(context); string labelFilesFolder = LabelFilesFolder.Get(context); if (!Directory.Exists(labelFilesFolder)) { context.TrackBuildWarning(string.Format("Label file folder {0} not found.", labelFilesFolder)); // TODO Is there a better way with this? can we just return null or something? Func <int, int, Exception> bogusDelegate = new Func <int, int, Exception>(CommandContext.WaitForProcess); context.UserState = new CommandContext { Delegate = bogusDelegate, Process = null, AutoRun = null, AutoRunFile = null }; return(bogusDelegate.BeginInvoke(0, 0, callback, state)); } string modelName; string publisher; string layer; string layerCode; string modelManifest = ModelManifestFile.Get(context); Helper.ExtractClientLayerModelInfo(configurationFile, layerCodes, modelManifest, out modelName, out publisher, out layer, out layerCode); var clientConfig = Helper.GetClientConfig(configurationFile); Client.AutoRun.AxaptaAutoRun autoRun = new Client.AutoRun.AxaptaAutoRun() { ExitWhenDone = true, LogFile = string.Format(@"{0}\LabelFlushLog-{1}.xml", Environment.ExpandEnvironmentVariables(clientConfig.LogDirectory), Guid.NewGuid()) }; Client.Commands.ImportLabelFile importCommand = new Client.Commands.ImportLabelFile() { ConfigurationFile = configurationFile, Layer = layer, LayerCode = layerCode, Model = modelName, ModelPublisher = publisher }; foreach (string filename in Directory.GetFiles(labelFilesFolder, "*.ald")) { if (!IsEmptyLabelFile(filename)) { context.TrackBuildMessage(string.Format("Importing label file {0} into model {1} ({2})", filename, modelName, publisher)); importCommand.Filename = filename; Client.Client.ExecuteCommand(importCommand, timeoutMinutes); string labelFile = Path.GetFileNameWithoutExtension(filename).Substring(2, 3); string labelLanguage = Path.GetFileNameWithoutExtension(filename).Substring(5); autoRun.Steps.Add(new Client.AutoRun.Run() { Type = Client.AutoRun.RunType.@class, Name = "Global", Method = "info", Parameters = string.Format("strFmt(\"Flush label {0} language {1}: %1\", Label::flush(\"{0}\",\"{1}\"))", labelFile, labelLanguage) }); } } string autoRunFile = string.Format(@"{0}\AutoRun-LabelFlush-{1}.xml", Environment.GetEnvironmentVariable("temp"), Guid.NewGuid()); Client.AutoRun.AxaptaAutoRun.SerializeAutoRun(autoRun, autoRunFile); context.TrackBuildMessage(string.Format("Flushing imported label files")); Process process = Client.Client.StartCommand(new Client.Commands.AutoRun() { ConfigurationFile = configurationFile, Layer = layer, LayerCode = layerCode, Model = modelName, ModelPublisher = publisher, Filename = autoRunFile }); Func <int, int, Exception> processWaitDelegate = new Func <int, int, Exception>(CommandContext.WaitForProcess); context.UserState = new CommandContext { Delegate = processWaitDelegate, Process = process, AutoRun = autoRun, AutoRunFile = autoRunFile, LogFile = autoRun.LogFile }; return(processWaitDelegate.BeginInvoke(process.Id, timeoutMinutes, callback, state)); }