[Ironpython-users] Run a WPF application written in IronPython on the client computer without the install IronPython
Matt Ward
ward.matt at gmail.com
Mon Mar 19 10:14:36 CET 2012
If you use the /target:winexe with pyc.py it will add the STAThread
attribute to your main method. That should fix the exception.
In the C# console app you can add the STAThread attribute to the main method:
class Program
{
[STAThread]
static void Main(string[] args)
{
On 19 March 2012 08:17, <sepatan at sibmail.com> wrote:
> I have a need to run a WPF application written in IronPython on the client
> without installing IronPython.
> Technology to try to debug a standard example of WPF
> .\IronPython-2.7.2.1\Tutorial.
> Baseline data:
>
> 1) The computer is not installed IronPython. From IronPython-2.7.2.1.zip
> (download program) extracted in C:\IronPython
>
> 2) Create a C:\IronPython subdirectory pyc_d.
>
> 3) In the C:\IronPython\pyc_d created a file primer.py:
>
> from avalon import *
> import calculator
> w = Window()
> w.Title = "My Avalon Application"
> w.Content = LoadXaml("calc.xaml")
> calculator.enliven(w)
> w.Show()
>
> 4)pyc_d contains:
>
> IronPython.dll
> IronPython.Modules.dll
> IronPython.Wpf.dll
> Microsoft.Scripting.dll
>
> avalon.py
> Calc.xaml
> calculator.py
> primer.py
> pyc.py
>
> 5) Run ipy.exe, sequentially enter commands from the primer.py, it works :).
>
> 6) Next:
> c:\IronPython\ipy.exe pyc.py /main:primer.py /target:exe /platform:x86
> /standalone
> I get primer.exe (4,09 МБ).
>
> 7) Run from the console, I get:
> C:\IronPython\pyc_d>primer.exe
>
> An unhandled exception: System.InvalidOperationException: The calling
> thread must be STA, because many UI components require this.
> в Microsoft.Scripting.Interpreter.NewInstruction.Run(InterpretedFrame
> frame)
> в Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
> в Microsoft.Scripting.Interpreter.LightLambda.Run3[T0,T1,T2,TRet](T0
> arg0, T1 arg1, T2 arg2)
> ...............................................................................
> All is not enumerate
>
> It seems to do everything correctly. I take an example from the Tutorial,
> the files from the Tutorial, to be going smoothly, but ... What is the
> problem?
>
> 8)Try another option. Make a thin client in C #.
> Create a console C # project, and Program.cs:
>
> using System;
> using IronPython.Hosting;
> using Microsoft.Scripting.Hosting;
> using System.Reflection;
> using System.IO;
>
> namespace ConsoleApplication1
> {
> class Program
> {
> static void Main(string[] args)
> {
> string path = Assembly.GetExecutingAssembly().Location;
> string dir = Directory.GetParent(path).FullName;
>
> ScriptEngine engine = Python.CreateEngine();
> ScriptSource source =
> engine.CreateScriptSourceFromFile(Path.Combine(dir, args[0]));
> CompiledCode compiled = source.Compile();
> ScriptScope scope = engine.CreateScope();
> compiled.Execute(scope);
> }
> }
> }
>
> 9) run:
> C:\IronPython\pyc_d>ConsoleApplication1.exe primer.py
>
> the same result: (Unhandled exception: System.InvalidOperationException:
> The calling thread must be STA, because many UI components require this.)
> What is the problem?
> Are there any experts who can create learning (from Tutorial) WPF
> application and run it on a machine without installing IronPython from
> the console?
> Thank you.)
>
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users at python.org
> http://mail.python.org/mailman/listinfo/ironpython-users
More information about the Ironpython-users
mailing list