diff --git a/Distribution/MacOSX.hs b/Distribution/MacOSX.hs
--- a/Distribution/MacOSX.hs
+++ b/Distribution/MacOSX.hs
@@ -23,6 +23,8 @@
   defaultExclusions
 ) where
 
+import Control.Exception
+import Prelude hiding ( catch )
 import Control.Monad (forM_, when)
 import Data.String.Utils (replace)
 import Distribution.PackageDescription (PackageDescription(..),
@@ -79,7 +81,7 @@
   createDirectoryIfMissing False applicationsDir
   forM_ apps $ \app -> do
     let appInfo    = toAppBuildInfo localb app
-        appPathSrc = appPath appInfo
+        appPathSrc = abAppPath appInfo
         appPathTgt = applicationsDir </> takeFileName appPathSrc
         exe ap = ap </> pathInApp app (appName app)
     installDirectoryContents verbosity appPathSrc appPathTgt
@@ -105,11 +107,11 @@
 -- build area. (for internal use only)
 makeAppBundle :: AppBuildInfo -> IO ()
 makeAppBundle appInfo@(AppBuildInfo appPath _ app) =
-  do createAppDir appInfo
+  do _ <- createAppDir appInfo
      maybeCopyPlist appPath app
      maybeCopyIcon appPath app
-       `catch` \err -> putStrLn ("Warning: could not set up icon for " ++
-                                 appName app ++ ": " ++ show err)
+       `catch` \(SomeException err) ->
+          putStrLn $ "Warning: could not set up icon for " ++ appName app ++ ": " ++ show err
      includeResources appPath app
      includeDependencies appPath app
      osxIncantations appPath app
diff --git a/Distribution/MacOSX/AppBuildInfo.hs b/Distribution/MacOSX/AppBuildInfo.hs
new file mode 100644
--- /dev/null
+++ b/Distribution/MacOSX/AppBuildInfo.hs
@@ -0,0 +1,24 @@
+module Distribution.MacOSX.AppBuildInfo where
+
+import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..))
+import System.FilePath
+
+import Distribution.MacOSX.Common
+
+-- | Information needed to build a bundle
+--
+--   This exists to make it possible to have a standalone
+--   macosx-app executable without it necessarily having to
+--   know a lot of Cabal internals
+data AppBuildInfo = AppBuildInfo
+  { abAppPath    :: FilePath
+  , abAppOrigExe :: FilePath
+  , abApp        :: MacApp
+  }
+
+toAppBuildInfo :: LocalBuildInfo -> MacApp -> AppBuildInfo
+toAppBuildInfo localb app = AppBuildInfo
+  { abAppPath    = buildDir localb </> appName app <.> "app"
+  , abAppOrigExe = buildDir localb </> appName app </> appName app
+  , abApp        = app
+  }
diff --git a/cabal-macosx.cabal b/cabal-macosx.cabal
--- a/cabal-macosx.cabal
+++ b/cabal-macosx.cabal
@@ -1,5 +1,5 @@
 Name:                   cabal-macosx
-Version:                0.1.2.2
+Version:                0.2
 Stability:              Alpha
 Synopsis:               Cabal support for creating Mac OSX application bundles.
 Description:
@@ -36,6 +36,7 @@
                ,   filepath, MissingH, parsec, process
   Exposed-modules: Distribution.MacOSX
   Other-modules:   Distribution.MacOSX.Common,
+                   Distribution.MacOSX.AppBuildInfo,
                    Distribution.MacOSX.Dependencies,
                    Distribution.MacOSX.DG
   ghc-options:     -fwarn-tabs -Wall
diff --git a/macosx-app.hs b/macosx-app.hs
--- a/macosx-app.hs
+++ b/macosx-app.hs
@@ -20,9 +20,9 @@
                        , otherBins = []
                        , appDeps   = DoNotChase
                        } 
-      appInfo = AppBuildInfo { app        = macapp
-                             , appPath    = appName macapp <.> "app"
-                             , appOrigExe = exe
+      appInfo = AppBuildInfo { abApp        = macapp
+                             , abAppPath    = appName macapp <.> "app"
+                             , abAppOrigExe = exe
                              }
   if exeExists
      then makeAppBundle appInfo
