Releases: mherrmann/fbs
Expose build settings to fbs_runtime
A common thing to do is to display the version of your app in the GUI. In previous versions of fbs, this was difficult. The reason for this is that the version was stored in (usually) the base.json
settings file, which is theoretically available when you run from source, but not when running the frozen form of your app.
This release of fbs adds a property called public_settings
to ApplicationContext
. It lets you easily access certain settings (such as version
) from your application. For an example, please see the associated documentation.
Add a custom Excepthook for easier debugging
Let f
and h
be Python functions and g
be a function of Qt. If
f() -> g() -> h()
(where "->
" means "calls"), and an exception occurs in h()
, then the
traceback does not contain f
. This can make debugging very difficult.
This version of fbs adds a custom excepthook
that adds the missing
traceback entries. You can change it by overwriting the
@cached_property
ApplicationContext.excepthook
.
The code below can be used to reproduce the f() -> g() -> h()
problem. It opens a window with a button. When you click it, an error
occurs whose traceback does not include f()
.
The problem described here is not specific to PyQt5 - It occurs for
PySide2 as well. To see this, replace PyQt5
by PySide2
below.
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class Window(QWidget):
def __init__(self):
super().__init__()
btn = QPushButton('Click me', self)
btn.clicked.connect(self.f)
def f(self, _):
self.inputMethodQuery(Qt.ImAnchorPosition)
def inputMethodQuery(self, query):
if query == Qt.ImAnchorPosition:
# Make Qt call inputMethodQuery(ImCursorPosition).
# This is our "g()":
return super().inputMethodQuery(query) # "g()"
self.h()
def h(self):
raise Exception()
app = QApplication([])
window = Window()
window.show()
app.exec_()
Add support for building on Linux Mint
startproject command: don't allow spaces in app name
v0.5.5 Set version number for release 0.5.5
Small improvements
- Slightly improved the output you see from several fbs commands.
fbs freeze
now gives a more helpful hint whenmsvcr110.dll
can't be found on Windows. See #63.
Add a `release` command
It bumps the version and runs clean
, freeze
, ..., upload
.
Add `upload` command
The new command uploads your binaries to https://fbs.sh, so your users can download and install very easily. This is especially powerful on Linux, where automatic updates and code signing are already implemented. Say you are on Linux. Then the following sequence of commands creates, compiles and uploads an app:
fbs startproject
fbs gengpgkey
fbs register
fbs buildvm ubuntu
fbs runvm ubuntu
# (In the Ubuntu virtual machine):
fbs clean
fbs freeze
fbs installer
fbs repo
fbs upload
The output of the upload
command gives you download instructions that you can give to your users. What's more, when they install your app using the instructions and you release a new version via the above commands, then they automatically receive your changes 💪
This release also improves the usability of a few other commands.
Large and small improvements
- There are now
register
andlogin
commands. This is in preparation of anupload
command which will let you upload your installer to the domain https://fbs.sh. - Sensitive settings are now stored in
src/build/settings/secret.json
. This lets you exclude this file from VCS, and thus eg. prevent it from being uploaded to GitHub. - Many commands now give more helpful hints when you use them incorrectly.
Fix broken `buildvm` command
v0.5.0 Set version number for release 0.5.0
A few small bug fixes
Pertaining to the new commands
sign_installer
repo
buildvm