ErikssonBeamLauncher
Launch and manage fresh Eriksson Beam instances programmatically.
When to Use
- Starting automation from scratch
- Need a guaranteed clean state
- Processing specific files without user interaction
- Want automatic cleanup when done
Basic Usage
var args = new ErikssonBeamLauncherArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
ExecutablePath = @"C:\Program Files\Eriksson Software\Eriksson Beam\ErikssonBeam.exe",
FilesToOpen = new[] { @"C:\Projects\beam1.ebf", @"C:\Projects\beam2.ebf" },
CloseErikssonBeamOnClientDisconnect = true,
IdleTimeoutMs = 30000
};
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
var client = launcher.Client;
// Work with the client
var design = await client.PullBeamDesignerAsync("beam1");
design.DesignCriteria.ProjectInformation.DesignerName = "Updated";
await client.PushBeamDesignerAsync("beam1", design);
// Eriksson Beam closes automatically when launcher is disposed
Configuration Options
ErikssonBeamLauncherArgs
| Property | Type | Default | Description |
|---|---|---|---|
LicenseKey |
string | "" |
Required. API authorization key |
ExecutablePath |
string | "" |
Required. Full path to ErikssonBeam.exe |
FilesToOpen |
string[] | [] |
Files to open on launch |
CloseErikssonBeamOnClientDisconnect |
bool | true |
Close Eriksson Beam when launcher is disposed |
IdleTimeoutMs |
int | 30000 |
Client connection timeout (ms) |
MaxAttempts |
int | 10 |
Connection retry attempts |
WaitTimeBetweenAttemptsMs |
int | 1000 |
Delay between retries (ms) |
Opening Files on Launch
You can open multiple files when launching:
var args = new ErikssonBeamLauncherArgs
{
// ...
FilesToOpen = new[]
{
@"C:\Projects\beam1.ebf",
@"C:\Projects\beam2.ebf",
@"C:\Projects\beam3.ebf"
}
};
Each file must exist. If a file is not found, the launch will fail.
Disposal Behavior
The launcher manages the Eriksson Beam process lifecycle:
With CloseErikssonBeamOnClientDisconnect = true (Default)
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
// Work with client...
// When using block ends:
// 1. Client connection is closed
// 2. Eriksson Beam process terminates
With CloseErikssonBeamOnClientDisconnect = false
args.CloseErikssonBeamOnClientDisconnect = false;
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
// Work with client...
// When using block ends:
// 1. Client connection is closed
// 2. Eriksson Beam remains open for manual use
Error Handling
try
{
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
var client = launcher.Client;
// ...
}
catch (FileNotFoundException ex)
{
// ExecutablePath or FilesToOpen not found
Console.WriteLine($"File not found: {ex.FileName}");
}
catch (DirectoryNotFoundException ex)
{
// Directory in ExecutablePath doesn't exist
Console.WriteLine($"Directory not found: {ex.Message}");
}
catch (ErikssonBeamNotRunningException ex)
{
// Process failed to start or connection failed
Console.WriteLine($"Launch failed: {ex.Message}");
}
Logging
Pass an ILogger for diagnostic output:
using Microsoft.Extensions.Logging;
// Create logger (example using console)
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole().SetMinimumLevel(LogLevel.Debug);
});
var logger = loggerFactory.CreateLogger<Program>();
var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args, logger);
Complete Example
using System;
using System.Threading.Tasks;
using ErikssonBeam.API.BeamClient;
using Microsoft.Extensions.Logging;
class BatchProcessor
{
static async Task ProcessFiles(string[] files)
{
var args = new ErikssonBeamLauncherArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
ExecutablePath = @"C:\Program Files\Eriksson Software\Eriksson Beam\ErikssonBeam.exe",
FilesToOpen = files,
CloseErikssonBeamOnClientDisconnect = true,
IdleTimeoutMs = 60000 // 1 minute for longer operations
};
try
{
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
var client = launcher.Client;
foreach (var file in files)
{
var fileName = System.IO.Path.GetFileNameWithoutExtension(file);
Console.WriteLine($"Processing {fileName}...");
var design = await client.PullBeamDesignerAsync(fileName);
// Modify design
design.DesignCriteria.ProjectInformation.Date = DateTime.Now;
await client.PushBeamDesignerAsync(fileName, design);
// Save the file
await client.SaveProject(fileName, file, overwriteExistingFile: true);
}
Console.WriteLine("All files processed successfully!");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
See Also
- ErikssonBeamFinder - Connect to existing instances
- ErikssonBeamClient - Direct client connection
- ErikssonBeamFileManager - Advanced file batch processing