I was wondering if it was possible to extract the contents of a .jar file into a different directory, then add some files to that directory, and then compress the directory back into a .jar file, with the additions. A way of extracting the jar file i found was to use NSTask
to execute the terminal command of jar xf (location of jar file)
. This worked, but it halted the UI of the program permanently (without crashing it), and unarchived the contents into the directory that the application was stored in, which was a slight mess to clean up. Is there another way of doing this, or am I using NSTask
incorrectly? Here is the code I am using:
//Unarchive the jar
[self runCommandWithBase:@"/usr/bin/jar" arguments:[NSArray arrayWithObjects:@"xf", jarLocation, nil]];
and
- (NSString *)runCommandWithBase:(NSString *)base arguments:(NSArray *)arguments {
//Create the task
NSTask *task = [[NSTask alloc] init];
//Setup the task
[task setLaunchPath:base];
[task setArguments:arguments];
[task setStandardInput:[NSPipe pipe]];
[task setStandardOutput:[NSPipe pipe]];
//Set file handle
NSFileHandle *file = [[NSPipe pipe] fileHandleForReading];
//Run the command
[task launch];
//Return
NSData *returnData = [file readDataToEndOfFile];
return [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];}
Is there maybe a way to include a java application in Xcode that will unarchive the files, add the other files, and then re-compress it? Then execute the java application with NSTask
?
Thanks in Advance,
Ben