title: File drag and drop view works when app is run from XCode but not as standalone app
body: <p>I've made a Mac App with a custom view that is a destination for dragging and dropping files.  My view has registered as a destination and I've implemented the drag operation methods.  Everything works fine when I build and run the App from XCode, but when I open the .app from Finder dragging files does not work and I see the following error in Console: </p>
  
  <blockquote>
    <p>Canceling drag because exception 'NSInvalidArgumentException'
    (reason 'launch path not accessible') was raised during a dragging
    session</p>
  </blockquote>
  
  <p>Anyone know what the means or why it's happening?  Here is the relevant code:</p>
  
  <pre><code>#import "DragDestinationView.h"
  
  @implementation DragDestinationView
  
  - (id)initWithFrame:(NSRect)frame
  {
      self = [super initWithFrame:frame];
      if (self) {
          // register for dragging types
        [self registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
        highlight = NO;
      }
      return self;
  }
  
  - (void)drawRect:(NSRect)dirtyRect
  {
      [super drawRect:dirtyRect];
  
    if ( highlight ) {
      //highlight by overlaying a gray border
      [[NSColor whiteColor] setFill];
      NSRectFill(dirtyRect);
      [self setWantsLayer:YES];
      self.layer.masksToBounds = YES;
      self.layer.borderWidth = 10.0f;
      [self.layer setBorderColor:[[NSColor grayColor] CGColor]];
    }
    else {
      [self.layer setBorderColor:[[NSColor clearColor] CGColor]];
    }
  }
  
  #pragma mark - Destination Operations
  
  - (NSDragOperation)draggingEntered:(id &lt;NSDraggingInfo&gt;)sender {
    NSPasteboard *pboard = [sender draggingPasteboard];
  
    if ([[pboard types] containsObject:NSFilenamesPboardType]) {
  
      // check if it's a bin
      NSString* filePath = [[NSURL URLFromPasteboard: [sender draggingPasteboard]] absoluteString];
      if ([[[filePath substringFromIndex:[filePath length] - 4] lowercaseString] isEqualToString:@".bin"]) {
        // it's a bin
        highlight = YES;
        [self setNeedsDisplay:YES];
  
        return NSDragOperationCopy;
      }
    }
    return NSDragOperationNone;
  }
  
  - (void)draggingExited:(id &lt;NSDraggingInfo&gt;)sender
  {
    //remove highlight of the drop zone
    highlight=NO;
  
    [self setNeedsDisplay: YES];
  }
  
  - (BOOL)prepareForDragOperation:(id &lt;NSDraggingInfo&gt;)sender
  {
    //finished with the drag so remove any highlighting
    highlight=NO;
  
    [self setNeedsDisplay: YES];
  
    return YES;
  }
  
  - (BOOL)performDragOperation:(id &lt;NSDraggingInfo&gt;)sender
  {
    if ( [sender draggingSource] != self ) {
      NSString* filePath = [[NSURL URLFromPasteboard: [sender draggingPasteboard]] absoluteString];
      filePath = [filePath substringFromIndex:7];
      filePath = [filePath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
      NSLog(@"file path = %@",filePath);
  
      // send notification
      [[NSNotificationCenter defaultCenter] postNotificationName:@"filePathString" object:filePath];
    }
    return YES;
  }
  
  
  @end
  </code></pre>
  
  <p>Note: The draggingEntered: method returns NSDragOperationCopy because I like the arrow cursor with the green circle and plus that tells the user they can drag a file here.  All I'm actually doing with the dropped file is grabbing its path location.</p>