Cabal revisions of Win32-services-0.4.0.1
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-name: Win32-services-category: System-version: 0.4.0.1-cabal-version: 1.16-build-type: Simple-author: Michael Steele-maintainer: Michael Steele <mikesteele81@gmail.com>-copyright: Copyright 2011-2018 Michael Steele-homepage: http://github.com/mikesteele81/win32-services-bug-reports: http://github.com/mikesteele81/win32-services/issues-license: BSD3-license-file: LICENSE-tested-with: GHC == 7.6.3, GHC == 7.8.3, GHC == 7.10.1, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.5-stability: provisional-synopsis: Windows service applications-description:- This package provides a partial binding to the Win32 System Services- API. It makes it easy to write Windows service applications using- Haskell. This version supports both 32-bit and 64-bit versions of GHC.- .- The binding is partial. Here are a few ways in which it differs from the- official API:- .- * Only services running within their own process are supported. These are- processes of the "WIN32_OWN_PROCESS" type.- .- * In cases where multiple versions of the same function exist (for- compatibility), this binding only offers one of them.- .- * None of the extended control codes are supported. Handlers you write will- automatically report this to the operating system when such controls are- received.- .- * Only facilities for writing services are supported; not controlling them.- .- Effort has been made to simplify using the API without hiding what is- happening behind the scenes. Users are encouraged to read Microsoft's- documentation under 'Dev Center - Desktop > Docs > Desktop app development- documentation > System Services > Services'. The official example has been- ported to Haskell. This can be found in the 'examples' directory of the- source tree.- .- /Simple Example and Usage/- .- @- module Main where- .- import Control.Concurrent.MVar- import System.Win32.Services- .- main = do-   mStop <- newEmptyMVar-   startServiceCtrlDispatcher \"Test\" 3000 (handler mStop) $ \\_ _ h -> do-   setServiceStatus h running-   takeMVar mStop-   setServiceStatus h stopped- .- handler mStop hStatus Stop = do-   setServiceStatus hStatus stopPending-   putMVar mStop ()-   return True- handler _ _ Interrogate = return True- handler _ _ _ = return False- .- running = ServiceStatus Win32OwnProcess Running [AcceptStop] nO_ERROR 0 0 0- stopped = ServiceStatus Win32OwnProcess Stopped [] nO_ERROR 0 0 0- stopPending = ServiceStatus Win32OwnProcess StopPending [AcceptStop] nO_ERROR 0 0 0- @- .- @- C:\programming\test\>ghc --make -threaded Main.hs- [1 of 1] Compiling Main ( Main.hs, Main.o )- Linking Main.exe ...- \<linker warnings omitted\>- C:\\programming\\test\>copy Main.exe c:\\svc\\Test.exe- 1 file(s) copied.- @- .- Execute the following from an elevated command prompt to register the- service:- .- @- C:\\svc\>sc create Test binPath= c:\\svc\\Test.exe- [SC] CreateService SUCCESS- @- .- The service can now be started and stopped from the services console.- .- Installation Notes:- .- Depending on which version of GHC you are using you may also need to add- a extra-lib-dirs directive. In GHC version 8.4.3 it works out of the box with- the libadvapi32.a file in ...\\mingw\\x86_64-w64-mingw32\\lib.- For older version you need to use a version from a Windows SDK. Your- .cabal file will then need to be modified before installing. A simple `cabal- install Win32-services` may not work. For example, If you are building on- Windows 8 64-bit with the Windows 8 SDK the 'extra-lib-dirs' field will need- to be changed to read as follows:- .- @- Extra-Lib-Dirs: \"C:\\\\Program Files (x86)\\\\Windows Kits\\\\8.0\\\\Lib\\\\win8\\\\um\\\\x86\"- @- .- If building with stack an option is to set it in stack.yaml.- For example with the Windows 10 SDK installed with Build Tools for Visual Studio 2017:- .- @- extra-lib-dirs:- - C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.15063.0\\um\\x64- @- .--extra-source-files:- changelog- examples/*.hs--source-repository head- type: git- location: git://github.com/mikesteele81/win32-services.git--library- build-depends: base >= 4.5 && < 5.0- , Win32 >= 2.2 && < 2.9- , Win32-errors >= 0.2 && < 0.3- default-language: Haskell2010- ghc-options: -Wall- hs-source-dirs: src- Exposed-Modules: System.Win32.Services- Extra-Libraries: Advapi32- -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x86"- -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64"- -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.15063.0\\um\\x64\\AdvAPI32.Lib"- -- Extra-Lib-Dirs: c:\Windows\System32- other-modules:- Import- , System.Win32.Services.Raw- , System.Win32.Services.Accept- , System.Win32.Services.Control- , System.Win32.Services.State- , System.Win32.Services.Status- , System.Win32.Services.TableEntry- , System.Win32.Services.Type---- executable SimpleExample--- hs-source-dirs: examples--- main-is: simple.hs--- ghc-options: -threaded -rtsopts -with-rtsopts=-N--- build-depends: base, Win32-services, Win32-errors--- default-language: Haskell2010------ executable OfficialExample--- hs-source-dirs: examples--- main-is: official.hs--- ghc-options: -threaded -rtsopts -with-rtsopts=-N -eventlog--- build-depends: base, Win32-services, Win32, Win32-errors--- default-language: Haskell2010+name: Win32-services +category: System +version: 0.4.0.1 +x-revision: 1 +cabal-version: 1.16 +build-type: Simple +author: Michael Steele +maintainer: Michael Steele <mikesteele81@gmail.com> +copyright: Copyright 2011-2018 Michael Steele +homepage: http://github.com/mikesteele81/win32-services +bug-reports: http://github.com/mikesteele81/win32-services/issues +license: BSD3 +license-file: LICENSE +tested-with: GHC == 7.6.3, GHC == 7.8.3, GHC == 7.10.1, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.5 +stability: provisional +synopsis: Windows service applications +description: + This package provides a partial binding to the Win32 System Services + API. It makes it easy to write Windows service applications using + Haskell. This version supports both 32-bit and 64-bit versions of GHC. + . + The binding is partial. Here are a few ways in which it differs from the + official API: + . + * Only services running within their own process are supported. These are + processes of the "WIN32_OWN_PROCESS" type. + . + * In cases where multiple versions of the same function exist (for + compatibility), this binding only offers one of them. + . + * None of the extended control codes are supported. Handlers you write will + automatically report this to the operating system when such controls are + received. + . + * Only facilities for writing services are supported; not controlling them. + . + Effort has been made to simplify using the API without hiding what is + happening behind the scenes. Users are encouraged to read Microsoft's + documentation under 'Dev Center - Desktop > Docs > Desktop app development + documentation > System Services > Services'. The official example has been + ported to Haskell. This can be found in the 'examples' directory of the + source tree. + . + /Simple Example and Usage/ + . + @ + module Main where + . + import Control.Concurrent.MVar + import System.Win32.Services + . + main = do +   mStop <- newEmptyMVar +   startServiceCtrlDispatcher \"Test\" 3000 (handler mStop) $ \\_ _ h -> do +   setServiceStatus h running +   takeMVar mStop +   setServiceStatus h stopped + . + handler mStop hStatus Stop = do +   setServiceStatus hStatus stopPending +   putMVar mStop () +   return True + handler _ _ Interrogate = return True + handler _ _ _ = return False + . + running = ServiceStatus Win32OwnProcess Running [AcceptStop] nO_ERROR 0 0 0 + stopped = ServiceStatus Win32OwnProcess Stopped [] nO_ERROR 0 0 0 + stopPending = ServiceStatus Win32OwnProcess StopPending [AcceptStop] nO_ERROR 0 0 0 + @ + . + @ + C:\programming\test\>ghc --make -threaded Main.hs + [1 of 1] Compiling Main ( Main.hs, Main.o ) + Linking Main.exe ... + \<linker warnings omitted\> + C:\\programming\\test\>copy Main.exe c:\\svc\\Test.exe + 1 file(s) copied. + @ + . + Execute the following from an elevated command prompt to register the + service: + . + @ + C:\\svc\>sc create Test binPath= c:\\svc\\Test.exe + [SC] CreateService SUCCESS + @ + . + The service can now be started and stopped from the services console. + . + Installation Notes: + . + Depending on which version of GHC you are using you may also need to add + a extra-lib-dirs directive. In GHC version 8.4.3 it works out of the box with + the libadvapi32.a file in ...\\mingw\\x86_64-w64-mingw32\\lib. + For older version you need to use a version from a Windows SDK. Your + .cabal file will then need to be modified before installing. A simple `cabal + install Win32-services` may not work. For example, If you are building on + Windows 8 64-bit with the Windows 8 SDK the 'extra-lib-dirs' field will need + to be changed to read as follows: + . + @ + Extra-Lib-Dirs: \"C:\\\\Program Files (x86)\\\\Windows Kits\\\\8.0\\\\Lib\\\\win8\\\\um\\\\x86\" + @ + . + If building with stack an option is to set it in stack.yaml. + For example with the Windows 10 SDK installed with Build Tools for Visual Studio 2017: + . + @ + extra-lib-dirs: + - C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.15063.0\\um\\x64 + @ + . + +extra-source-files: + changelog + examples/*.hs + +source-repository head + type: git + location: git://github.com/mikesteele81/win32-services.git + +library + build-depends: base >= 4.5 && < 5.0 + , Win32 >= 2.2 && < 2.15 + , Win32-errors >= 0.2 && < 0.3 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: src + Exposed-Modules: System.Win32.Services + Extra-Libraries: Advapi32 + -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x86" + -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64" + -- Extra-Lib-Dirs: "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.15063.0\\um\\x64\\AdvAPI32.Lib" + -- Extra-Lib-Dirs: c:\Windows\System32 + other-modules: + Import + , System.Win32.Services.Raw + , System.Win32.Services.Accept + , System.Win32.Services.Control + , System.Win32.Services.State + , System.Win32.Services.Status + , System.Win32.Services.TableEntry + , System.Win32.Services.Type + +-- executable SimpleExample +-- hs-source-dirs: examples +-- main-is: simple.hs +-- ghc-options: -threaded -rtsopts -with-rtsopts=-N +-- build-depends: base, Win32-services, Win32-errors +-- default-language: Haskell2010 +-- +-- executable OfficialExample +-- hs-source-dirs: examples +-- main-is: official.hs +-- ghc-options: -threaded -rtsopts -with-rtsopts=-N -eventlog +-- build-depends: base, Win32-services, Win32, Win32-errors +-- default-language: Haskell2010