summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
index 0b889127a880..86f31e970084 100644
--- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
+++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
@@ -30,6 +30,7 @@ import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoContainer;
import org.picocontainer.defaults.ConstructorInjectionComponentAdapter;
+import javax.swing.*;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;
@@ -314,6 +315,21 @@ public class ExtensionsAreaImpl implements ExtensionsArea {
@NotNull PluginDescriptor descriptor,
@NotNull ExtensionPoint.Kind kind) {
if (hasExtensionPoint(extensionPointName)) {
+ // Android Studio workaround for
+ // 73999: Corrupt installation: Still contains android-designer bits
+ // https://code.google.com/p/android/issues/detail?id=73999
+ if ("Designer.customizations".equals(extensionPointName)) {
+ String msg = "Your Android Studio installation is corrupt and will not work properly.\n" +
+ "\n" +
+ "This can happen if Android Studio is extracted into an existing older version.\n\n" +
+ "Please reinstall (and make sure the new installation directory is empty first!)";
+ String title = "Corrupt Installation";
+ // Using JOptionPane rather than the better looking com.intellij.openapi.ui.Messages support
+ // here because this is called during early initialization
+ JOptionPane.showMessageDialog(null, msg, title, JOptionPane.ERROR_MESSAGE);
+ System.exit(-1);
+ }
+
if (DEBUG_REGISTRATION) {
final ExtensionPointImpl oldEP = getExtensionPoint(extensionPointName);
myLogger.error("Duplicate registration for EP: " + extensionPointName + ": original plugin " + oldEP.getDescriptor().getPluginId() +