forked from cloudmatrix/esky
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog.txt
144 lines (117 loc) · 6.78 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
v0.7.3:
* Esky.cleanup_at_exit: don't fail if there are no installed versions,
just use the currently-executing script.
* be more careful about missing files when manipulating eskys that target
other platforms (e.g. upgrading a win32 esky on a linux box).
* ensure that fcntl is always available in the bootstrap env.
* updated tutorial to talk about generating patches.
* have all executables lock the version dir at startup, even if they're
not launched through the bootstrap env.
v0.7.2:
* added methods Esky.needs_cleanup() and VersionFinder.needs_cleanup();
these can be used to test whether a call to cleanup() is necessary and,
if not, to avoid locking the appdir or escalating to root.
* added native sudo implementation for OSX.
* allow Esky.lock() and Esky.unlock() to be called via sudo proxy.
* support for Python 3 on win32 (cx-freeze only).
* fixed compatability with Python 2.5 (via __future__ imports).
* Esky.cleanup_at_exit: try to launch the latest version rather than
the current version, so current version can be cleaned up.
* DefaultVersionFinder: when a downloaded file fails because it is
corrupted, remove it from disk as well as from the version graph.
v0.7.1:
* restored compatability with Python 3.
* fixed automatic detection of gui-only scripts based on filename.
* set variable "__esky_name__" in the bootstrapping code, and use it to
potentially speed up application startup.
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. Use Esky.cleanup_at_exit().
* 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.