public int Run() { try { Stream codeStream = LocateCode(); var formatter = new BinaryFormatter(); var reader = new ScriptEngine.Compiler.ModulePersistor(formatter); var moduleHandle = reader.Read(codeStream); var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(moduleHandle); var process = engine.CreateProcess(this, moduleHandle, src); return process.Start(); } catch (ScriptInterruptionException e) { return e.ExitCode; } catch (Exception e) { this.ShowExceptionInfo(e); return 1; } }
public int Run() { try { ScriptModuleHandle module; var engine = new HostedScriptEngine(); engine.Initialize(); using (Stream codeStream = LocateCode()) using (var binReader = new BinaryReader(codeStream)) { int modulesCount; modulesCount = binReader.ReadInt32(); var formatter = new BinaryFormatter(); var reader = new ScriptEngine.Compiler.ModulePersistor(formatter); var entry = reader.Read(codeStream); --modulesCount; while (modulesCount-- > 0) { var userScript = reader.Read(codeStream); engine.LoadUserScript(userScript); } module = entry.Module; } var src = new BinaryCodeSource(module); var process = engine.CreateProcess(this, module, src); return(process.Start()); } catch (ScriptInterruptionException e) { return(e.ExitCode); } catch (Exception e) { this.ShowExceptionInfo(e); return(1); } }
public int Run() { try { Stream codeStream = LocateCode(); var formatter = new BinaryFormatter(); var reader = new ScriptEngine.Compiler.ModulePersistor(formatter); var moduleHandle = reader.Read(codeStream); var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(moduleHandle); var process = engine.CreateProcess(this, moduleHandle, src); return(process.Start()); } catch (Exception e) { Console.Write(e.ToString()); return(-1); } }
public Process CreateProcess(Stream sourceStream, IHostApplication host) { var appDump = DeserializeAppDump(sourceStream); var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(); var templateStorage = new TemplateStorage(new StandaloneTemplateFactory()); engine.SetGlobalEnvironment(host, src); engine.InitializationCallback = (e, env) => { e.Environment.InjectObject(templateStorage); GlobalsManager.RegisterInstance(templateStorage); }; engine.Initialize(); LoadResources(templateStorage, appDump.Resources); LoadScripts(engine, appDump.Scripts); var process = engine.CreateProcess(host, appDump.Scripts[0].Image, src); return(process); }
public int Run() { try { Stream codeStream = LocateCode(); var formatter = new BinaryFormatter(); var reader = new ScriptEngine.Compiler.ModulePersistor(formatter); var moduleHandle = reader.Read(codeStream); var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(moduleHandle); var process = engine.CreateProcess(this, moduleHandle, src); return(process.Start()); } catch (ScriptInterruptionException e) { return(e.ExitCode); } catch (Exception e) { this.ShowExceptionInfo(e); return(1); } }
public int Run() { if (_sourceStream == null && CommandLineArguments != null && CommandLineArguments.Length > 1) { var firstArg = CommandLineArguments[0]; if (firstArg == "-loadDump") { var path = CommandLineArguments[1]; CommandLineArguments = CommandLineArguments.Skip(2).ToArray(); using (var dumpStream = new FileStream(path, FileMode.Open)) { _sourceStream = GetCodeStream(dumpStream); } return(Run()); //ну да, говнокод и лапша, время жмет } } if (_sourceStream == null) { _sourceStream = LocateCode(); } var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(); engine.SetGlobalEnvironment(this, src); try { var templateStorage = new TemplateStorage(new StandaloneTemplateFactory()); engine.InitializationCallback = (e, env) => { e.Environment.InjectObject(templateStorage); GlobalsManager.RegisterInstance(templateStorage); }; engine.Initialize(); var serializer = new BinaryFormatter(); var appDump = (ApplicationDump)serializer.Deserialize(_sourceStream); foreach (var resource in appDump.Resources) { templateStorage.RegisterTemplate(resource.ResourceName, DeserializeTemplate(resource.Data)); } var module = appDump.Scripts[0].Image; for (int i = 1; i < appDump.Scripts.Length; i++) { engine.LoadUserScript(appDump.Scripts[i]); } var process = engine.CreateProcess(this, module, src); return(process.Start()); } catch (ScriptInterruptionException e) { return(e.ExitCode); } catch (Exception e) { ShowExceptionInfo(e); return(1); } }
public int Run() { if (_sourceStream == null && CommandLineArguments != null && CommandLineArguments.Length > 1) { var firstArg = CommandLineArguments[0]; if (firstArg == "-loadDump") { var path = CommandLineArguments[1]; CommandLineArguments = CommandLineArguments.Skip(2).ToArray(); using (var dumpStream = new FileStream(path, FileMode.Open)) { _sourceStream = GetCodeStream(dumpStream); } Run(); //ну да, говнокод и лапша, время жмет } } if (_sourceStream == null) { _sourceStream = LocateCode(); } var engine = new HostedScriptEngine(); var src = new BinaryCodeSource(); engine.SetGlobalEnvironment(this, src); try { ModuleImage module; engine.Initialize(); using (var binReader = new BinaryReader(_sourceStream)) { var modulesCount = binReader.ReadInt32(); var reader = new ModulePersistor(); var entry = reader.Read(_sourceStream); --modulesCount; while (modulesCount-- > 0) { var userScript = reader.Read(_sourceStream); engine.LoadUserScript(userScript); } module = entry.Image; } var process = engine.CreateProcess(this, module, src); return(process.Start()); } catch (ScriptInterruptionException e) { return(e.ExitCode); } catch (Exception e) { ShowExceptionInfo(e); return(1); } }