module Main(main) where import Distribution.Simple import Distribution.Simple.Setup import Distribution.Simple.LocalBuildInfo import Distribution.PackageDescription import System.FilePath import System.Directory import System.Cmd ( rawSystem ) import System.Exit main :: IO () main = defaultMainWithHooks -- simpleUserHooks{copyHook=gacInstall} simpleUserHooks{postInst=gacInstall} assembly :: String assembly = "bridge\\HsDotnetBridge.dll" gacInstall :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO () gacInstall args iflags pd lbi = do dir <- getCurrentDirectory putStrLn "Registering hs-dotnet Assembly.." ex <- rawSystem (dir "gacInstaller.exe") [dir assembly] case ex of ExitSuccess{} -> putStrLn "OK!" ExitFailure{} -> putStrLn ("Unable to register assembly...; try doing it manually via 'gacutil /i'..") putStrLn "Registering Assembly COM Interop classes.." ex <- rawSystem (dir "regasm.exe") [dir assembly] case ex of ExitSuccess{} -> putStrLn "OK!" ExitFailure{} -> putStrLn ("Unable to register assembly...; try doing it manually via 'regasm'..") {- gacInstall :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO () gacInstall pd lbi uHooks cFlags = do createDirectoryIfMissing prefix where rv = releaseVersion pd verbo = fromFlagOrDefault normal (copyVerbosity flags) prefix = getPrefix lbi destdir = case copyDest cFlags of Flag (CopyTo f) -> f dropDrive prefix Flag (CopyPrefix f) -> f Flag NoCopyDest -> prefix NoFlag -> prefix -}