I am trying to extract a rar file on osx using a shell execution. The unrar command executes fine, but when it tries to extract the files I get a permission denied. I tried a sh and a sudo before the execution, but nothing seems to work.
Dim s As New Shell
s.Execute(“unrar x /Volumes/Music/test/test.rar”)
[quote=39939:@Tim Jones]Is it possible that you’re trying to extract into an un-writable folder location?
Also, what does theShell.ReadAll return?[/quote]
The folder is writeable. I can create files in it using BinaryStream.
The shell execution result is:
[code]UNRAR 4.20 freeware Copyright (c) 1993-2012 Alexander Roshal
Extracting from /Volumes/Music/test/test.rar
Cannot create text.txt
Permission denied
No files to extract
[/code]
Creating the rar files and extracting them from within the same application works.
But if I try to extract a rar that was made from a different app gives an permission denied.
It looks like the permissions are bound to the app that created the file under OS X?
Yes - it looks like RAR is trying to reset the permissions on the test.txt file to the original permissions and that’s where you’re getting the failure. What is you cd into /private/tmp/ before you extract?
Dim s As New Shell
s.Execute("cd /private/tmp ; unrar x /Volumes/Music/test/test.rar")
Your shell command executes in a directory that has no write permissions, obviously.
Try this:
s.Execute(“pwd”)
And then see what it outputs. I guess it’s either “/”, i.e. the root dir, which is usually protected.
[quote=40068:@Thomas Tempelmann]Your shell command executes in a directory that has no write permissions, obviously.
Try this:
s.Execute(“pwd”)
And then see what it outputs. I guess it’s either “/”, i.e. the root dir, which is usually protected.[/quote]
BINGO!!!
I had my app creating a BAT file instead of just the one big command
The first line was CD
but I guess BASH is picky… CD didn’t change the path (PWD=/), but “cd” did
I stuck PWD and WHOAMI into the batch file… and now everything seems to work
now to get things pointing back where I want them to be