diff --git a/djblets/extensions/manager.py b/djblets/extensions/manager.py
index 3d74b94a90601671d0f391dc2c8040f4e0055e0f..f595e8248bc4f6e133bf3b1118c87ecbd87d9e88 100644
--- a/djblets/extensions/manager.py
+++ b/djblets/extensions/manager.py
@@ -677,9 +677,19 @@ class ExtensionManager(object):
         lockfile = os.path.join(tempfile.gettempdir(), ext_class.id + '.lock')
         extension = ext_class.instance
 
-        old_version = extension.settings.get(self.VERSION_SETTINGS_KEY)
         cur_version = ext_class.info.version
-        if ext_class.registration.installed and old_version == cur_version:
+
+        # We only want to fetch the existing version information if the
+        # extension is already installed. We remove this key when
+        # disabling an extension, so if it were there, it was either
+        # copy/pasted, or something went wrong. Either way, we wouldn't
+        # be able to trust it.
+        if ext_class.registration.installed:
+            old_version = extension.settings.get(self.VERSION_SETTINGS_KEY)
+        else:
+            old_version = None
+
+        if old_version == cur_version:
             # Nothing to do
             return
 
diff --git a/djblets/extensions/tests.py b/djblets/extensions/tests.py
index 1d7a99dba5f17ed4ed203184886a226578fae334..a33a91c660235062fcec651506b70dd7b4000fce 100644
--- a/djblets/extensions/tests.py
+++ b/djblets/extensions/tests.py
@@ -587,6 +587,25 @@ class ExtensionManagerTest(SpyAgency, TestCase):
         self.assertEqual(js_bundle['output_filename'],
                          'ext/%s/js/default.min.js' % extension.id)
 
+    def test_install_extension_media_with_stale_version_key(self):
+        """Testing ExtensionManager installing media for newly installed
+        extension with existing stale version key
+        """
+        extension = self.extension_class(extension_manager=self.manager)
+        version_key = ExtensionManager.VERSION_SETTINGS_KEY
+
+        self.assertFalse(extension.registration.installed)
+
+        # Add a bad version key, perhaps copy/pasted by hand from an admin.
+        # We'll set it to the current version.
+        extension.settings.set(version_key, extension.info.version)
+        extension.settings.save()
+
+        # Enable the extension. It shouldn't blow up.
+        extension = self.manager.enable_extension(self.extension_class.id)
+        self.assertTrue(extension.registration.installed)
+        self.assertIsNotNone(extension.settings.get(version_key))
+
     def test_disable_unregisters_static_bundles(self):
         """Testing ExtensionManager unregisters static bundles when disabling extension"""
         settings.PIPELINE_CSS = {}
