-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | DSL for producing Windows Installer using NSIS. -- -- NSIS (Nullsoft Scriptable Install System, -- http://nsis.sourceforge.net/) is a tool that allows programmers -- to create installers for Windows. This library provides an alternative -- syntax for NSIS scripts, as an embedded Haskell language, removing -- much of the hard work in developing an install script. Simple NSIS -- installers should look mostly the same, complex ones should be -- significantly more maintainable. @package nsis @version 0.3 -- | List of common Windows Messages -- -- 2005 Shengalts Aleksander aka Instructor Shengalts@mail.ru -- -- For usage example see Examples/WinMessages.hs. -- --
-- Prefix Message category -- ------------------------- -- SW ShowWindow Commands -- BM Button control -- CB Combo box control -- EM Edit control -- LB List box control -- WM General window -- ABM Application desktop toolbar -- DBT Device -- DM Default push button control -- HDM Header control -- LVM List view control -- SB Status bar window -- SBM Scroll bar control -- STM Static control -- TCM Tab control -- PBM Progress bar ---- --
-- NOT included messages (WM_USER + X) -- ----------------------------------- -- CBEM Extended combo box control -- CDM Common dialog box -- DL Drag list box -- DTM Date and time picker control -- HKM Hot key control -- IPM IP address control -- MCM Month calendar control -- PGM Pager control -- PSM Property sheet -- RB Rebar control -- TB Toolbar -- TBM Trackbar -- TTM Tooltip control -- TVM Tree-view control -- UDM Up-down control --module Development.NSIS.Plugins.WinMessages hwnd_BROADCAST :: Num a => a sw_HIDE :: Num a => a sw_SHOWNORMAL :: Num a => a sw_NORMAL :: Num a => a sw_SHOWMINIMIZED :: Num a => a sw_SHOWMAXIMIZED :: Num a => a sw_MAXIMIZE :: Num a => a sw_SHOWNOACTIVATE :: Num a => a sw_SHOW :: Num a => a sw_MINIMIZE :: Num a => a sw_SHOWMINNOACTIVE :: Num a => a sw_SHOWNA :: Num a => a sw_RESTORE :: Num a => a sw_SHOWDEFAULT :: Num a => a sw_FORCEMINIMIZE :: Num a => a sw_MAX :: Num a => a bm_CLICK :: Num a => a bm_GETCHECK :: Num a => a bm_GETIMAGE :: Num a => a bm_GETSTATE :: Num a => a bm_SETCHECK :: Num a => a bm_SETIMAGE :: Num a => a bm_SETSTATE :: Num a => a bm_SETSTYLE :: Num a => a bst_UNCHECKED :: Num a => a bst_CHECKED :: Num a => a bst_INDETERMINATE :: Num a => a bst_PUSHED :: Num a => a bst_FOCUS :: Num a => a cb_ADDSTRING :: Num a => a cb_DELETESTRING :: Num a => a cb_DIR :: Num a => a cb_FINDSTRING :: Num a => a cb_FINDSTRINGEXACT :: Num a => a cb_GETCOUNT :: Num a => a cb_GETCURSEL :: Num a => a cb_GETDROPPEDCONTROLRECT :: Num a => a cb_GETDROPPEDSTATE :: Num a => a cb_GETDROPPEDWIDTH :: Num a => a cb_GETEDITSEL :: Num a => a cb_GETEXTENDEDUI :: Num a => a cb_GETHORIZONTALEXTENT :: Num a => a cb_GETITEMDATA :: Num a => a cb_GETITEMHEIGHT :: Num a => a cb_GETLBTEXT :: Num a => a cb_GETLBTEXTLEN :: Num a => a cb_GETLOCALE :: Num a => a cb_GETTOPINDEX :: Num a => a cb_INITSTORAGE :: Num a => a cb_INSERTSTRING :: Num a => a cb_LIMITTEXT :: Num a => a cb_MSGMAX :: Num a => a cb_MULTIPLEADDSTRING :: Num a => a cb_RESETCONTENT :: Num a => a cb_SELECTSTRING :: Num a => a cb_SETCURSEL :: Num a => a cb_SETDROPPEDWIDTH :: Num a => a cb_SETEDITSEL :: Num a => a cb_SETEXTENDEDUI :: Num a => a cb_SETHORIZONTALEXTENT :: Num a => a cb_SETITEMDATA :: Num a => a cb_SETITEMHEIGHT :: Num a => a cb_SETLOCALE :: Num a => a cb_SETTOPINDEX :: Num a => a cb_SHOWDROPDOWN :: Num a => a cb_ERR :: Num a => a em_CANUNDO :: Num a => a em_CHARFROMPOS :: Num a => a em_EMPTYUNDOBUFFER :: Num a => a em_EXLIMITTEXT :: Num a => a em_FMTLINES :: Num a => a em_GETFIRSTVISIBLELINE :: Num a => a em_GETHANDLE :: Num a => a em_GETIMESTATUS :: Num a => a em_GETLIMITTEXT :: Num a => a em_GETLINE :: Num a => a em_GETLINECOUNT :: Num a => a em_GETMARGINS :: Num a => a em_GETMODIFY :: Num a => a em_GETPASSWORDCHAR :: Num a => a em_GETRECT :: Num a => a em_GETSEL :: Num a => a em_GETTHUMB :: Num a => a em_GETWORDBREAKPROC :: Num a => a em_LIMITTEXT :: Num a => a em_LINEFROMCHAR :: Num a => a em_LINEINDEX :: Num a => a em_LINELENGTH :: Num a => a em_LINESCROLL :: Num a => a em_POSFROMCHAR :: Num a => a em_REPLACESEL :: Num a => a em_SCROLL :: Num a => a em_SCROLLCARET :: Num a => a em_SETHANDLE :: Num a => a em_SETIMESTATUS :: Num a => a em_SETLIMITTEXT :: Num a => a em_SETMARGINS :: Num a => a em_SETMODIFY :: Num a => a em_SETPASSWORDCHAR :: Num a => a em_SETREADONLY :: Num a => a em_SETRECT :: Num a => a em_SETRECTNP :: Num a => a em_SETSEL :: Num a => a em_SETTABSTOPS :: Num a => a em_SETWORDBREAKPROC :: Num a => a em_UNDO :: Num a => a lb_ADDFILE :: Num a => a lb_ADDSTRING :: Num a => a lb_DELETESTRING :: Num a => a lb_DIR :: Num a => a lb_FINDSTRING :: Num a => a lb_FINDSTRINGEXACT :: Num a => a lb_GETANCHORINDEX :: Num a => a lb_GETCARETINDEX :: Num a => a lb_GETCOUNT :: Num a => a lb_GETCURSEL :: Num a => a lb_GETHORIZONTALEXTENT :: Num a => a lb_GETITEMDATA :: Num a => a lb_GETITEMHEIGHT :: Num a => a lb_GETITEMRECT :: Num a => a lb_GETLOCALE :: Num a => a lb_GETSEL :: Num a => a lb_GETSELCOUNT :: Num a => a lb_GETSELITEMS :: Num a => a lb_GETTEXT :: Num a => a lb_GETTEXTLEN :: Num a => a lb_GETTOPINDEX :: Num a => a lb_INITSTORAGE :: Num a => a lb_INSERTSTRING :: Num a => a lb_ITEMFROMPOINT :: Num a => a lb_MSGMAX :: Num a => a lb_MULTIPLEADDSTRING :: Num a => a lb_RESETCONTENT :: Num a => a lb_SELECTSTRING :: Num a => a lb_SELITEMRANGE :: Num a => a lb_SELITEMRANGEEX :: Num a => a lb_SETANCHORINDEX :: Num a => a lb_SETCARETINDEX :: Num a => a lb_SETCOLUMNWIDTH :: Num a => a lb_SETCOUNT :: Num a => a lb_SETCURSEL :: Num a => a lb_SETHORIZONTALEXTENT :: Num a => a lb_SETITEMDATA :: Num a => a lb_SETITEMHEIGHT :: Num a => a lb_SETLOCALE :: Num a => a lb_SETSEL :: Num a => a lb_SETTABSTOPS :: Num a => a lb_SETTOPINDEX :: Num a => a lb_ERR :: Num a => a wm_ACTIVATE :: Num a => a wm_ACTIVATEAPP :: Num a => a wm_AFXFIRST :: Num a => a wm_AFXLAST :: Num a => a wm_APP :: Num a => a wm_APPCOMMAND :: Num a => a wm_ASKCBFORMATNAME :: Num a => a wm_CANCELJOURNAL :: Num a => a wm_CANCELMODE :: Num a => a wm_CAPTURECHANGED :: Num a => a wm_CHANGECBCHAIN :: Num a => a wm_CHANGEUISTATE :: Num a => a wm_CHAR :: Num a => a wm_CHARTOITEM :: Num a => a wm_CHILDACTIVATE :: Num a => a wm_CLEAR :: Num a => a wm_CLOSE :: Num a => a wm_COMMAND :: Num a => a wm_COMMNOTIFY :: Num a => a wm_COMPACTING :: Num a => a wm_COMPAREITEM :: Num a => a wm_CONTEXTMENU :: Num a => a wm_CONVERTREQUESTEX :: Num a => a wm_COPY :: Num a => a wm_COPYDATA :: Num a => a wm_CREATE :: Num a => a wm_CTLCOLOR :: Num a => a wm_CTLCOLORBTN :: Num a => a wm_CTLCOLORDLG :: Num a => a wm_CTLCOLOREDIT :: Num a => a wm_CTLCOLORLISTBOX :: Num a => a wm_CTLCOLORMSGBOX :: Num a => a wm_CTLCOLORSCROLLBAR :: Num a => a wm_CTLCOLORSTATIC :: Num a => a wm_CUT :: Num a => a wm_DDE_FIRST :: Num a => a wm_DEADCHAR :: Num a => a wm_DELETEITEM :: Num a => a wm_DESTROY :: Num a => a wm_DESTROYCLIPBOARD :: Num a => a wm_DEVICECHANGE :: Num a => a wm_DEVMODECHANGE :: Num a => a wm_DISPLAYCHANGE :: Num a => a wm_DRAWCLIPBOARD :: Num a => a wm_DRAWITEM :: Num a => a wm_DROPFILES :: Num a => a wm_ENABLE :: Num a => a wm_ENDSESSION :: Num a => a wm_ENTERIDLE :: Num a => a wm_ENTERMENULOOP :: Num a => a wm_ENTERSIZEMOVE :: Num a => a wm_ERASEBKGND :: Num a => a wm_EXITMENULOOP :: Num a => a wm_EXITSIZEMOVE :: Num a => a wm_FONTCHANGE :: Num a => a wm_GETDLGCODE :: Num a => a wm_GETFONT :: Num a => a wm_GETHOTKEY :: Num a => a wm_GETICON :: Num a => a wm_GETMINMAXINFO :: Num a => a wm_GETOBJECT :: Num a => a wm_GETTEXT :: Num a => a wm_GETTEXTLENGTH :: Num a => a wm_HANDHELDFIRST :: Num a => a wm_HANDHELDLAST :: Num a => a wm_HELP :: Num a => a wm_HOTKEY :: Num a => a wm_HSCROLL :: Num a => a wm_HSCROLLCLIPBOARD :: Num a => a wm_ICONERASEBKGND :: Num a => a wm_IME_CHAR :: Num a => a wm_IME_COMPOSITION :: Num a => a wm_IME_COMPOSITIONFULL :: Num a => a wm_IME_CONTROL :: Num a => a wm_IME_ENDCOMPOSITION :: Num a => a wm_IME_KEYDOWN :: Num a => a wm_IME_KEYLAST :: Num a => a wm_IME_KEYUP :: Num a => a wm_IME_NOTIFY :: Num a => a wm_IME_REQUEST :: Num a => a wm_IME_SELECT :: Num a => a wm_IME_SETCONTEXT :: Num a => a wm_IME_STARTCOMPOSITION :: Num a => a wm_INITDIALOG :: Num a => a wm_INITMENU :: Num a => a wm_INITMENUPOPUP :: Num a => a wm_INPUT :: Num a => a wm_INPUTLANGCHANGE :: Num a => a wm_INPUTLANGCHANGEREQUEST :: Num a => a wm_KEYDOWN :: Num a => a wm_KEYFIRST :: Num a => a wm_KEYLAST :: Num a => a wm_KEYUP :: Num a => a wm_KILLFOCUS :: Num a => a wm_LBUTTONDBLCLK :: Num a => a wm_LBUTTONDOWN :: Num a => a wm_LBUTTONUP :: Num a => a wm_MBUTTONDBLCLK :: Num a => a wm_MBUTTONDOWN :: Num a => a wm_MBUTTONUP :: Num a => a wm_MDIACTIVATE :: Num a => a wm_MDICASCADE :: Num a => a wm_MDICREATE :: Num a => a wm_MDIDESTROY :: Num a => a wm_MDIGETACTIVE :: Num a => a wm_MDIICONARRANGE :: Num a => a wm_MDIMAXIMIZE :: Num a => a wm_MDINEXT :: Num a => a wm_MDIREFRESHMENU :: Num a => a wm_MDIRESTORE :: Num a => a wm_MDISETMENU :: Num a => a wm_MDITILE :: Num a => a wm_MEASUREITEM :: Num a => a wm_MENUCHAR :: Num a => a wm_MENUCOMMAND :: Num a => a wm_MENUDRAG :: Num a => a wm_MENUGETOBJECT :: Num a => a wm_MENURBUTTONUP :: Num a => a wm_MENUSELECT :: Num a => a wm_MOUSEACTIVATE :: Num a => a wm_MOUSEFIRST :: Num a => a wm_MOUSEHOVER :: Num a => a wm_MOUSELAST :: Num a => a wm_MOUSELEAVE :: Num a => a wm_MOUSEMOVE :: Num a => a wm_MOUSEWHEEL :: Num a => a wm_MOVE :: Num a => a wm_MOVING :: Num a => a wm_NCACTIVATE :: Num a => a wm_NCCALCSIZE :: Num a => a wm_NCCREATE :: Num a => a wm_NCDESTROY :: Num a => a wm_NCHITTEST :: Num a => a wm_NCLBUTTONDBLCLK :: Num a => a wm_NCLBUTTONDOWN :: Num a => a wm_NCLBUTTONUP :: Num a => a wm_NCMBUTTONDBLCLK :: Num a => a wm_NCMBUTTONDOWN :: Num a => a wm_NCMBUTTONUP :: Num a => a wm_NCMOUSEHOVER :: Num a => a wm_NCMOUSELEAVE :: Num a => a wm_NCMOUSEMOVE :: Num a => a wm_NCPAINT :: Num a => a wm_NCRBUTTONDBLCLK :: Num a => a wm_NCRBUTTONDOWN :: Num a => a wm_NCRBUTTONUP :: Num a => a wm_NCXBUTTONDBLCLK :: Num a => a wm_NCXBUTTONDOWN :: Num a => a wm_NCXBUTTONUP :: Num a => a wm_NEXTDLGCTL :: Num a => a wm_NEXTMENU :: Num a => a wm_NOTIFY :: Num a => a wm_NOTIFYFORMAT :: Num a => a wm_NULL :: Num a => a wm_PAINT :: Num a => a wm_PAINTCLIPBOARD :: Num a => a wm_PAINTICON :: Num a => a wm_PALETTECHANGED :: Num a => a wm_PALETTEISCHANGING :: Num a => a wm_PARENTNOTIFY :: Num a => a wm_PASTE :: Num a => a wm_PENWINFIRST :: Num a => a wm_PENWINLAST :: Num a => a wm_POWER :: Num a => a wm_POWERBROADCAST :: Num a => a wm_PRINT :: Num a => a wm_PRINTCLIENT :: Num a => a wm_QUERYDRAGICON :: Num a => a wm_QUERYENDSESSION :: Num a => a wm_QUERYNEWPALETTE :: Num a => a wm_QUERYOPEN :: Num a => a wm_QUERYUISTATE :: Num a => a wm_QUEUESYNC :: Num a => a wm_QUIT :: Num a => a wm_RBUTTONDBLCLK :: Num a => a wm_RBUTTONDOWN :: Num a => a wm_RBUTTONUP :: Num a => a wm_RASDIALEVENT :: Num a => a wm_RENDERALLFORMATS :: Num a => a wm_RENDERFORMAT :: Num a => a wm_SETCURSOR :: Num a => a wm_SETFOCUS :: Num a => a wm_SETFONT :: Num a => a wm_SETHOTKEY :: Num a => a wm_SETICON :: Num a => a wm_SETREDRAW :: Num a => a wm_SETTEXT :: Num a => a wm_SETTINGCHANGE :: Num a => a wm_SHOWWINDOW :: Num a => a wm_SIZE :: Num a => a wm_SIZECLIPBOARD :: Num a => a wm_SIZING :: Num a => a wm_SPOOLERSTATUS :: Num a => a wm_STYLECHANGED :: Num a => a wm_STYLECHANGING :: Num a => a wm_SYNCPAINT :: Num a => a wm_SYSCHAR :: Num a => a wm_SYSCOLORCHANGE :: Num a => a wm_SYSCOMMAND :: Num a => a wm_SYSDEADCHAR :: Num a => a wm_SYSKEYDOWN :: Num a => a wm_SYSKEYUP :: Num a => a wm_TABLET_FIRST :: Num a => a wm_TABLET_LAST :: Num a => a wm_THEMECHANGED :: Num a => a wm_TCARD :: Num a => a wm_TIMECHANGE :: Num a => a wm_TIMER :: Num a => a wm_UNDO :: Num a => a wm_UNICHAR :: Num a => a wm_UNINITMENUPOPUP :: Num a => a wm_UPDATEUISTATE :: Num a => a wm_USER :: Num a => a wm_USERCHANGED :: Num a => a wm_VKEYTOITEM :: Num a => a wm_VSCROLL :: Num a => a wm_VSCROLLCLIPBOARD :: Num a => a wm_WINDOWPOSCHANGED :: Num a => a wm_WINDOWPOSCHANGING :: Num a => a wm_WININICHANGE :: Num a => a wm_WTSSESSION_CHANGE :: Num a => a wm_XBUTTONDBLCLK :: Num a => a wm_XBUTTONDOWN :: Num a => a wm_XBUTTONUP :: Num a => a abm_ACTIVATE :: Num a => a abm_GETAUTOHIDEBAR :: Num a => a abm_GETSTATE :: Num a => a abm_GETTASKBARPOS :: Num a => a abm_NEW :: Num a => a abm_QUERYPOS :: Num a => a abm_REMOVE :: Num a => a abm_SETAUTOHIDEBAR :: Num a => a abm_SETPOS :: Num a => a abm_WINDOWPOSCHANGED :: Num a => a dbt_APPYBEGIN :: Num a => a dbt_APPYEND :: Num a => a dbt_CONFIGCHANGECANCELED :: Num a => a dbt_CONFIGCHANGED :: Num a => a dbt_CONFIGMGAPI32 :: Num a => a dbt_CONFIGMGPRIVATE :: Num a => a dbt_CUSTOMEVENT :: Num a => a dbt_DEVICEARRIVAL :: Num a => a dbt_DEVICEQUERYREMOVE :: Num a => a dbt_DEVICEQUERYREMOVEFAILED :: Num a => a dbt_DEVICEREMOVECOMPLETE :: Num a => a dbt_DEVICEREMOVEPENDING :: Num a => a dbt_DEVICETYPESPECIFIC :: Num a => a dbt_DEVNODES_CHANGED :: Num a => a dbt_DEVTYP_DEVICEINTERFACE :: Num a => a dbt_DEVTYP_DEVNODE :: Num a => a dbt_DEVTYP_HANDLE :: Num a => a dbt_DEVTYP_NET :: Num a => a dbt_DEVTYP_OEM :: Num a => a dbt_DEVTYP_PORT :: Num a => a dbt_DEVTYP_VOLUME :: Num a => a dbt_LOW_DISK_SPACE :: Num a => a dbt_MONITORCHANGE :: Num a => a dbt_NO_DISK_SPACE :: Num a => a dbt_QUERYCHANGECONFIG :: Num a => a dbt_SHELLLOGGEDON :: Num a => a dbt_USERDEFINED :: Num a => a dbt_VOLLOCKLOCKFAILED :: Num a => a dbt_VOLLOCKLOCKRELEASED :: Num a => a dbt_VOLLOCKLOCKTAKEN :: Num a => a dbt_VOLLOCKQUERYLOCK :: Num a => a dbt_VOLLOCKQUERYUNLOCK :: Num a => a dbt_VOLLOCKUNLOCKFAILED :: Num a => a dbt_VPOWERDAPI :: Num a => a dbt_VXDINITCOMPLETE :: Num a => a dm_BITSPERPEL :: Num a => a dm_COLLATE :: Num a => a dm_COLOR :: Num a => a dm_COPIES :: Num a => a dm_DEFAULTSOURCE :: Num a => a dm_DISPLAYFLAGS :: Num a => a dm_DISPLAYFREQUENCY :: Num a => a dm_DITHERTYPE :: Num a => a dm_DUPLEX :: Num a => a dm_FORMNAME :: Num a => a dm_GRAYSCALE :: Num a => a dm_ICMINTENT :: Num a => a dm_ICMMETHOD :: Num a => a dm_INTERLACED :: Num a => a dm_LOGPIXELS :: Num a => a dm_MEDIATYPE :: Num a => a dm_NUP :: Num a => a dm_ORIENTATION :: Num a => a dm_PANNINGHEIGHT :: Num a => a dm_PANNINGWIDTH :: Num a => a dm_PAPERLENGTH :: Num a => a dm_PAPERSIZE :: Num a => a dm_PAPERWIDTH :: Num a => a dm_PELSHEIGHT :: Num a => a dm_PELSWIDTH :: Num a => a dm_POSITION :: Num a => a dm_PRINTQUALITY :: Num a => a dm_SCALE :: Num a => a dm_SPECVERSION :: Num a => a dm_TTOPTION :: Num a => a dm_YRESOLUTION :: Num a => a hdm_FIRST :: Num a => a lvm_FIRST :: Num a => a sb_CONST_ALPHA :: Num a => a sb_GRAD_RECT :: Num a => a sb_GRAD_TRI :: Num a => a sb_NONE :: Num a => a sb_PIXEL_ALPHA :: Num a => a sb_PREMULT_ALPHA :: Num a => a sb_SIMPLEID :: Num a => a sbm_ENABLE_ARROWS :: Num a => a sbm_GETPOS :: Num a => a sbm_GETRANGE :: Num a => a sbm_GETSCROLLINFO :: Num a => a sbm_SETPOS :: Num a => a sbm_SETRANGE :: Num a => a sbm_SETRANGEREDRAW :: Num a => a sbm_SETSCROLLINFO :: Num a => a stm_GETICON :: Num a => a stm_GETIMAGE :: Num a => a stm_MSGMAX :: Num a => a stm_ONLY_THIS_INTERFACE :: Num a => a stm_ONLY_THIS_NAME :: Num a => a stm_ONLY_THIS_PROTOCOL :: Num a => a stm_ONLY_THIS_TYPE :: Num a => a stm_SETICON :: Num a => a stm_SETIMAGE :: Num a => a tcm_FIRST :: Num a => a pbm_SETRANGE :: Num a => a pbm_SETPOS :: Num a => a pbm_DELTAPOS :: Num a => a pbm_SETSTEP :: Num a => a pbm_STEPIT :: Num a => a pbm_GETPOS :: Num a => a pbm_SETMARQUEE :: Num a => a -- | NSIS (Nullsoft Scriptable Install System, -- http://nsis.sourceforge.net/) is a tool that allows programmers -- to create installers for Windows. This library provides an alternative -- syntax for NSIS scripts, as an embedded Haskell language, removing -- much of the hard work in developing an install script. Simple NSIS -- installers should look mostly the same, complex ones should be -- significantly more maintainable. -- -- As a simple example of using this library: -- --
-- import Development.NSIS -- -- main = writeFile "example1.nsi" $ nsis $ do -- name "Example1" -- The name of the installer -- outFile "example1.exe" -- Where to produce the installer -- installDir "$DESKTOP/Example1" -- The default installation directory -- requestExecutionLevel User -- Request application privileges for Windows Vista -- -- Pages to display -- page Directory -- Pick where to install -- page InstFiles -- Give a progress bar while installing -- -- Groups fo files to install -- section "" [] $ do -- setOutPath "$INSTDIR" -- Where to install files in this section -- file [] "Example1.hs" -- File to put into this section -- ---- -- The file example1.nsi can now be processed with -- makensis to produce the installer example1.exe. For -- more examples, see the Examples source directory. -- -- Much of the documentation from the Installer section is taken from the -- NSIS documentation. module Development.NSIS -- | Create the contents of an NSIS script from an installer specification. nsis :: Action a -> String -- | Like nsis, but don't try and optimise the resulting NSIS -- script. Useful to figure out how the underlying installer works, or if -- you believe the optimisations are introducing bugs (but please do -- report any such bugs!). nsisNoOptimise :: Action a -> String -- | Monad in which installers are defined. A useful command to start with -- is section. data Action a -- | The type of expressions - namely an Action producing a -- Value. There are instances for Num and IsString, -- and turning on {-# LANGUAGE OverloadedStrings #-} is strongly -- recommended. -- -- The fromString function converts any embedded $VAR -- into a variable lookup, which may refer to one of the builtin NSIS -- variables (e.g. $SMPROGRAMS, $TEMP, -- $PROGRAMFILES), or a named variable created with -- constant or mutable. The string $$ is used to -- escape $ values. Bracket the variables to put text characters -- afterwards (e.g. $(SMPROGRAMS)XXX). In contrast to standard -- strings, / is treated as \ and // is -- treated as /. Remember to escape any slashes occuring in -- URLs. -- -- If the string is Exp String then any Int -- variables used will be automatically shown (see strShow). If -- the string is Exp ty then it must be of the form -- "$VAR" where $VAR is a variable of type ty. -- -- The Eq and Ord instances for Exp throw errors for -- all comparisons (use %==, %<= etc), but min -- and max are defined. The Num (arithmetic) and -- Monoid (string concatenation) instances are both fully -- implemented. From Integral and Fractional, only -- /, mod and div are implemented, and all as -- integer arithmetic. No functions from Enum or Real are -- implemented. -- -- When using a single expression multiple times, to ensure it is not -- evaluated repeatedly, use share. type Exp ty = Action (Value ty) -- | A Value, only used by Exp, which can be produced using -- return. The ty argument should be one of -- String, Int or Bool. data Value ty -- | The Exp language is call-by-name, meaning you must use share to -- avoid evaluating an exression multiple times. Using share, if -- the expression has any side effects they will be run immediately, but -- not on subsequent uses. When defining functions operating on -- Exp, if you use the same input expression twice, you should -- share it. For example: -- --
-- strPalindrom x = share x $ \x -> x %== strReverse x ---- -- If the expression was not shared, and x read from a file, -- then the file would be read twice. share :: Exp t -> (Exp t -> Action a) -> Action a -- | Introduce a variable scope. Scopes are automatically introduced by -- operations such as iff, loop, while etc. Inside a -- scope you may define new variables whose names may clash with -- variables outside the scope, but the local versions will be used. -- -- If you have any non-evaluated expressions, before introducing any -- potentially clashing variables in the scope you should share -- them or use constant_ on them. For example: -- --
-- operate x = do -- x <- constant_ x -- scope $ do -- constant "TEST" 0 ---- -- It is important to turn x into a constant_ before -- defining a new constant $TEST, since if x refers to -- $TEST after the new definition, it will pick up the wrong -- variable. scope :: Action a -> Action a -- | Create a constant with a name, ensuring the expression is shared. -- After defining the expression, you can refer to it with $NAME -- in a String. To introduce a new scope, see scope. -- --
-- constant "HELLO" "Hello World" -- alert "$HELLO!" --constant :: Typeable t => String -> Exp t -> Action (Exp t) -- | Create a constant with no name, ensuring the expression is shared. -- Equivalent to share return. constant_ :: Exp t -> Action (Exp t) -- | Create a mutable variable a name, which can be modified with -- @=. After defining the expression, you can refer to it with -- $NAME in a String. To introduce a new scope, see -- scope. -- --
-- h <- mutable "HELLO" "Hello World" -- "$HELLO" @= "$HELLO!" -- h @= "$HELLO!" -- equivalent to the above -- alert "$HELLO" -- with 2 exclamation marks --mutable :: Typeable t => String -> Exp t -> Action (Exp t) -- | Create an unnamed mutable variable, which can be modified with -- @=. -- --
-- h <- mutable "Hello World" -- h @= h & "!" -- alert h --mutable_ :: Exp t -> Action (Exp t) -- | Assign a value to a mutable variable. The variable must have been -- originally created with mutable or mutable_, or there -- will be an error when generating the install file. (@=) :: Exp t -> Exp t -> Action () -- | Versions of mutable and constant restricted to -- Exp Int, used to avoid ambiguous type errors. mutableInt :: String -> Exp Int -> Action (Exp Int) -- | Versions of mutable and constant restricted to -- Exp Int, used to avoid ambiguous type errors. constantInt :: String -> Exp Int -> Action (Exp Int) -- | Versions of mutable_ and constant_ restricted to -- Exp Int, used to avoid ambiguous type errors. mutableInt_ :: Exp Int -> Action (Exp Int) -- | Versions of mutable_ and constant_ restricted to -- Exp Int, used to avoid ambiguous type errors. constantInt_ :: Exp Int -> Action (Exp Int) -- | Versions of mutable and constant restricted to -- Exp String, used to avoid ambiguous type errors. mutableStr :: String -> Exp String -> Action (Exp String) -- | Versions of mutable and constant restricted to -- Exp String, used to avoid ambiguous type errors. constantStr :: String -> Exp String -> Action (Exp String) -- | Versions of mutable_ and constant_ restricted to -- Exp String, used to avoid ambiguous type errors. mutableStr_ :: Exp String -> Action (Exp String) -- | Versions of mutable_ and constant_ restricted to -- Exp String, used to avoid ambiguous type errors. constantStr_ :: Exp String -> Action (Exp String) -- | Test a boolean expression, reunning the first action if it is -- true and the second if it is false. The appropriate -- branch action will be run within a scope. See ? for an -- expression orientated version. -- --
-- iff (x %== 12) (alert "is 12") (alert "is not 12") --iff :: Exp Bool -> Action () -> Action () -> Action () -- | A version of iff where there is no else action. iff_ :: Exp Bool -> Action () -> Action () -- | A while loop, run the second argument while the first argument is -- true. The action is run in a scope. See also loop. -- --
-- x <- mutable_ x -- while (x %< 10) $ do -- x @= x + 1 --while :: Exp Bool -> Action () -> Action () -- | A loop with a break command. Run the action repeatedly until -- the breaking action is called. The action is run in a scope. -- See also while. -- --
-- x <- mutable_ x -- loop $ \break -> do -- iff_ (x %>= 10) break -- x @= x + 1 --loop :: (Action () -> Action ()) -> Action () -- | Run an intitial action, and if that action causes an error, run the -- second action. Unlike other programming languages, any uncaught errors -- are silently ignored. All actions are run in scope. -- --
-- onError (exec "\"$WINDIR/notepad.exe\"") (alert "Failed to run notepad") --onError :: Action () -> Action () -> Action () -- | An expression orientated version of iff, returns the first -- component if the first argument is true or the second if it is -- false. -- --
-- x %== 12 ? (x, x + 5) --(?) :: Exp Bool -> (Exp t, Exp t) -> Exp t -- | Short circuiting boolean operators, equivalent to && -- and || but on Exp. (%&&) :: Exp Bool -> Exp Bool -> Exp Bool -- | Short circuiting boolean operators, equivalent to && -- and || but on Exp. (%||) :: Exp Bool -> Exp Bool -> Exp Bool -- | A code label, used for goto programming, see newLabel. data Label -- | Create a new label, used with goto and label to write -- line jump based programming. Where possible you should use structured -- alternatives, such as iff, while and loop. Each -- created label must be used with one call to label, and any -- number of calls to goto. As an example: -- --
-- abort <- newLabel -- while var $ do -- iff_ cond1 $ goto abort -- iff_ cond2 $ goto abort -- var @= strDrop 1 var -- label abort ---- -- Note that the above example could have been written in a simpler -- manner with loop. newLabel :: Action Label -- | Define the location of a label, see newLabel for -- details. This function will fail if the same Label is passed to -- label more than once. label :: Label -> Action () -- | Jump to a label, see newLabel for details. This function -- will fail if label is not used on the Label. goto :: Label -> Action () -- | Lift a String into an Exp str :: String -> Exp String -- | Lift an Int into an Exp int :: Int -> Exp Int -- | Lift a Bool into an Exp bool :: Bool -> Exp Bool -- | The standard equality operators, lifted to Exp. (%==) :: Exp a -> Exp a -> Exp Bool -- | The standard equality operators, lifted to Exp. (%/=) :: Exp a -> Exp a -> Exp Bool -- | The standard comparison operators, lifted to Exp. (%<=) :: Exp Int -> Exp Int -> Exp Bool -- | The standard comparison operators, lifted to Exp. (%<) :: Exp Int -> Exp Int -> Exp Bool -- | The standard comparison operators, lifted to Exp. (%>=) :: Exp Int -> Exp Int -> Exp Bool -- | The standard comparison operators, lifted to Exp. (%>) :: Exp Int -> Exp Int -> Exp Bool -- | Boolean constants corresponding to True and False true :: Exp Bool -- | Boolean constants corresponding to True and False false :: Exp Bool -- | Boolean negation. not_ :: Exp Bool -> Exp Bool -- | Convert a String to an Int, any errors are silently -- ignored. strRead :: Exp String -> Exp Int -- | Convert an Int to a String by showing it. strShow :: Exp Int -> Exp String -- | Concatenate two strings, for example "$FOO" & "$BAR" is -- equivalent to "$FOO$BAR". (&) :: Exp String -> Exp String -> Exp String -- | Perform string concatenation on a list of expressions. strConcat :: [Exp String] -> Exp String -- | Return the length of a string, strLength "test" %== 4. strLength :: Exp String -> Exp Int -- | Take the first n characters from a string, strTake 2 -- "test" %== "te". strTake :: Exp Int -> Exp String -> Exp String -- | Drop the first n characters from a string, strDrop 2 -- "test" %== "st". strDrop :: Exp Int -> Exp String -> Exp String -- | Replace one string with another string, in a target string. As some -- examples: -- --
-- strReplace "t" "XX" "test" %== "XXesXX" -- strReplace "ell" "" "hello world" %== "ho world" --strReplace :: Exp String -> Exp String -> Exp String -> Exp String -- | Is the first string a prefix of the second. strIsPrefixOf :: Exp String -> Exp String -> Exp Bool -- | Is the first string a prefix of the second. strIsSuffixOf :: Exp String -> Exp String -> Exp Bool -- | Join together a list of strings with \r\n after each line. -- Note that unlike standard unlines, we use the Windows -- convention line separator. strUnlines :: [Exp String] -> Exp String -- | NSIS (the underlying installer, not this library) uses fixed length -- string buffers, defaulting to 1024 bytes. Any strings longer than the -- limit may cause truncation or segfaults. You can get builds supporting -- longer strings from http://nsis.sourceforge.net/Special_Builds. -- -- Given strCheck msg val, if val exceeds the limit it -- will abort with msg, otherwise it will return -- val. strCheck :: Exp String -> Exp String -> Exp String -- | The type of a file handle, created by fileOpen. data FileHandle -- | Open a file, which must be closed explicitly with fileClose. -- Often it is better to use writeFile' or withFile -- instead. -- --
-- h <- fileOpen ModeWrite "C:/log.txt" -- fileWrite h "Hello world!" -- fileClose h --fileOpen :: FileMode -> Exp FilePath -> Action (Exp FileHandle) -- | Write a string to a file openned with fileOpen. fileWrite :: Exp FileHandle -> Exp String -> Action () -- | Close a file file openned with fileOpen. fileClose :: Exp FileHandle -> Action () -- | With a fileOpen perform some action, then automatically call -- fileClose. If the action argument jumps out of the section then -- the fileClose call will be missed. withFile' :: FileMode -> Exp FilePath -> (Exp FileHandle -> Action ()) -> Action () -- | Write a file, like writeFile. writeFile' :: Exp FilePath -> Exp String -> Action () -- | Write a file comprising of a set of lines. writeFileLines :: Exp FilePath -> [Exp String] -> Action () -- | Remove the specified directory (fully qualified path with no -- wildcards). Without Recursive, the directory will only be -- removed if it is completely empty. If Recursive is specified, -- the directory will be removed recursively, so all directories and -- files in the specified directory will be removed. If RebootOK -- is specified, any file or directory which could not have been removed -- during the process will be removed on reboot -- if any file or -- directory will be removed on a reboot, the reboot flag will be set. -- The error flag is set if any file or directory cannot be removed. -- --
-- rmdir [] "$INSTDIR" -- rmdir [] "$INSTDIR/data" -- rmdir [Recursive, RebootOK] "$INSTDIR" -- rmdir [RebootOK] "$INSTDIR/DLLs" ---- -- Note that the current working directory can not be deleted. The -- current working directory is set by setOutPath. For example, -- the following example will not delete the directory. -- --
-- setOutPath "$TEMP/dir" -- rmdir [] "$TEMP/dir" ---- -- The next example will succeed in deleting the directory. -- --
-- setOutPath "$TEMP/dir" -- setOutPath "$TEMP" -- rmdir [] "$TEMP/dir" ---- -- Warning: using rmdir [Recursive] "$INSTDIR" in -- uninstall is not safe. Though it is unlikely, the user might -- select to install to the Program Files folder and so this command will -- wipe out the entire Program Files folder, including other programs -- that has nothing to do with the uninstaller. The user can also put -- other files but the program's files and would expect them to get -- deleted with the program. Solutions are available for easily -- uninstalling only files which were installed by the installer. rmdir :: [Attrib] -> Exp FilePath -> Action () -- | Delete file (which can be a file or wildcard, but should be specified -- with a full path) from the target system. If RebootOK is -- specified and the file cannot be deleted then the file is deleted when -- the system reboots -- if the file will be deleted on a reboot, the -- reboot flag will be set. The error flag is set if files are found and -- cannot be deleted. The error flag is not set from trying to delete a -- file that does not exist. -- --
-- delete [] "$INSTDIR/somefile.dat" --delete :: [Attrib] -> Exp FilePath -> Action () -- | Both file paths are on the installing system. Do not use relative -- paths. copyFiles :: [Attrib] -> Exp FilePath -> Exp FilePath -> Action () -- | Gets the last write time of the file, you should only use the result -- to compare for equality with other results from getFileTime. On -- failure the error flag is set. getFileTime :: Exp FilePath -> Exp String -- | Checks for existence of file(s) (which can be a wildcard, or a -- directory). If you want to check to see if a file is a directory, use -- fileExists "DIRECTORY/*.*". -- --
-- iff_ (fileExists "$WINDIR/notepad.exe") $ -- messageBox [MB_OK] "notepad is installed" --fileExists :: Exp FilePath -> Exp Bool -- | Performs a search for filespec, running the action with each file -- found. If no files are found the error flag is set. Note that the -- filename output is without path. -- --
-- findEach "$INSTDIR/*.txt" $ \x -> -- detailPrint x ---- -- If you jump from inside the loop to after the loop then you may leak a -- search handle. findEach :: Exp FilePath -> (Exp FilePath -> Action ()) -> Action () -- | Creates (recursively if necessary) the specified directory. Errors can -- be caught using onError. You should always specify an absolute -- path. -- --
-- createDirectory "$INSTDIR/some/directory" --createDirectory :: Exp FilePath -> Action () -- | Creates a shortcut file that links to a Traget file, with -- optional Parameters. The icon used for the shortcut is -- IconFile,IconIndex. StartOptions should be one -- of: SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED. -- KeyboardShortcut should be in the form of 'flag|c' where flag -- can be a combination (using |) of: ALT, CONTROL, EXT, or SHIFT. c is -- the character to use (a-z, A-Z, 0-9, F1-F24, etc). Note that no spaces -- are allowed in this string. A good example is "ALT|CONTROL|F8". -- $OUTDIR is used for the working directory. You can change it -- by using setOutPath before creating the Shortcut. -- Description should be the description of the shortcut, or -- comment as it is called under XP. The error flag is set if the -- shortcut cannot be created (i.e. either of the paths (link or target) -- does not exist, or some other error). -- --
-- createDirectory "$SMPROGRAMS/My Company" -- createShortcut "$SMPROGRAMS/My Company/My Program.lnk" -- [Target "$INSTDIR/My Program.exe" -- ,Parameter "some command line parameters" -- ,IconFile "$INSTDIR/My Program.exe", IconIndex 2 -- ,StartOptions "SW_SHOWNORMAL" -- ,KeyboardShortcut "ALT|CONTROL|SHIFT|F5" -- ,Description "a description"] --createShortcut :: Exp FilePath -> [Attrib] -> Action () readRegStr :: HKEY -> Exp String -> Exp String -> Exp String deleteRegKey :: HKEY -> Exp String -> Action () deleteRegValue :: HKEY -> Exp String -> Exp String -> Action () writeRegStr :: HKEY -> Exp String -> Exp String -> Exp String -> Action () writeRegExpandStr :: HKEY -> Exp String -> Exp String -> Exp String -> Action () writeRegDWORD :: HKEY -> Exp String -> Exp String -> Exp Int -> Action () envVar :: Exp String -> Exp String -- | Execute the specified program and continue immediately. Note that the -- file specified must exist on the target system, not the compiling -- system. $OUTDIR is used for the working directory. Errors can -- be caught using onError. Note, if the command could have -- spaces, you should put it in quotes to delimit it from parameters. -- e.g.: exec "\"$INSTDIR/command.exe\" parameters". If you -- don't put it in quotes it will not work on Windows 9x with or without -- parameters. -- --
-- exec "\"$INSTDIR/someprogram.exe\"" -- exec "\"$INSTDIR/someprogram.exe\" some parameters" --exec :: Exp String -> Action () execWait :: Exp String -> Action () execShell :: [ShowWindow] -> Exp String -> Action () -- | Sleep time in milliseconds sleep :: Exp Int -> Action () abort :: Exp String -> Action () type HWND = Exp Int hwndParent :: HWND findWindow :: Exp String -> Exp String -> Maybe HWND -> Action HWND getDlgItem :: HWND -> Exp Int -> Action HWND sendMessage :: [Attrib] -> HWND -> Exp Int -> Exp a -> Exp b -> Action (Exp Int) -- | Call a plugin. If the arguments are of different types use -- exp_. As an example: -- --
-- encrypt x = share x $ \x -> do -- plugin "Base64" "Encrypt" [exp_ x, exp_ $ strLength x] ---- -- The only thing to be careful about is that we use the x -- parameter twice, so should share it to ensure it is only -- evaluated once. plugin :: String -> String -> [Exp a] -> Action () -- | Push a value onto the stack. Only useful with plugin. push :: Exp a -> Action () -- | Pop a value off the stack, will set an error if there is nothing on -- the stack. Only useful with plugin. pop :: Exp String -- | Erase the type of an Exp, only useful with plugin. exp_ :: Exp a -> Exp () -- | Add a plugin directory addPluginDir :: Exp String -> Action () -- | Sets the name of the installer. The name is usually simply the product -- name such as 'MyApp' or 'Company MyApp'. -- --
-- name "MyApp" --name :: Exp String -> Action () -- | Specifies the output file that MakeNSIS should write the -- installer to. This is just the file that MakeNSIS writes, it doesn't -- affect the contents of the installer. Usually should end with -- .exe. -- --
-- outFile "installer.exe" --outFile :: Exp FilePath -> Action () -- | Sets the default installation directory. Note that the part of this -- string following the last \ will be used if the user selects -- browse, and may be appended back on to the string at install -- time (to disable this, end the directory with a \). If this -- doesn't make any sense, play around with the browse button a bit. -- --
-- installDir "$PROGRAMFILES/MyApp" --installDir :: Exp FilePath -> Action () setCompressor :: Compressor -> [Attrib] -> Action () -- | Set the icon used for the installer/uninstaller. -- --
-- installIcon "$NSISDIR/Contrib/Graphics/Icons/modern-install.ico" --installIcon :: Exp FilePath -> Action () -- | Set the icon used for the installer/uninstaller. -- --
-- installIcon "$NSISDIR/Contrib/Graphics/Icons/modern-install.ico" --uninstallIcon :: Exp FilePath -> Action () -- | Set the image used for the header splash. Pass Nothing to use -- the default header image. -- --
-- headerImage $ Just "$NSISDIR/Contrib/Graphics/Header/win.bmp" --headerImage :: Maybe (Exp FilePath) -> Action () -- | This attribute tells the installer to check a string in the registry, -- and use it for the install dir if that string is valid. If this -- attribute is present, it will override the installDir attribute -- if the registry key is valid, otherwise it will fall back to the -- installDir default. When querying the registry, this command -- will automatically remove any quotes. If the string ends in ".exe", it -- will automatically remove the filename component of the string (i.e. -- if the string is "C:program filesfoo/foo.exe", it will know to -- use "C:program filesfoo"). -- --
-- installDirRegKey HKLM "Software/NSIS" "" -- installDirRegKey HKLM "Software/ACME/Thingy" "InstallLocation" --installDirRegKey :: HKEY -> Exp String -> Exp String -> Action () allowRootDirInstall :: Bool -> Action () caption :: Exp String -> Action () showInstDetails :: Visibility -> Action () showUninstDetails :: Visibility -> Action () data SectionId section :: Exp String -> [Attrib] -> Action () -> Action SectionId sectionGroup :: Exp String -> [Attrib] -> Action () -> Action SectionId newSectionId :: Action SectionId sectionSetText :: SectionId -> Exp String -> Action () sectionGetText :: SectionId -> Exp String sectionSet :: SectionId -> SectionFlag -> Exp Bool -> Action () sectionGet :: SectionId -> SectionFlag -> Exp Bool uninstall :: Action () -> Action () page :: Page -> Action () unpage :: Page -> Action () finishOptions :: FinishOptions -- | Create a function, useful for registering actions event :: String -> Action () -> Action () onSelChange :: Action () -> Action () onPageShow :: Page -> Action () -> Action () onPagePre :: Page -> Action () -> Action () onPageLeave :: Page -> Action () -> Action () file :: [Attrib] -> Exp FilePath -> Action () -- | Set all file actions to automatically take NonFatal. alwaysNonFatal :: Action () -> Action () -- | Writes the uninstaller to the filename (and optionally path) -- specified. Only valid from within an install section, and requires -- that you have an uninstall section in your script. You can call -- this one or more times to write out one or more copies of the -- uninstaller. -- --
-- writeUninstaller "$INSTDIR/uninstaller.exe" --writeUninstaller :: Exp FilePath -> Action () -- | Show an alert, equivalent to messageBox [MB_ICONEXCLAMATION]. alert :: Exp String -> Action () -- | Sets the output path ($OUTDIR) and creates it (recursively if -- necessary), if it does not exist. Must be a full pathname, usually is -- just $INSTDIR. -- --
-- setOutPath "$INSTDIR" --setOutPath :: Exp FilePath -> Action () messageBox :: [MessageBoxType] -> Exp String -> Action (Exp String) requestExecutionLevel :: Level -> Action () -- | While the action is executing, do not update the progress bar. Useful -- for functions which do a large amount of computation, or have loops. hideProgress :: Action a -> Action a detailPrint :: Exp String -> Action () setDetailsPrint :: DetailsPrint -> Action () data Compressor LZMA :: Compressor ZLIB :: Compressor BZIP2 :: Compressor data HKEY HKCR :: HKEY HKEY_CLASSES_ROOT :: HKEY HKLM :: HKEY HKEY_LOCAL_MACHINE :: HKEY HKCU :: HKEY HKEY_CURRENT_USER :: HKEY HKU :: HKEY HKEY_USERS :: HKEY HKCC :: HKEY HKEY_CURRENT_CONFIG :: HKEY HKDD :: HKEY HKEY_DYN_DATA :: HKEY HKPD :: HKEY HKEY_PERFORMANCE_DATA :: HKEY SHCTX :: HKEY SHELL_CONTEXT :: HKEY data MessageBoxType -- | Display with an OK button MB_OK :: MessageBoxType -- | Display with an OK and a cancel button MB_OKCANCEL :: MessageBoxType -- | Display with abort, retry, ignore buttons MB_ABORTRETRYIGNORE :: MessageBoxType -- | Display with retry and cancel buttons MB_RETRYCANCEL :: MessageBoxType -- | Display with yes and no buttons MB_YESNO :: MessageBoxType -- | Display with yes, no, cancel buttons MB_YESNOCANCEL :: MessageBoxType -- | Display with exclamation icon MB_ICONEXCLAMATION :: MessageBoxType -- | Display with information icon MB_ICONINFORMATION :: MessageBoxType -- | Display with question mark icon MB_ICONQUESTION :: MessageBoxType -- | Display with stop icon MB_ICONSTOP :: MessageBoxType -- | Display with installer's icon MB_USERICON :: MessageBoxType -- | Make messagebox topmost MB_TOPMOST :: MessageBoxType -- | Set foreground MB_SETFOREGROUND :: MessageBoxType -- | Right align text MB_RIGHT :: MessageBoxType -- | RTL reading order MB_RTLREADING :: MessageBoxType -- | Button 1 is default MB_DEFBUTTON1 :: MessageBoxType -- | Button 2 is default MB_DEFBUTTON2 :: MessageBoxType -- | Button 3 is default MB_DEFBUTTON3 :: MessageBoxType -- | Button 4 is default MB_DEFBUTTON4 :: MessageBoxType data Attrib Solid :: Attrib Final :: Attrib RebootOK :: Attrib Silent :: Attrib FilesOnly :: Attrib NonFatal :: Attrib Recursive :: Attrib Unselected :: Attrib Expanded :: Attrib Description :: (Exp String) -> Attrib Required :: Attrib Target :: (Exp String) -> Attrib Parameters :: (Exp String) -> Attrib IconFile :: (Exp String) -> Attrib IconIndex :: (Exp Int) -> Attrib StartOptions :: String -> Attrib KeyboardShortcut :: String -> Attrib Id :: SectionId -> Attrib Timeout :: Int -> Attrib OName :: (Exp String) -> Attrib data Page License :: FilePath -> Page Components :: Page Directory :: Page InstFiles :: Page Confirm :: Page Finish :: FinishOptions -> Page data Level None :: Level User :: Level Highest :: Level Admin :: Level data Visibility Hide :: Visibility Show :: Visibility NeverShow :: Visibility -- | Mode to use with 'Development. data FileMode -- | Read a file. ModeRead :: FileMode ModeWrite :: FileMode -- | Opened for both read and write, contents preserved. ModeAppend :: FileMode data SectionFlag SF_Selected :: SectionFlag SF_SectionGroup :: SectionFlag SF_SectionGroupEnd :: SectionFlag SF_Bold :: SectionFlag SF_ReadOnly :: SectionFlag SF_Expand :: SectionFlag SF_PartiallySelected :: SectionFlag data ShowWindow SW_SHOWDEFAULT :: ShowWindow SW_SHOWNORMAL :: ShowWindow SW_SHOWMAXIMIZED :: ShowWindow SW_SHOWMINIMIZED :: ShowWindow SW_HIDE :: ShowWindow data FinishOptions FinishOptions :: String -> String -> String -> Bool -> String -> String -> Bool -> String -> String -> FinishOptions finRun :: FinishOptions -> String finRunText :: FinishOptions -> String finRunParamters :: FinishOptions -> String finRunChecked :: FinishOptions -> Bool finReadme :: FinishOptions -> String finReadmeText :: FinishOptions -> String finReadmeChecked :: FinishOptions -> Bool finLink :: FinishOptions -> String finLinkText :: FinishOptions -> String -- | Value to use with setDetailsPrint. data DetailsPrint NoDetailsPrint :: DetailsPrint ListOnly :: DetailsPrint TextOnly :: DetailsPrint Both :: DetailsPrint LastUsed :: DetailsPrint -- | Base64 plugin: http://nsis.sourceforge.net/Base64_plug-in module Development.NSIS.Plugins.Base64 -- | Base64 data encryption. encrypt :: Exp String -> Exp String -- | Base64 decryption. Reverse of encrypt. decrypt :: Exp String -> Exp String -- | Module for updating environment variables. All functions take either -- HKLM to modify the variable for the machine, or HKCU to -- modify for the user. -- -- Warning: If you are modifying PATH, make sure you use a special -- build of NSIS which can cope with longer strings, or you will corrupt -- your users path. module Development.NSIS.Plugins.EnvVarUpdate -- | Read a variable from the registry. If you are not modifying the -- variable you should use envVar instead. getEnvVar :: HKEY -> Exp String -> Exp String -- | Set an environment variable by writing to the registry. setEnvVar :: HKEY -> Exp String -> Exp String -> Action () -- | Delete the environment variable in the registry. deleteEnvVar :: HKEY -> Exp String -> Action () setEnvVarAppend :: HKEY -> Exp String -> Exp String -> Action () setEnvVarPrepend :: HKEY -> Exp String -> Exp String -> Action () setEnvVarRemove :: HKEY -> Exp String -> Exp String -> Action () -- | Windows 7 Taskbar Progress plugin: -- http://nsis.sourceforge.net/TaskbarProgress_plug-in module Development.NSIS.Plugins.Taskbar -- | Enable Windows 7 taskbar plugin, called anywhere. taskbar :: Action () -- | Plugin to change how many sections can be selected at once. module Development.NSIS.Plugins.Sections atMostOneSection :: [SectionId] -> Action () exactlyOneSection :: [SectionId] -> Action ()