releasenotes.rst 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. Release notes
  2. =============
  3. Version 2.8
  4. -----------
  5. * The NSIS installer template now has an ``install_pkgs`` block around the
  6. instructions to install the ``pkgs`` folder, allowing it to be overridden
  7. (:ghpull:`245`).
  8. * New example for streamlit (:ghpull:`237`).
  9. * Added a couple of :doc:`faq` entries (:ghpull:`233`, :ghpull:`235`).
  10. Version 2.7
  11. -----------
  12. * Fix checking compatibility of wheels with ``abi3`` tags, e.g. cryptography
  13. (:ghpull:`227`).
  14. * Ensure that the local packages directory is added to ``sys.path`` as an
  15. absolute path, not a relative one (:ghpull:`226`).
  16. * Pynsist now requires Python 3.6 or above, although it can still build
  17. installers with Python 3.5 or above.
  18. * Update details of available examples (:ghpull:`215`, :ghpull:`223`).
  19. Version 2.6
  20. -----------
  21. * Fix finding binary wheels for Python 3.8 and above (:ghpull:`210`).
  22. * Better error messages when entry points for shortcuts or commands are invalid
  23. (:ghpull:`213`).
  24. Version 2.5.1
  25. -------------
  26. * Fix locating the ``pkgs`` subdirectory in command-line launchers
  27. (:ghpull:`200`).
  28. Version 2.5
  29. -----------
  30. * Make more modern installers, with unicode support and DPI awareness
  31. (less blurry) when using NSIS version 3 (:ghpull:`189`).
  32. * Assemble wrapper executables for commands at build time, rather than on
  33. installation. This is possible thanks to Vinay Sajip adding support for
  34. paths from the launcher directory to the launcher bases (:ghpull:`191`).
  35. * An integration test checks creating an installer, installing and running a
  36. simple program (:ghpull:`190`).
  37. Version 2.4
  38. -----------
  39. * :ref:`command_config` can now include ``console=false`` to make a command on
  40. :envvar:`PATH` which runs without a console window (:ghpull:`179`).
  41. * Fix for using ``pywin32`` in installed code launched from a command
  42. (:ghpull:`175`).
  43. * Work around wheels where some package data files are shipped in a way that
  44. assumes the default pip install layout (:ghpull:`172`).
  45. Version 2.3
  46. -----------
  47. * Command line exes are now based on the launchers made by Vinay Sajip for
  48. `distlib <https://distlib.readthedocs.io/en/latest/>`_, instead of the
  49. launchers from setuptools. They should be more robust with spaces in paths
  50. (:ghpull:`169`).
  51. * Fixed excluding entire folders extracted from wheels (:ghissue:`168`).
  52. * When doing a per-user install of an application with commands, the ``PATH``
  53. environment variable is modified just for that user (:ghpull:`170`).
  54. Version 2.2
  55. -----------
  56. * New ``local_wheels`` option to include packages from wheel ``.whl`` files
  57. by path (:ghpull:`164`).
  58. * ``.dist-info`` directories from wheels are now installed alongside the
  59. importable packages, allowing plugin discovery mechanisms based on *entry
  60. points* to work (:ghpull:`161`).
  61. * Fixed including multiple files with the same name to be installed to different
  62. folders (:ghpull:`162`).
  63. * The ``exclude`` option now works to exclude files extracted from wheels
  64. (:ghpull:`147`).
  65. * ``exclude`` patterns work with either slash ``/`` or backslash ``\`` as
  66. separators, independent of the platform on which you build the installer
  67. (:ghpull:`148`).
  68. * Destination paths for the ``files`` include option now work with slashes
  69. as well as backslashes (:ghpull:`158`).
  70. * ``extra_preamble`` for start menu shortcuts can now use the ``installdir``
  71. variable to get the installation directory. This was already available for
  72. commands, so the change makes it easier to use a single preamble for both
  73. (:ghpull:`149`).
  74. * Test infrastructure switched to pytest and tox (:ghpull:`165`).
  75. * New FAQ entry on :ref:`faq-tkinter` (:ghpull:`146`).
  76. Version 2.1
  77. -----------
  78. * Ensure that if an icon is specified it will be used during install and
  79. uninstall, and as the icon for the installer itself (:ghpull:`143`).
  80. * Add handling of a license file. If a ``license_file`` is given in the
  81. ``Application`` section of the configuration file an additional step will take
  82. place before installation to check the user's agreement to abide by the
  83. displayed license. If the license is not given, the extra step is omitted
  84. (the default behaviour) (:ghpull:`143`).
  85. * Fix for launching Python subprocesses with the installed packages available
  86. for import (:ghpull:`142`).
  87. * Ensure ``.pth`` files in the installed packages directory are read
  88. (:ghpull:`138`).
  89. Version 2.0
  90. -----------
  91. Pynsist 2 only supports 'bundled' Python, and therefore only Python 3.5 and
  92. above. For 'installer' format Python and older Python versions, use Pynsist 1.x
  93. (``pip install pynsist<2``).
  94. * Pynsist installers can now install into a per-user directory, allowing them
  95. to be used without admin access.
  96. * Get wheels for the installer from local directories, by listing the
  97. directories in ``extra_wheel_sources`` in the ``[Include]`` section.
  98. * Better error message when copying fails on a namespace package.
  99. Version 1.12
  100. ------------
  101. * Fix a bug with unpacking wheels on Python 2.7, by switching to ``pathlib2``
  102. for the pathlib backport.
  103. Version 1.11
  104. ------------
  105. * Lists in the config file, such as ``packages`` and ``pypi_wheels`` can now
  106. begin on the line after the key.
  107. * Clearer error if the specified config file is not found.
  108. Version 1.10
  109. ------------
  110. * New optional field ``publisher``, to provide a publisher name in the uninstall
  111. list.
  112. * The uninstall information in the registry now also includes ``DisplayVersion``.
  113. * The directory containing ``python.exe`` is now added to the ``%PATH%``
  114. environment variable when your application runs. This fixes a DLL loading
  115. issue for PyQt5 if you use bundled Python.
  116. * When installing a 64-bit application, the uninstall registry keys are now
  117. added to the 64-bit view of the registry.
  118. * Fixed an error when using wheels which install files into the same package,
  119. such as ``PyQt5`` and ``PyQtChart``.
  120. * Issue a warning when we can't find the cache directory on Windows.
  121. Version 1.9
  122. -----------
  123. * When building an installer with Python 3.6 or above, bundled Python
  124. is now the default. For Python up to 3.5, 'installer' remains
  125. the default format. You can override the default by specifying ``format`` in
  126. the :ref:`cfg_python` of the config file.
  127. * The C Runtime needed for bundled Python is now installed 'app-local', rather
  128. than downloading and installing Windows Update packages at install time. This
  129. is considerably simpler, but the app-local runtime will not be updated by
  130. Windows Update. A new ``include_msvcrt`` config option allows the developer to
  131. exclude the app-local runtime - their applications will then depend on the
  132. runtime being installed systemwide.
  133. Version 1.8
  134. -----------
  135. * New example applications using:
  136. - PyQt5 with QML
  137. - OpenCV and PyQt5
  138. - `Pywebview <https://github.com/r0x0r/pywebview>`__
  139. * The code to pick an appropriate wheel now considers wheels with Python version
  140. specific ABI tags like ``cp35m``, as well as the stable ABI tags like ``abi3``.
  141. * Fixed a bug with fetching a wheel when another version of the same package
  142. is already cached.
  143. * Fixed a bug in extracting files from certain wheels.
  144. * Installers using bundled Python may need a Windows
  145. update package for the Microsoft C runtime. They now download this from the
  146. `RawGit <https://rawgit.com/>`__ CDN, rather than hitting GitHub directly.
  147. * If the Windows update package fails to install, an error message will be
  148. displayed.
  149. Version 1.7
  150. -----------
  151. * Support for downloading packages as wheels from PyPI, and new
  152. `PyQt5 <https://github.com/takluyver/pynsist/tree/master/examples/pyqt5>`__ and
  153. `Pyglet <https://github.com/takluyver/pynsist/tree/master/examples/pyglet>`__
  154. examples which use this feature.
  155. * Applications can include commands to run at the Windows command prompt. See
  156. :ref:`command_config`.
  157. Version 1.6
  158. -----------
  159. * Experimental support for creating installers that bundle Python with the
  160. application.
  161. * Support for Python 3.5 installers.
  162. * The user agent is set when downloading Python builds, so downloads from
  163. Pynsist can be identified.
  164. * New example applications using PyGI, numpy and matplotlib.
  165. * Fixed a bug with different path separators in ``exclude`` patterns.
  166. Version 1.5
  167. -----------
  168. * New ``exclude`` option to cut unnecessary files out of directories and
  169. packages that are copied into the installer.
  170. * The ``installer.nsi`` script is now built using `Jinja <http://jinja.pocoo.org/>`_
  171. templates instead of a custom templating system. If you have specify a custom
  172. ``nsi_template`` file, you will need to update it to use Jinja syntax.
  173. * GUI applications (running under :program:`pythonw`) have stdout and stderr
  174. written to a log file in ``%APPDATA%``. This should catch all ``print``,
  175. warnings, uncaught errors, and avoid the program freezing if it tries to
  176. print.
  177. * Applications run in a console (under :program:`python`) now show the traceback
  178. for an uncaught error in the console as well as writing it to the log file.
  179. * Install :program:`pynsist` command on Windows.
  180. * Fixed an error message caused by unnecessarily rerunning the installer for the
  181. PEP 397 ``py`` launcher, bundled with Python 2 applications.
  182. * :program:`pynsist` now takes a :option:`--no-makensis` option, which stops it
  183. before running :program:`makensis` for debugging.
  184. Version 1.0
  185. -----------
  186. * New ``extra_preamble`` option to specify a snippet of Python code to run
  187. before your main application.
  188. * Packages used in the specified entry points no longer need to be listed
  189. under the Include section; they are automatically included.
  190. * Write the crash log to a file in ``%APPDATA%``, not in the installation
  191. directory - on modern Windows, the application can't normally write to its
  192. install directory.
  193. * Added an example application using pygtk.
  194. * :doc:`installers` documentation added.
  195. * Install Python into ``Program Files\Common Files`` or ``Program Files (x86)\Common Files``,
  196. so that if both 32- and 64-bit Pythons of the same version are installed,
  197. neither replaces the other.
  198. * When using 64-bit Python, the application files now go in ``Program Files`` by
  199. default instead of ``Program Files (x86)``.
  200. * Fixed a bug in finding the NSIS install directory on 64-bit Windows.
  201. * Fixed a bug that prevented using multiprocessing in installed applications.
  202. * Fixed a bug where the ``py.exe`` launcher was not included if you built a
  203. Python 2 installer using Python 3.
  204. * Better error messages for some invalid input.
  205. Version 0.3
  206. -----------
  207. * Extra files can now be installed into locations other than the installation
  208. directory.
  209. * Shortcuts can have non-Python commands, e.g. to create a start menu shortcut
  210. to a help file.
  211. * The Python API has been cleaned up, and there is some :doc:`documentation
  212. <api/index>` for it.
  213. * Better support for modern versions of Windows:
  214. * Uninstall shortcuts correctly on Windows Vista and above.
  215. * Byte compile Python modules at installation, because the ``.pyc`` files
  216. can't be written when the application runs.
  217. * The Python installers are now downloaded over HTTPS instead of using GPG to
  218. validate them.
  219. * Shortcuts now launch the application with the working directory set to the
  220. user's home directory, not the application location.
  221. Version 0.2
  222. -----------
  223. * Python 2 support, thanks to `Johannes Baiter <https://github.com/jbaiter>`_.
  224. * Ability to define multiple shortcuts for one application.
  225. * Validate config files to produce more helpful errors, thanks to
  226. `Tom Wallroth <https://github.com/devsnd>`_.
  227. * Errors starting the application, such as missing libraries, are now written
  228. to a log file in the application directory, so you can work out what
  229. happened.