forked from cloudmatrix/esky
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog.txt
112 lines (91 loc) · 5.26 KB
/
ChangeLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
v0.7.0:
* Renamed "esky.helper" to "esky.sudo" along with much refactoring:
* esky.use_helper_app is now esky.allow_from_sudo() and is used to
declare a type signature.
* Esky.helper_app is now Esky.sudo_proxy and is always an instance
of esky.sudo.SudoProxy.
* added Esky.drop_root() method to drop root privileges.
* implemented multiple safeguards against malicious input when running
with root privileges.
* Cause all scripts to automagically call esky.run_startup_hooks on
startup. Currently this:
* detects the --esky-spawn-sudo option and runs the sudo helper.
* detects the --esky-spawn-cleanup option and runs the cleanup helper.
* Have Esky.auto_update() call Esky.cleanup() automatically (mostly so it
can immediately drop any root privileges it has acquired).
* Use a separate file "esky-lockfile.txt" for version locking. This
will help protect against strange behaviour when fcntl.flock is
simulated using fcntl.lockf (which released the lock when *any* handle
to the file is closed).
* Try to load correctly if executed from a temporary backup file
(e.g. running from "prog.old.exe" instead of "prog.exe").
* Allow direct overwriting of existing bootstrap files on win32 (instead
of renaming the old version out of the way) but only in very special
circumstances.
* currently only for executables where the icon or version info
has changed but the rest of the exe has not.
* may require spawning a new copy of the process at shutdown, to
overwrite any in-use bootstrap exes.
* Several improvements to py2exe support:
* implemented "optimize" and "unbuffered" settings in the custom
bootstrap code.
* more robust support for the various bundle_files options.
v0.6.0:
* Added Esky.get_root() method, which can escalate to root privileges by
spawning a separate helper process.
* use Esky.has_root() to check if it already has root privileges.
* escalation can use a variety of "sudo" frontends on Unix, and
the "runas" functionality on win32 when UAC is enabled.
* Esky.auto_update() will escalate automatically if it encounters
a permission error.
v0.5.3:
* DefaultVersionFinder: make search for update links case-insensitive.
* py2exe chainloader: execute scripts in the context of the __main__ module.
* reduce number of stat() calls during bootstrap process.
* better cleanup of "*.old.*" files from the bootstrap env.
* use fcntl.flock() for version locking; it's slightly less portable but
has much better semantics for what we want.
v0.5.2:
* more robust error-handling in esky.bootstrap.exists()
v0.5.1:
* only delete files from the top-level app dir if they explicitly belong
to a version that is being removed.
v0.5.0:
* implemented preliminary support for freezing with py2app.
* added module esky.patch for diffing and patching frozen apps:
* provides a generic file format for diffing/patching directories.
* can recurse into compressed zipfiles, giving patches an order
of magnitude smaller than produced by naively applying bsdiff.
* individual files are diffed via bsdiff if cx-bsdiff is installed.
* bsdiff-based patches can be applied with no external dependencies.
* added support for differential updates in DefaultVersionFinder.
* added "bdist_esky_patch" distutils command for producing differential
updates in the format expected by DefaultVersionFinder.
* added filesystem-level locking to protect in-use versions from removal.
* added attribute Esky.active_version, which is non-None when the esky
refers to the currently-running application.
v0.4.0:
* some backwards-incompatible API changes:
* replace Esky.install_update(v) with Esky.auto_update().
* new utility methods Esky.install_version(v)/Esky.uninstall_version(v).
* rename Esky.fetch_update(v) to Esky.fetch_version(v)
* merge VersionFinder.prepare_version into VersionFinder.fetch_version
* made all VersionFinder methods take the target esky as first argument
(in preparation for differential update support in a later version).
* added support for freezing with cx_Freeze.
* improved support for freezing with py2exe:
* added a few well-known hacks to get it to play nice with common
third-party packages (win32com, wxPython).
* implemented a custom chainload() function to avoid using execv().
* added ability to set the icon on each executable, for freezer
modules that support it (currently py2exe and cx_Freeze on win32).
* added more version-handling utility functions: get_all_versions,
is_version_dir, is_installed_version_dir.
* made Esky.cleanup() catch and ignore common errors.
* added support for Python 3 (via distribute's "use_2to3" flag)
* added a brief tutorial and example application
v0.3.0:
* added ability to bundle MSVCRT as a private assembly (this is off
by default, since you must have a valid license to redistribute it).
* refactored to support multiple freezing backends.
* added support for freezing with py2exe.