diff --git a/Doc/distutils/builtdist.rst b/Doc/distutils/builtdist.rst
index 672faee..6e7e51c 100644
--- a/Doc/distutils/builtdist.rst
+++ b/Doc/distutils/builtdist.rst
@@ -80,7 +80,7 @@
 +-------------+------------------------------+---------+
 | ``tar``     | tar file (:file:`.tar`)      | \(3)    |
 +-------------+------------------------------+---------+
-| ``zip``     | zip file (:file:`.zip`)      | \(4)    |
+| ``zip``     | zip file (:file:`.zip`)      | (2),(4) |
 +-------------+------------------------------+---------+
 | ``rpm``     | RPM                          | \(5)    |
 +-------------+------------------------------+---------+
@@ -90,9 +90,12 @@
 +-------------+------------------------------+---------+
 | ``rpm``     | RPM                          | \(5)    |
 +-------------+------------------------------+---------+
-| ``wininst`` | self-extracting ZIP file for | (2),(4) |
+| ``wininst`` | self-extracting ZIP file for | \(4)    |
 |             | Windows                      |         |
 +-------------+------------------------------+---------+
+| ``msi``     | Microsoft Installer.         |         |
++-------------+------------------------------+---------+
+
 
 Notes:
 
@@ -102,8 +105,6 @@
 (2)
    default on Windows
 
-   **\*\*** to-do! **\*\***
-
 (3)
    requires external utilities: :program:`tar` and possibly one of :program:`gzip`,
    :program:`bzip2`, or :program:`compress`
@@ -133,6 +134,8 @@
 +--------------------------+-----------------------+
 | :command:`bdist_wininst` | wininst               |
 +--------------------------+-----------------------+
+| :command:`bdist_msi`     | msi                   |
++--------------------------+-----------------------+
 
 The following sections give details on the individual :command:`bdist_\*`
 commands.
diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py
index e3b047c..1a360b5 100644
--- a/Lib/distutils/command/bdist.py
+++ b/Lib/distutils/command/bdist.py
@@ -49,35 +49,28 @@
         ]
 
     # The following commands do not take a format option from bdist
-    no_format_option = ('bdist_rpm',
-                        #'bdist_sdux', 'bdist_pkgtool'
-                        )
+    no_format_option = ('bdist_rpm',)
 
     # This won't do in reality: will need to distinguish RPM-ish Linux,
     # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS.
-    default_format = { 'posix': 'gztar',
-                       'nt': 'zip',
-                       'os2': 'zip', }
+    default_format = {'posix': 'gztar',
+                      'nt': 'zip',
+                      'os2': 'zip'}
 
     # Establish the preferred order (for the --help-formats option).
     format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar',
-                       'wininst', 'zip',
-                       #'pkgtool', 'sdux'
-                       ]
+                       'wininst', 'zip', 'msi']
 
     # And the real information.
-    format_command = { 'rpm':   ('bdist_rpm',  "RPM distribution"),
-                       'zip':   ('bdist_dumb', "ZIP file"),
-                       'gztar': ('bdist_dumb', "gzip'ed tar file"),
-                       'bztar': ('bdist_dumb', "bzip2'ed tar file"),
-                       'ztar':  ('bdist_dumb', "compressed tar file"),
-                       'tar':   ('bdist_dumb', "tar file"),
-                       'wininst': ('bdist_wininst',
-                                   "Windows executable installer"),
-                       'zip':   ('bdist_dumb', "ZIP file"),
-                       #'pkgtool': ('bdist_pkgtool',
-                       #            "Solaris pkgtool distribution"),
-                       #'sdux':  ('bdist_sdux', "HP-UX swinstall depot"),
+    format_command = {'rpm':   ('bdist_rpm',  "RPM distribution"),
+                      'gztar': ('bdist_dumb', "gzip'ed tar file"),
+                      'bztar': ('bdist_dumb', "bzip2'ed tar file"),
+                      'ztar':  ('bdist_dumb', "compressed tar file"),
+                      'tar':   ('bdist_dumb', "tar file"),
+                      'wininst': ('bdist_wininst',
+                                  "Windows executable installer"),
+                      'zip':   ('bdist_dumb', "ZIP file"),
+                      'msi':   ('bdist_msi',  "Microsoft Installer")
                       }
 
 
diff --git a/Lib/distutils/tests/test_bdist.py b/Lib/distutils/tests/test_bdist.py
new file mode 100644
index 0000000..f2849a9
--- /dev/null
+++ b/Lib/distutils/tests/test_bdist.py
@@ -0,0 +1,43 @@
+"""Tests for distutils.command.bdist."""
+import unittest
+import sys
+import os
+import tempfile
+import shutil
+
+from distutils.core import Distribution
+from distutils.command.bdist import bdist
+from distutils.tests import support
+from distutils.spawn import find_executable
+from distutils import spawn
+from distutils.errors import DistutilsExecError
+
+class BuildTestCase(support.TempdirManager,
+                    unittest.TestCase):
+
+    def test_formats(self):
+
+        # let's create a command and make sure
+        # we can fix the format
+        pkg_pth, dist = self.create_dist()
+        cmd = bdist(dist)
+        cmd.formats = ['msi']
+        cmd.ensure_finalized()
+        self.assertEquals(cmd.formats, ['msi'])
+
+        # what format bdist offers ?
+        # XXX an explicit list in bdist is
+        # not the best way to  bdist_* commands
+        # we should add a registry
+        formats = ['rpm', 'zip', 'gztar', 'bztar', 'ztar',
+                   'tar', 'wininst', 'msi']
+        formats.sort()
+        founded = list(cmd.format_command.keys())
+        founded.sort()
+        self.assertEquals(founded, formats)
+
+def test_suite():
+    return unittest.makeSuite(BuildTestCase)
+
+if __name__ == '__main__':
+    test_support.run_unittest(test_suite())
diff --git a/Misc/NEWS b/Misc/NEWS
index 815081b..cbf6d75 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -327,6 +327,9 @@
 Library
 -------
 
+- Issue #5095: Added bdist_msi to the list of bdist supported formats.
+  Initial fix by Steven Bethard.
+
 - Issue #1491431: Fixed distutils.filelist.glob_to_re for edge cases.
   Initial fix by Wayne Davison.
 
