joeferraro / MavensMate-SublimeText

Sublime Text plugin for Salesforce developers. Aims to replace the Eclipse-based Force.com IDE.
http://mavensmate.com
GNU General Public License v3.0
290 stars 119 forks source link

windows beta - DLL load failed #217

Closed pbergner closed 10 years ago

pbergner commented 10 years ago

I had the windows version installed from teh /dev/ branch and it was running great.

Just downloaded the new official beta version and now I'm running into errors:

Timestamp: Thu, 19 Sep 2013 11:13:24 Result: [OPERATION FAILED]: Whoops, unable to parse the response. Please report this issue at https://github.com/joeferraro/MavensMate-SublimeText [RESPONSE FROM MAVENSMATE]: Traceback (most recent call last):

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py", line 8, in

import lib.mm_util as util

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\mm_util.py", line 17, in

import xmltodict

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\xmltodict.py", line 4, in

from xml.parsers import expat

File "C:\Python27\lib\xml\parsers\expat.py", line 4, in

from pyexpat import *

ImportError: DLL load failed: %1 is not a valid Win32 application.

[RESPONSE FROM MAVENSMATE]: Traceback (most recent call last):

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py", line 8, in

import lib.mm_util as util

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\mm_util.py", line 17, in

import xmltodict

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\xmltodict.py", line 4, in

from xml.parsers import expat

File "C:\Python27\lib\xml\parsers\expat.py", line 4, in

from pyexpat import *

ImportError: DLL load failed: %1 is not a valid Win32 application.

joeferraro commented 10 years ago

Yes, so the new version doesn't actually require Python (the dev build did). Can you send the contents of your user and default MavensMate settings?

pbergner commented 10 years ago

default settings:

/*

MavensMate settings NOTE: MavensMate user settings will override MavensMate default settings To override default MavensMate settings, modify user-specific settings (MavensMate --> Open --> Settings - User) \ Most changes require a SublimeText restart * /

{ //set to absolute location where you wish your MavensMate project to reside //if the location does not exist, MavensMate will attempt to create it //for example: "/Users/username/Documents/workspaces/mavensmate" (notice the absolute path) "mm_workspace" : "",

//set to desired Salesforce.com API version (tooling api functionality requires 27.0+)
"mm_api_version" : "28.0",

//if true, MavensMate will automatically hide the debug panel upon a successful operation
"mm_hide_panel_on_success" : true,

//the amount of time (in seconds) before MavensMate hides the debug panel upon a successful operation
"mm_hide_panel_time" : 0,

//if true, MavensMate will capture the save file operation and compile to the Salesforce.com server automatically 
"mm_compile_on_save" : true,

//if true, MavensMate will check if the lastmodifiedbyid of apex metadata is different than running user
"mm_compile_check_conflicts": false,

//if true, MavensMate will present local/server diff view when conflict is found for the purposes of merging changes (beta)
"mm_diff_server_conflicts": true,

//if true, MavensMate will scroll to the line of a reported exception when there is a compilation error
"mm_compile_scroll_to_error": true,

//if true, MavensMate will rollback compiles when an error is encountered
"mm_compile_rollback_on_error": true,

//if true, MavensMate will hook into the Sublime Text completions API to offer code assistance
"mm_autocomplete" : true,

//if true, MavensMate will check for updates when Sublime Text starts
"mm_check_for_updates" : true,

//possible values: CRITICAL, ERROR, WARNING, DEBUG, INFO
"mm_log_level" : "INFO",

//location where mm debug log should be placed (must be existing path)
"mm_log_location" : "",

//if true, mavensmate will send usage statistics (NEVER sensitive information like usernames/passwords/etc) for development, reporting, & debugging purposes (see util.py for source of the call)
"mm_send_usage_statistics" : true,

//the location of MavensMate.app
"mm_app_location" : "/Applications/MavensMate.app",

//the location of the mm command line tool (must be inside MavensMate.app)
"mm_location" : "/Applications/MavensMate.app/Contents/Resources/mm/mm",

//specify a path for custom wsdl files here. wsdls must be named: apex.xml, partner.xml, metadata.xml, tooling.xml
"mm_wsdl_path" : "",

//the location of your Sublime Text install
"mm_plugin_client_location" : "/Applications",

//set to true to use the tooling api to compile apex metadata (if you're experiencing any compile issues, set this to false to use the metadata api)
"mm_compile_with_tooling_api" : true,

//set to true if you want a history of your executed apex scripts in project/apex-scripts
"mm_log_anonymous_apex" : true,

//set to true to play notification sounds
"mm_play_sounds" : true,

//local server port
"mm_server_port" : 9876,

//mavensmate will attempt to compile when savings files with the following extensions
"mm_apex_file_extensions": [
    ".page",
    ".component",
    ".cls",
    ".object",
    ".trigger",
    ".layout",
    ".resource",
    ".remoteSite",
    ".labels", 
    ".app",
    ".dashboard",
    ".permissionset",
    ".workflow",
    ".email",
    ".profile",
    ".scf",
    ".queue",
    ".reportType",
    ".report",
    ".weblink",
    ".tab",
    ".letter",
    ".role",
    ".homePageComponent",
    ".homePageLayout",
    ".objectTranslation",
    ".flow",
    ".datacategorygroup",
    ".snapshot",
    ".site",
    ".sharingRules",
    ".settings",
    ".callCenter",
    ".community",
    ".authProvider",
    ".customApplicationComponent",
    ".quickAction",
    ".approvalProcess"
],

"mm_use_github_templates" : true,

"mm_default_apex_templates_map" : {
    "ApexClass"     : 
        {
            "test"          : "UnitTestApexClass.html",
            "exception"     : "ExceptionApexClass.html",
            "batch"         : "BatchApexClass.html",
            "schedulable"   : "SchedulableApexClass.html",
            "email"         : "EmailServiceApexClass.html",
            "url"           : "UrlRewriterApexClass.html",
            "webservice"    : "WebserviceClass.html",
            "empty"         : "ApexClassNoConstructor.html",
            "default"       : "ApexClass.html"
        },
    "ApexTrigger"   : 
        {
            "default"       : "ApexTrigger.html"
        },
    "ApexComponent" :  
        {
            "default"       : "ApexComponent.html"
        },
    "ApexPage"      : 
        {
            "default"       : "ApexPage.html"
        }
},

//if true, MavensMate.app will start when Sublime Text starts
"mm_start_app_on_st_startup" : true,

//the default metadata available in a project (may be set on a per-project basis in the "advanced" tab of the new and edit project UIs)
"mm_default_subscription" : [
    "ApexClass",
    "ApexComponent",
    "ApexPage",
    "ApexTrigger",
    "StaticResource",
    "CustomObject",
    "Profile"
],

//ignore metadata from managed packages (highly recommended)
"mm_ignore_managed_metadata" : true,

//internal only
"mm_debug_mode" : false,

//the number of the most recent apex debug logs to download during the "fetch logs" command
"mm_number_of_logs_limit" : 10,

//choices: "metadata" or "apex". "metadata" is recommended, however if your tests are taking forever to run, try switching to "apex"
//we're working on async testing api support in 0.36
"mm_test_api" : "metadata",

//linux/windows users: ignore this setting
"mm_use_browser_as_ui" : false, 

//for linux users (or adventurous windows users), set to location of your python 2.7 install
"mm_python_location" : "/usr/bin/python",

"mm_subl_location" : "/usr/local/bin/subl",

"mm_windows_subl_location" : "C:/Program Files/Sublime Text 3/sublime_text.exe",

//if true, mavensmate will store all deployment packages in your project's "deploy" directory
"mm_archive_deployments" : true

}

USER SETTINGS:

/*

MavensMate settings NOTE: MavensMate user settings will override MavensMate default settings To override default MavensMate settings, modify user-specific settings (MavensMate --> Open --> Settings - User) \ Most changes require a SublimeText restart * /

{ //set to absolute location where you wish your MavensMate project to reside //if the location does not exist, MavensMate will attempt to create it //for example: "/Users/username/Documents/workspaces/mavensmate" (notice the absolute path) "mm_workspace" : "C:/Users/pbergner/sf_workspace",

//set to desired Salesforce.com API version (tooling api functionality requires 27.0+)
"mm_api_version" : "28.0",

//if true, MavensMate will automatically hide the debug panel upon a successful operation
"mm_hide_panel_on_success" : true,

//the amount of time (in seconds) before MavensMate hides the debug panel upon a successful operation
"mm_hide_panel_time" : 0,

//if true, MavensMate will capture the save file operation and compile to the Salesforce.com server automatically 
"mm_compile_on_save" : true,

//if true, MavensMate will check if the lastmodifiedbyid of apex metadata is different than running user
"mm_compile_check_conflicts": false,

//if true, MavensMate will present local/server diff view when conflict is found for the purposes of merging changes (beta)
"mm_diff_server_conflicts": true,

//if true, MavensMate will scroll to the line of a reported exception when there is a compilation error
"mm_compile_scroll_to_error": true,

//if true, MavensMate will rollback compiles when an error is encountered
"mm_compile_rollback_on_error": true,

//if true, MavensMate will hook into the Sublime Text completions API to offer code assistance
"mm_autocomplete" : true,

//if true, MavensMate will check for updates when Sublime Text starts
"mm_check_for_updates" : true,

//possible values: CRITICAL, ERROR, WARNING, DEBUG, INFO
"mm_log_level" : "INFO",

//location where mm log should be placed (must be existing path)
"mm_log_location" : "",

//if true, mavensmate will send usage statistics (NEVER sensitive information like usernames/passwords/etc) for development, reporting, & debugging purposes (see util.py for source of the call)
"mm_send_usage_statistics" : true,

//the location of MavensMate.app
"mm_app_location" : "/Applications/MavensMate.app",

//the location of the mm command line tool (must be inside MavensMate.app)
"mm_location" : "/Applications/MavensMate.app/Contents/Resources/mm/mm",

//specify a path for custom wsdl files here. wsdls must be named: apex.xml, partner.xml, metadata.xml, tooling.xml
"mm_wsdl_path" : "",

//the location of your Sublime Text install
"mm_plugin_client_location" : "/Applications",

//set to true to use the tooling api to compile apex metadata
"mm_compile_with_tooling_api" : true,

//set to true if you want a history of your executed apex scripts in project/apex-scripts
"mm_log_anonymous_apex" : true,

//set to true to play notification sounds
"mm_play_sounds" : true,

//local server port
"mm_server_port" : 9876,

//mavensmate will attempt to compile when savings files with the following extensions
"mm_apex_file_extensions": [
    ".page",
    ".component",
    ".cls",
    ".object",
    ".trigger",
    ".layout",
    ".resource",
    ".remoteSite",
    ".labels", 
    ".app",
    ".dashboard",
    ".permissionset",
    ".workflow",
    ".email",
    ".profile",
    ".scf",
    ".queue",
    ".reportType",
    ".report",
    ".weblink",
    ".tab",
    ".letter",
    ".role",
    ".homePageComponent",
    ".homePageLayout",
    ".objectTranslation",
    ".flow",
    ".datacategorygroup",
    ".snapshot",
    ".site",
    ".sharingRules",
    ".settings",
    ".callCenter",
    ".community",
    ".authProvider",
    ".customApplicationComponent",
    ".quickAction",
    ".approvalProcess"
],

"mm_use_github_templates" : true,

"mm_default_apex_templates_map" : {
    "ApexClass"     : 
        {
            "test"          : "UnitTestApexClass.html",
            "exception"     : "ExceptionApexClass.html",
            "batch"         : "BatchApexClass.html",
            "schedulable"   : "SchedulableApexClass.html",
            "email"         : "EmailServiceApexClass.html",
            "url"           : "UrlRewriterApexClass.html",
            "webservice"    : "WebserviceClass.html",
            "empty"         : "ApexClassNoConstructor.html",
            "default"       : "ApexClass.html"
        },
    "ApexTrigger"   : 
        {
            "default"       : "ApexTrigger.html"
        },
    "ApexComponent" :  
        {
            "default"       : "ApexComponent.html"
        },
    "ApexPage"      : 
        {
            "default"       : "ApexPage.html"
        }
},

//if true, MavensMate.app will start when Sublime Text starts
"mm_start_app_on_st_startup" : true,

//the default metadata available in a project (may be set on a per-project basis in the "advanced" tab of the new and edit project UIs)
"mm_default_subscription" : [
    "ApexClass",
    "ApexComponent",
    "ApexPage",
    "ApexTrigger",
    "StaticResource",
    "CustomObject",
    "Profile"
],

//ignore metadata from managed packages (highly recommended)
"mm_ignore_managed_metadata" : true,

//internal only
"mm_debug_mode" : false,

//the number of the most recent apex debug logs to download during the "fetch logs" command
"mm_number_of_logs_limit" : 10,

//choices: "metadata" or "apex". "metadata" is recommended, however if your tests are taking forever to run, try switching to "apex"
//we're working on async testing api support in 0.36
"mm_test_api" : "metadata",

//linux/windows users: ignore this setting
"mm_use_browser_as_ui" : false, 

//for linux/windows users, set to location of your python 2.7 install
"mm_python_location" : "C:/Python27/python",

"mm_subl_location" : "C:/Program Files (x86)/Sublime Text 3/sublime_text.exe"

}

joeferraro commented 10 years ago

What version of Windows? And are you 64 or 32 bit?

joeferraro commented 10 years ago

Also, are you on 3.0.9 of the Sublime Text plugin? MavensMate > About MavensMate

pbergner commented 10 years ago

Windows 7 64 bit, but it looks like I did install the 32bit sublime text 3 (its under Program Files(x86), yes it says 3.0.9 under About.

joeferraro commented 10 years ago

Hm, I'm not 100% sure the issue. You could try installing the 64 bit ST3, however, before you do that, I would try a completely clean install and let me know how it goes.

  1. Delete MavensMate ST plugin from the Sublime Text packages folder
  2. Uninstall MavensMate.exe
  3. Reinstall MavensMate.exe
pbergner commented 10 years ago

Ok, that didn't do it so I cleared out everything and installed 64 bit ST3, reinstalled MM, and set my mm_workspace. Now I can't open any of my existing projects, I get an unable to read error (perhaps this is to be expected?) and when I try Project -> New Project it does nothing. In the dev version it would ask me which program would I like to open the temp file in? Should I be getting that same prompt now?

joeferraro commented 10 years ago

anything in the Sublime Text console (control + tilde)?

joeferraro commented 10 years ago

Ok so it looks like Windows will install MavensMate into the x86 Program Files directory. Can you confirm this is the case?

joeferraro commented 10 years ago

@pbergner i pushed what i believe is a patch for this issue. can you update (or clean install) once more?

joeferraro commented 10 years ago

I just tested this on windows 7 64 with ST3 64 and with ST3 x86 and it's working. I suggest running the MavensMate.exe installer and you should be on your way.

joeferraro commented 10 years ago

Yes. If you have any issues let us know.

pbergner commented 10 years ago

Ok uninstalled MM, downloaded new ZIP and reinstalled. Project -> New Project, saw the following in the console log. Thanks for all your help getting this sorted out, I really really really don't want to have to go back to Eclipse!

[MAVENSMATE] executing mm terminal call: "C:\Program Files (x86)\MavensMate\App\python.exe" "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py" -o new_project -c SUBLIME_TEXT_3 --ui {} [MAVENSMATE] response from mm: Traceback (most recent call last):

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py", line 8, in

import lib.mm_util as util

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\mm_util.py", line 17, in

import xmltodict

File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\xmltodict.py", line 4, in

from xml.parsers import expat

File "C:\Python27\lib\xml\parsers\expat.py", line 4, in

from pyexpat import *

ImportError: DLL load failed: %1 is not a valid Win32 application.

joeferraro commented 10 years ago

Ahhh I think I understand what's happening now. You have a module conflict happening from the dev build. What happens if you remove xmltodict from your C:\Python install?

pbergner commented 10 years ago

Did a search for 'xmltodict.py' and only found two instances, xmltodict.py and xmltodict.pyc both under \Mavensmate\mm. Didn't come up with anything under C:\Python27

pbergner commented 10 years ago

I also tried changing my mm_python_location to /python27/python but no luck with that either so I switched it back.

joeferraro commented 10 years ago

ok, so i just pushed a patch that enables windows users to run in "debug mode", which allows them to set their own python path. so, update the plugin from the MavensMate menu, toggle mm_debug_mode to true, make sure your mm_python_location setting is set to your system python and try again. this should force MavensMate to ignore the packaged python and default to the system python (which was working for you in the dev build). i really hope this works for you in the meantime while we figure out the bug.

pbergner commented 10 years ago

Thanks again for the help. Its progress! This time I'm able to get to the new project window in chrome but when I attempt to create one I get this error in the browser:

Traceback (most recent call last): File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py", line 8, in import lib.mm_util as util File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\mm_util.py", line 17, in import xmltodict File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\xmltodict.py", line 4, in from xml.parsers import expat File "C:\Python27\lib\xml\parsers\expat.py", line 4, in from pyexpat import * ImportError: DLL load failed: %1 is not a valid Win32 application.

joeferraro commented 10 years ago

OK, pushed another patch. Turns out i only resolved the issue in 1 of 2 places. Can you reload the plugin from the MavensMate menu in ST?

pbergner commented 10 years ago

When I try 'Update Mavensmate' I get sublime text is currently running. please close it and then click on retry to proceed with the installation. I'll try re-installing again.

pbergner commented 10 years ago

Still getting the error:

Traceback (most recent call last): File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py", line 8, in import lib.mm_util as util File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\mm_util.py", line 17, in import xmltodict File "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\lib\xmltodict.py", line 4, in from xml.parsers import expat File "C:\Python27\lib\xml\parsers\expat.py", line 4, in from pyexpat import * ImportError: DLL load failed: %1 is not a valid Win32 application.

joeferraro commented 10 years ago

And can you send the contents of your sublime text console (command + tilde)?

pbergner commented 10 years ago

The error I'm still getting is in the browser window when creating a New Project here's the log from sublime text though:

[MAVENSMATE] executing mm terminal call: "/Python27/python" "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py" -c SUBLIME_TEXT_3 --ui -o new_project {} [MAVENSMATE] response from mm: {"body": "UI Generated Successfully", "body_type": "text", "success": true, "time": "0.9919998645782471"}

<MavensMate.lib.server.lib.handler.Handler object at 0x00000000040842B0> RUNNING DEBUG BACKGROUND WORKER!!! b'{"project_name":"ff","username":"ff","password":"ff","orgtype":"production","package":{"ApexClass":"","ApexComponent":"","ApexPage":"","ApexTrigger":"_","StaticResource":"*"},"subscription":["ApexClass","ApexComponent","ApexPage","ApexTrigger","CustomObject","Profile","StaticResource"],"action":"new"}' [MAVENSMATE] executing mm terminal call: "/Python27/python" "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py" -c SUBLIME_TEXT_3 --ui -o new_project {} [MAVENSMATE] response from mm: {"body": "UI Generated Successfully", "body_type": "text", "success": true, "time": "0.7669999599456787"}

<MavensMate.lib.server.lib.handler.Handler object at 0x0000000004083E48> RUNNING DEBUG BACKGROUND WORKER!!! b'{"project_name":"fd","username":"fsda","password":"fsd","orgtype":"sandbox","package":{"ApexClass":"","ApexComponent":"","ApexPage":"","ApexTrigger":"_","StaticResource":"*"},"subscription":["ApexClass","ApexComponent","ApexPage","ApexTrigger","CustomObject","Profile","StaticResource"],"action":"new"}'

joeferraro commented 10 years ago

my fault! ...fixing bugs on the fly for beta testers means I miss some stuff. this should FINALLY be resolved if you reload the plugin via MavensMate > Update. thanks for the patience.

pbergner commented 10 years ago

No worries. I more than appreciate the support getting it working. So, I was able to enter my credentials and setup a project but then I immediately got : Unable to read project /Users/pbergner/sf_workspace2/Synaptic Dev/Synaptic Dev.sublime-project

Log in ST just says:

Unable to read project /Users/pbergner/sf_workspace2/Synaptic Dev/Synaptic Dev.sublime-project

Is all of this being caused because I had the dev version installed? Would uninstalling python help revert me back as if I never had it?

joeferraro commented 10 years ago

A guy on twitter had a similar issue "unable to read project". He resolved it by changing his workspace path to something like: "C:\\Users\\username\\..."

If that doesn't work, try uninstalling Python or at least removing python from your path. In the meantime, I'm trying to reproduce your issue.

pbergner commented 10 years ago

That did it! Thanks!

joeferraro commented 10 years ago

woah! glad to help!

joeferraro commented 10 years ago

@pbergner do you have PYTHONHOME or PYTHONPATH environment variables set?

pbergner commented 10 years ago

Yep, PYTHONHOME is set to C:\Python27

joeferraro commented 10 years ago

OK, if you wouldn't mind, at some point: run Update Plugin, set mm_debug_mode back to false and see whether the latest version resolves the DLL/import issue you originally reported. If it's not resolved, simply set mm_debug_mode back to true. Let us know either way. thx

joeferraro commented 10 years ago

@pbergner beta tester on #218 has confirmed the patch has resolved his issue, so I think that's good news for you. if you could retest with mm_debug_mode set to false, I'd appreciate it. cheers.

pbergner commented 10 years ago

Well I upgraded and turned off debug mode. Now I'm getting:

Result: [OPERATION FAILED]:Unable to retrieve password from the keychain store.

If I turn debug mode back to true I get: [OPERATION FAILED]: Could not find your system python install. Please set the location at mm_python_location

I tried setting my mm_python_location to : C:/python27/python, /python27/python, and /usr/bin/python.

pbergner commented 10 years ago

Here's the console log:

"C:\Program Files (x86)\MavensMate\App\python.exe" -E "C:\Users\pbergner\AppData\Roaming\Sublime Text 3\Packages\MavensMate\mm\mm.py" -c SUBLIME_TEXT_3 -o compile {"project_name": "Dev New", "files": ["C:\Users\pbergner\sf_workspace2\Dev New\src\pages\Portal_Landing.page"]} [MAVENSMATE] response from mm: {"body": "Unable to retrieve password from the keychain store.", "stack_trace": "", "body_type": "text", "success": false}

pbergner commented 10 years ago

I re-created my project and that seems to have fixed the Unable to retrieve password from the keychain store issue.