Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't update Android Studio - Access Denied and java.io.FileNotFoundException

I'm trying to update Android Studio from 0.5.1 to 0.5.2 on two separate Windows machines, one with Windows 7 Pro 64-bit and one with Windows 7 Enterprise 64-bit.

I get the normal update prompt:

enter image description here

...and if I choose "Update and Restart", the patch downloads and the IDE exits, but then I get the following dialog:

enter image description here

I can't change any of the "Solution" column entries. If I click "Proceed", I get the following message as shown below (image and text, so its copy/paste/search-friendly):

enter image description here

Temp. directory: C:\Users\Sean\AppData\Local\Temp\

java.io.FileNotFoundException: C:\Program Files (x86)\Android\android-studio\lib\jsch.agentproxy.usocket-nc.jar (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.intellij.updater.Utils.copyStreamToFile(Utils.java:135)
at com.intellij.updater.CreateAction.doApply(CreateAction.java:52)
at com.intellij.updater.PatchAction.apply(PatchAction.java:140)
at com.intellij.updater.Patch$3.forEach(Patch.java:198)
at com.intellij.updater.Patch.forEach(Patch.java:248)
at com.intellij.updater.Patch.apply(Patch.java:194)
at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86)
at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77)
at com.intellij.updater.Runner.doInstallImpl(Runner.java:307)
at com.intellij.updater.Runner.doInstall(Runner.java:268)
at com.intellij.updater.Runner.access$000(Runner.java:18)
at com.intellij.updater.Runner$2.execute(Runner.java:258)
at com.intellij.updater.SwingUpdaterUI$7.run(SwingUpdaterUI.java:230)
at java.lang.Thread.run(Thread.java:744)

When I click "Exit", Android Studio re-opens, and tells me that the update is still available.

I've updated Android Studio previously using this same method on both machines without a problem.

Since I believe this is some kind of bug with Android Studio specific to newer releases, I've opened Issue 67794 on the AOSP issue tracker.

EDIT

I was able to update from 0.5.2 to 0.5.3 today on both machines without encountering this issue. I was shown the Windows security prompt for the JetBrains installer as in previous successful updates, and update completed successfully without me having to start Android Studio with elevated permissions. So, seems the problem was something specific to 0.5.1 or 0.5.2 patches.

EDIT

I encountered a similar error when trying to update from Android Studio 0.6.0 to 0.6.1:

Temp. directory: C:\Users\barbeau\AppData\Local\Temp\

+---------------- A file operation failed. This might be due to a file being locked by another application. Please try closing any application that uses the files being updated then press 'Retry'. +----------------

com.intellij.updater.RetryException: Cannot delete file C:\Program Files (x86)\Android\android-studio1\lib\openapi.jar at com.intellij.updater.BaseUpdateAction.replaceUpdated(BaseUpdateAction.java:40) at com.intellij.updater.UpdateZipAction.doApply(UpdateZipAction.java:199) at com.intellij.updater.PatchAction.apply(PatchAction.java:140) at com.intellij.updater.Patch$3.forEach(Patch.java:198) at com.intellij.updater.Patch.forEach(Patch.java:248) at com.intellij.updater.Patch.apply(Patch.java:194) at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86) at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77) at com.intellij.updater.Runner.doInstallImpl(Runner.java:307) at com.intellij.updater.Runner.doInstall(Runner.java:268) at com.intellij.updater.Runner.access$000(Runner.java:18) at com.intellij.updater.Runner$2.execute(Runner.java:258) at com.intellij.updater.SwingUpdaterUI$7.run(SwingUpdaterUI.java:230) at java.lang.Thread.run(Thread.java:745)

This seems to happen if you try to run the update while the Gradle build process is still running (e.g., right after you start up Android Studio).

like image 728
Sean Barbeau Avatar asked Mar 25 '14 21:03

Sean Barbeau


4 Answers

A workaround:

  1. Close Android Studio.
  2. Right-click "Android Studio" icon and select "Run as administrator".
  3. Go to "Help->Check for Update...", and go through the normal update process

I realized after a few failed update attempts from 0.5.1 to 0.5.2 that I was no longer getting the Windows security prompt to allow the JetBrains IntellJ installer to proceed, as I had seen in previous successful updates. I'm not sure what changed from previous updates, but apparently the update process was unsuccessfully trying to access files without proper permissions. Elevating Android Studio to admin through the above process fixed the issue.

As noted in the question above, this issue no longer seems to occur with the update from 0.5.2 to 0.5.3.

EDIT

To fix the next error I encountered with the Android 0.6.0 to Android 0.6.1 update, I shut down Studio and then restarted it, and let it sit overnight (more by coincidence than design). When I returned to the machine in the morning and ran the update, it succeeded. So, it seems there is some kind of long running process that blocks the update under certain conditions (likely immediately after startup - possibly the Gradle build process?). @Daniel Wilson's answer below should also work for this scenario.

like image 176
Sean Barbeau Avatar answered Nov 15 '22 21:11

Sean Barbeau


This happened with me updating from 0.6.0 to 0.6.1. I had attempted to open AS in admin mode with every other application closed but the update still failed for me. I also tried deleting the Temp folder.

Eventually I noticed in the task manager when everything was closed I still had a sizeable java.exe still running in the background for some reason.

What I did was open AS in admin mode, run the update and let it fail, claiming a file is locked / access is denied or something similar. Open the task manager and I noticed 2 java.exe processes running. For me the smaller one (about 200k) was the AS updater utility itself. But if I killed the larger one (about 600k), and hit retry, the update went through without issue.

like image 32
Daniel Wilson Avatar answered Nov 15 '22 22:11

Daniel Wilson


Don't re-install as an Administrator!

Whilst running in Admin mode might make the update work, it may also affect the permissions that are set on any files that are added and/or updated, such that future operations in Android studio that use such files will need elevated (Admin) access to work properly.

Doing this will result in many operations not working unless Android Studio has been run in elevated mode.

Instead, deal with the file lock, then try again:

Try killing all instances of java.exe (in Task Manager or Process Explorer), then re-attempt the update, but not running as Administrator.

Every time I've used Process Explorer (on Windows) to check which application has a lock on one of the files that's blocked an Android Studio update, it's always been Java.

What worked for me (on Windows):

  1. Download Process Explorer, and kill all instances of java.exe: in Process Explorer, sort by the Process column and find java.exe instances, press Del on the highlighted row. (On a side note, the file that's blocking the update, for example jsch.agentproxy.usocket-nc.jar, can be checked by pressing Ctl+F, and then entering the file name)
  2. If the update process doesn't automatically resume, kill it by dragging the target icon enter image description here to the update process' window - this locates it in Process Explorer's Process window - and then press Del to delete the process
  3. Re-run Android Studio (from start menu), and re-initiate update process.
like image 8
CJBS Avatar answered Nov 15 '22 23:11

CJBS


You might also try to give your user permission to the folder.

  1. Right click the "android-studio" folder and select "Properties"
  2. Change to "Security" tab
  3. Click the "Edit" Button
  4. Select the group/user from the "Group or user names" list
    1. You can select/add your username to this list -or-
    2. Select the group "Users" (or the group where your user is)
  5. Select the "Full control" checkbox
  6. Click "Apply" and wait

You're done.

like image 4
Telmo Marques Avatar answered Nov 15 '22 21:11

Telmo Marques