Steve Dower added the comment:

The general requirements of an installer are:
* runs without any preinstalled prerequisites
* does not install anything permanent until the user says so (Visual Studio 
breaks this rule :( )
* installs all required prerequisites
* install on all supported operating systems
* allow users to [de]select optional components
* correctly uninstall previous compatible versions
* correctly do *not* uninstall previous identical versions
* update user environment settings (registry, environment, etc.)
* create Start Menu shortcuts
* create file associations
* create context menus
* install files into customizable location with correct security settings
* correctly roll back when installation fails, including restoring previously 
uninstalled components and attempting to execute installed tools that may not 
be installed correctly
* attempt to execute just-installed components that may not be installed 
correctly (e.g. ensurepip, compileall, trigger environment variable reload)
* detect and abort when installation is going to fail, and explain to the user 
how to solve the problem
* provide live progress feedback and information about what operations are 
occurring
* provide detailed log files to help offer user support post-installation, and 
help users find those logs
* provide registration information so the operating system can help users 
modify or remove the installation
* allow users to modify, repair and upgrade the installation without corrupting 
it (or any others) or forcing them to remove/reinstall
* allow users to choose whether to install just for themselves or for the 
entire machine, and request correct permissions based on this choice
* allow administrators to script an entire installation and have it run 
silently and/or with progress (and cancellation) only
* allow users to minimize download size by deselecting optional components
* allow users to obtain all optional components to allow full installation 
without public internet access
* install without executing arbitrary third-party code that may have been 
maliciously placed in a user's download directory
* automatically include new files added by developers who have not explicitly 
modified the installer

These are all the features of our current installer, and nearly all of them 
work for basically every user. Many of these are literally not achievable with 
just an MSI, or require significantly more complicated commands to be run by 
the end user, rather than providing options in a user interface.

If you're still interested in giving it a go, visit http://wixtoolset.org/ and 
have a look at their tools. These are the gold-standard right now for building 
MSIs (and Burn bundles, which is what we currently have).

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue31148>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to