This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author steve.dower
Recipients D Gentry, paul.moore, r.david.murray, steve.dower, tim.golden, zach.ware
Date 2017-08-14.18:55:32
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1502736932.21.0.391353043048.issue31148@psf.upfronthosting.co.za>
In-reply-to
Content
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).
History
Date User Action Args
2017-08-14 18:55:32steve.dowersetrecipients: + steve.dower, paul.moore, tim.golden, r.david.murray, zach.ware, D Gentry
2017-08-14 18:55:32steve.dowersetmessageid: <1502736932.21.0.391353043048.issue31148@psf.upfronthosting.co.za>
2017-08-14 18:55:32steve.dowerlinkissue31148 messages
2017-08-14 18:55:32steve.dowercreate