[Ironpython-users] Run a WPF application written in IronPython on the client computer without the install IronPython

Slide slide.o.mix at gmail.com
Mon Mar 19 17:07:39 CET 2012


Hmmm, do you have Visual Studio installed so that you could possibly debug
the application when it fails at the end and pinpoint the spot of failure?

Thanks,

slide

2012/3/19 <sepatan at sibmail.com>

> Hello).
> With the advice Matt Ward, thanks to him, the problem was solved as
> follows:
> 1) had to change avalon.py as follows:
> commented out 2 lines
> .............
> t = Thread(ThreadStart(start))
> t.IsBackground = True
> t.ApartmentState = ApartmentState.STA
> #t.Start()
> #are.WaitOne()
> ..............
>
> 2) changed the file primer.py:
> from avalon import *
> import calculator
> global app
> global dispatcher
> app = Application()
> app.Startup += on_startup
> w = Window()
> w.Title = "My Avalon Application"
> w.Content = LoadXaml("calc.xaml")
> calculator.enliven(w)
> app.Run(w)
> w.Show()
>
> 3) after compilation:
> c:\IronPython\ipy.exe pyc.py /main: primer.py /target: winexe /platform:
> x86 /standalone
> was working primer.exe
> but ...
> not without nuance):
> after closing the window appears the system error message:
> primer.exe - an error is detected. The application will be closed. We are
> We apologize for any inconvenience.
> If the work was not finished, operational data may be lost.
> This message did not have to be.
> Maybe there is someone the idea.)
>
> Thank you.
>
> > You will need to keep the message pump alive by using Application.Run.
> > The following code should work (new first line and last two lines):
> >
> > from System.Windows import Application
> >
> > from avalon import *
> > import calculator
> > w = Window()
> > w.Title = "My Avalon Application"
> > w.Content = LoadXaml("calc.xaml")
> > calculator.enliven(w)
> >
> > app = Application()
> > app.Run(w)
> >
> > On 19 March 2012 09:29,  <sepatan at sibmail.com> wrote:
> >> Thank you, Matt Ward :).
> >> В It worked :)). You're a real expert.
> >> В Just one more thing, a window appears and then disappears. I guess,
> >> because the console is closed.
> >> В Maybe after the text of the program in primer.py something else should
> >> be?
> >>
> >> from avalon import *
> >> import calculator
> >> w = Window()
> >> w.Title = "My Avalon Application"
> >> w.Content = LoadXaml("calc.xaml")
> >> calculator.enliven(w)
> >> w.Show()
> >> ??????????????????????????????????
> >>
> >>> 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 MB).
> >>>>
> >>>> 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
> >>>
> >>
> >>
> >
>
>
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users at python.org
> http://mail.python.org/mailman/listinfo/ironpython-users
>



-- 
Website: http://earl-of-code.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20120319/aa517c69/attachment.html>


More information about the Ironpython-users mailing list