diff --git a/Config/Dyre.hs b/Config/Dyre.hs
--- a/Config/Dyre.hs
+++ b/Config/Dyre.hs
@@ -119,7 +119,7 @@
 --   entry point, which will then be called by the 'main' function, as well
 --   as by any custom configurations.
 wrapMain :: Params cfgType -> cfgType -> IO ()
-wrapMain params@Params{projectName = pName} cfg = withDyreOptions $ do
+wrapMain params@Params{projectName = pName} cfg = withDyreOptions params $ do
     -- Allow the 'configCheck' parameter to disable all of Dyre's recompilation
     -- checks, in favor of simply proceeding ahead to the 'realMain' function.
     if not $ configCheck params
diff --git a/Config/Dyre/Options.hs b/Config/Dyre/Options.hs
--- a/Config/Dyre/Options.hs
+++ b/Config/Dyre/Options.hs
@@ -31,18 +31,21 @@
 import System.Environment
 import System.Environment.Executable
 
+import Config.Dyre.Params
+
 -- | Store Dyre's command-line options to the IO-Store "dyre",
 --   and then execute the provided IO action with all Dyre's
 --   options removed from the command-line arguments.
-withDyreOptions :: IO a -> IO a
-withDyreOptions action = withStore "dyre" $ do
+withDyreOptions :: Params c -> IO a -> IO a
+withDyreOptions Params{configCheck = check} action = withStore "dyre" $ do
     -- Pretty important
     args <- getArgs
 
     -- If the flag exists, it overrides the current file. Likewise,
     --   if it doesn't exist, we end up with the path to our current
     --   file. This seems like a sensible way to do it.
-    this <- getExecutablePath
+    -- Don't use 'getExecutablePath' if we're byassing the rest of Dyre.
+    this <- if check then getExecutablePath else getProgName
     putValue "dyre" "masterBinary" this
     storeFlag args "--dyre-master-binary=" "masterBinary"
 
diff --git a/dyre.cabal b/dyre.cabal
--- a/dyre.cabal
+++ b/dyre.cabal
@@ -1,5 +1,5 @@
 name:          dyre
-version:       0.7.1
+version:       0.7.2
 category:      Development, Configuration
 synopsis:      Dynamic reconfiguration in Haskell
 
