Create PyQt apps in minutes, not months

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Create PyQt apps in minutes, not months

Michael Herrmann-3
Hi all,

I'm starting a new open source project that solves common pain points of PyQt
development:

 * Packaging your app into a standalone executable / installer
 * Code signing so your users don't get ugly warnings "app is untrusted"
 * Automatic updates

At least, these were the hurdles I encountered while developing my file manager,
https://fman.io. I've so far spent ~2200 hours developing it. Of that, perhaps
400 hours were required for the above tasks. The idea is to package my
field-tested solutions in one cohesive package, so you get the same benefits in
minutes, not months.

I wrote a tutorial that lets you see the project in action. It's at:
https://github.com/mherrmann/fbs-tutorial

Any feedback you might have would be greatly appreciated.

Thanks,
Michael
www.herrmann.io
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Patrick Stinson-3
Cool idea. Also an important problem, but also a bold goal considering the current state of the art.

One hurdle that will likely need to be addressed on macOS is the integration of Xcode, which may or may not make some of this project redundant. Depends on your goals, I suppose. Any developer who wishes to sign an app and sell it in the mac app store will have to read a bunch of Apple docs to handle the certificates, app ids, entitlements, iCloud containers, etc. Maybe you can find a way to make that easier, maybe not.

Personally I have found pyqtdeploy to be an invaluable tool for this. I think it is the best deployment tool out there for PyQt. I use it to generate an Xcode project for macOS and iOS, and then use-it to simply re-write the project every time I make a change. All Xcode config is via qmake vars and plists.

I don’t have any experience with installers, and have only started using Sparkle for auto updates. Integrating that required getting into the Xcode config, as described above.

Anyway, good luck. I’ll be looking forward to seeing what you come up with.

-Patrick

> On Dec 20, 2017, at 12:25 AM, Michael Herrmann <[hidden email]> wrote:
>
> Hi all,
>
> I'm starting a new open source project that solves common pain points of PyQt
> development:
>
> * Packaging your app into a standalone executable / installer
> * Code signing so your users don't get ugly warnings "app is untrusted"
> * Automatic updates
>
> At least, these were the hurdles I encountered while developing my file manager,
> https://fman.io. I've so far spent ~2200 hours developing it. Of that, perhaps
> 400 hours were required for the above tasks. The idea is to package my
> field-tested solutions in one cohesive package, so you get the same benefits in
> minutes, not months.
>
> I wrote a tutorial that lets you see the project in action. It's at:
> https://github.com/mherrmann/fbs-tutorial
>
> Any feedback you might have would be greatly appreciated.
>
> Thanks,
> Michael
> www.herrmann.io
> _______________________________________________
> PyQt mailing list    [hidden email]
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt

smime.p7s (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Michael Herrmann-3
On 20 December 2017 at 17:22, Patrick Stinson <[hidden email]> wrote:
> Cool idea. Also an important problem, but also a bold goal considering the current state of the art.

Thank you for your reply. Yes it's a bold idea, very much depending on
the scope. Automatic updates will require a server, which will be
difficult. But not impossible as it's all stuff I've already done for
my own app.

> One hurdle that will likely need to be addressed on macOS is the integration of Xcode, which may or may not make some of this project redundant. Depends on your goals, I suppose. Any developer who wishes to sign an app and sell it in the mac app store will have to read a bunch of Apple docs to handle the certificates, app ids, entitlements, iCloud containers, etc. Maybe you can find a way to make that easier, maybe not.

I'll shell out to XCode where required using subprocess.Popen(...).
Especially for code signing. I must admit I have not thought about the
Mac App Store (I'm not using it). That will likely be one of the
things that come later (if at all). For now, I just want to make
public what I already have.

> Personally I have found pyqtdeploy to be an invaluable tool for this. I think it is the best deployment tool out there for PyQt. I use it to generate an Xcode project for macOS and iOS, and then use-it to simply re-write the project every time I make a change. All Xcode config is via qmake vars and plists.

I found pyqtdeploy extremely difficult to use and it kept crashing on
me. It's also slow to run pyqtdeploy and then XCode. But perhaps such
a setup is required if you want to publish to the Mac App Store. I've
had very good experiences with PyInstaller.

> I don’t have any experience with installers, and have only started using Sparkle for auto updates. Integrating that required getting into the Xcode config, as described above.

Yes, I use Sparkle as well for my app. So it will likely be used
behind the scenes in fbs as well.

> Anyway, good luck. I’ll be looking forward to seeing what you come up with.

Thanks!

Michael
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Michael Herrmann-3
In reply to this post by Michael Herrmann-3
> Hi did my own package using AppImage for Linux. But I used Qt in c++.
> AppImage could be an alternative easier to deploy.

You're right. AppImage can be a viable alternative. However, it's
Linux only. And it doesn't integrate as well into package managers
(eg. apt on Debian systems, or pacman on Arch). I currently "natively"
support Windows, Mac, Ubuntu and Arch Linux. Other distributions could
be supported via AppImage.
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Patrick Stinson-3
In reply to this post by Michael Herrmann-3


> On Dec 20, 2017, at 8:41 AM, Michael Herrmann <[hidden email]> wrote:
>
>> On 20 December 2017 at 17:22, Patrick Stinson <[hidden email]> wrote:
>> Cool idea. Also an important problem, but also a bold goal considering the current state of the art.
>
> Thank you for your reply. Yes it's a bold idea, very much depending on
> the scope. Automatic updates will require a server, which will be
> difficult. But not impossible as it's all stuff I've already done for
> my own app.
>
>> One hurdle that will likely need to be addressed on macOS is the integration of Xcode, which may or may not make some of this project redundant. Depends on your goals, I suppose. Any developer who wishes to sign an app and sell it in the mac app store will have to read a bunch of Apple docs to handle the certificates, app ids, entitlements, iCloud containers, etc. Maybe you can find a way to make that easier, maybe not.
>
> I'll shell out to XCode where required using subprocess.Popen(...).
> Especially for code signing. I must admit I have not thought about the
> Mac App Store (I'm not using it). That will likely be one of the
> things that come later (if at all). For now, I just want to make
> public what I already have.
>
>> Personally I have found pyqtdeploy to be an invaluable tool for this. I think it is the best deployment tool out there for PyQt. I use it to generate an Xcode project for macOS and iOS, and then use-it to simply re-write the project every time I make a change. All Xcode config is via qmake vars and plists.
>
> I found pyqtdeploy extremely difficult to use and it kept crashing on
> me. It's also slow to run pyqtdeploy and then XCode. But perhaps such
> a setup is required if you want to publish to the Mac App Store. I've
> had very good experiences with PyInstaller.

I think the best way around this is to create a Makefile which runs pyqtdeploy from the command line and then opens the Xcode project file for you to build/debug/archive manually from there. I consider myself pretty anal when it comes to build config and this works well for me.

>
>> I don’t have any experience with installers, and have only started using Sparkle for auto updates. Integrating that required getting into the Xcode config, as described above.
>
> Yes, I use Sparkle as well for my app. So it will likely be used
> behind the scenes in fbs as well.
>
>> Anyway, good luck. I’ll be looking forward to seeing what you come up with.
>
> Thanks!
>
> Michael
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Patrick Stinson-3
In reply to this post by Michael Herrmann-3


> On Dec 20, 2017, at 8:41 AM, Michael Herrmann <[hidden email]> wrote:
>
> On 20 December 2017 at 17:22, Patrick Stinson <[hidden email]> wrote:
>> Cool idea. Also an important problem, but also a bold goal considering the current state of the art.
>
> Thank you for your reply. Yes it's a bold idea, very much depending on
> the scope. Automatic updates will require a server, which will be
> difficult. But not impossible as it's all stuff I've already done for
> my own app.

I’ve been using hockeyapp to manage beta & release versioning and crash reporting, and it also has a feed for sparkle.


>
>> One hurdle that will likely need to be addressed on macOS is the integration of Xcode, which may or may not make some of this project redundant. Depends on your goals, I suppose. Any developer who wishes to sign an app and sell it in the mac app store will have to read a bunch of Apple docs to handle the certificates, app ids, entitlements, iCloud containers, etc. Maybe you can find a way to make that easier, maybe not.
>
> I'll shell out to XCode where required using subprocess.Popen(...).
> Especially for code signing. I must admit I have not thought about the
> Mac App Store (I'm not using it). That will likely be one of the
> things that come later (if at all). For now, I just want to make
> public what I already have.
>
>> Personally I have found pyqtdeploy to be an invaluable tool for this. I think it is the best deployment tool out there for PyQt. I use it to generate an Xcode project for macOS and iOS, and then use-it to simply re-write the project every time I make a change. All Xcode config is via qmake vars and plists.
>
> I found pyqtdeploy extremely difficult to use and it kept crashing on
> me. It's also slow to run pyqtdeploy and then XCode. But perhaps such
> a setup is required if you want to publish to the Mac App Store. I've
> had very good experiences with PyInstaller.
>
>> I don’t have any experience with installers, and have only started using Sparkle for auto updates. Integrating that required getting into the Xcode config, as described above.
>
> Yes, I use Sparkle as well for my app. So it will likely be used
> behind the scenes in fbs as well.
>
>> Anyway, good luck. I’ll be looking forward to seeing what you come up with.
>
> Thanks!
>
> Michael

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt

smime.p7s (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Michael Herrmann-3
On 20 December 2017 at 20:14, Patrick Stinson <[hidden email]> wrote:
>
> I’ve been using hockeyapp to manage beta & release versioning and crash reporting, and it also has a feed for sparkle.

Wow, HockeyApp looks great. I hadn't heard of it before.
Unfortunately, it doesn't seem to support Windows < 10, or Linux. If
it did, I'd totally use it.
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Create PyQt apps in minutes, not months

Barry Scott


On 21 Dec 2017, at 06:29, Michael Herrmann <[hidden email]> wrote:

On 20 December 2017 at 20:14, Patrick Stinson <[hidden email]> wrote:

I’ve been using hockeyapp to manage beta & release versioning and crash reporting, and it also has a feed for sparkle.

Wow, HockeyApp looks great. I hadn't heard of it before.
Unfortunately, it doesn't seem to support Windows < 10, or Linux. If
it did, I'd totally use it.

Mac, windows and linux systems represent unique install challenges.

I have always maintain each installs for each target using what ever tool works for me.

On windows I used my own win-app-packager (on PyPi) with inno installer.
I used to use meinc_installer but that is limited  to py2.
On mac I use py2app and other tools to create a .dmg file.
On fedora I use RPM and Mock to creat install rpms with all sources.


Barry

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt