diff --git a/2.x/trunk/ProcessHacker/mxml/mxml.h b/2.x/trunk/ProcessHacker/mxml/mxml.h index 6b49a6975..d1250f8fb 100644 --- a/2.x/trunk/ProcessHacker/mxml/mxml.h +++ b/2.x/trunk/ProcessHacker/mxml/mxml.h @@ -1,313 +1,319 @@ -/* - * "$Id: mxml.h 385 2009-03-19 05:38:52Z mike $" - * - * Header file for Mini-XML, a small XML-like file parsing library. - * - * Copyright 2003-2009 by Michael Sweet. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -// This release of Mini-XML has been modified for Process Hacker in the following ways: -// * Memory allocations are done through Process Hacker's PhAllocate*/PhFree* functions. -// * The file descriptor functions now use file handles. - -/* - * Prevent multiple inclusion... - */ - -#ifndef _mxml_h_ -# define _mxml_h_ - -/* - * Include necessary headers... - */ - -# include -# include -# include -# include -# include -# include - - -/* - * Constants... - */ - -# define MXML_TAB 8 /* Tabs every N columns */ - -# define MXML_NO_CALLBACK 0 /* Don't use a type callback */ -# define MXML_INTEGER_CALLBACK mxml_integer_cb - /* Treat all data as integers */ -# define MXML_OPAQUE_CALLBACK mxml_opaque_cb - /* Treat all data as opaque */ -# define MXML_REAL_CALLBACK mxml_real_cb - /* Treat all data as real numbers */ -# define MXML_TEXT_CALLBACK 0 /* Treat all data as text */ -# define MXML_IGNORE_CALLBACK mxml_ignore_cb - /* Ignore all non-element content */ - -# define MXML_NO_PARENT 0 /* No parent for the node */ - -# define MXML_DESCEND 1 /* Descend when finding/walking */ -# define MXML_NO_DESCEND 0 /* Don't descend when finding/walking */ -# define MXML_DESCEND_FIRST -1 /* Descend for first find */ - -# define MXML_WS_BEFORE_OPEN 0 /* Callback for before open tag */ -# define MXML_WS_AFTER_OPEN 1 /* Callback for after open tag */ -# define MXML_WS_BEFORE_CLOSE 2 /* Callback for before close tag */ -# define MXML_WS_AFTER_CLOSE 3 /* Callback for after close tag */ - -# define MXML_ADD_BEFORE 0 /* Add node before specified node */ -# define MXML_ADD_AFTER 1 /* Add node after specified node */ -# define MXML_ADD_TO_PARENT NULL /* Add node relative to parent */ - - -/* - * Data types... - */ - -typedef enum mxml_sax_event_e /**** SAX event type. ****/ -{ - MXML_SAX_CDATA, /* CDATA node */ - MXML_SAX_COMMENT, /* Comment node */ - MXML_SAX_DATA, /* Data node */ - MXML_SAX_DIRECTIVE, /* Processing directive node */ - MXML_SAX_ELEMENT_CLOSE, /* Element closed */ - MXML_SAX_ELEMENT_OPEN /* Element opened */ -} mxml_sax_event_t; - -typedef enum mxml_type_e /**** The XML node type. ****/ -{ - MXML_IGNORE = -1, /* Ignore/throw away node @since Mini-XML 2.3@ */ - MXML_ELEMENT, /* XML element with attributes */ - MXML_INTEGER, /* Integer value */ - MXML_OPAQUE, /* Opaque string */ - MXML_REAL, /* Real value */ - MXML_TEXT, /* Text fragment */ - MXML_CUSTOM /* Custom data @since Mini-XML 2.1@ */ -} mxml_type_t; - -typedef void (*mxml_custom_destroy_cb_t)(void *); - /**** Custom data destructor ****/ - -typedef void (*mxml_error_cb_t)(const char *); - /**** Error callback function ****/ - -typedef struct mxml_attr_s /**** An XML element attribute value. ****/ -{ - char *name; /* Attribute name */ - char *value; /* Attribute value */ -} mxml_attr_t; - -typedef struct mxml_element_s /**** An XML element value. ****/ -{ - char *name; /* Name of element */ - int num_attrs; /* Number of attributes */ - mxml_attr_t *attrs; /* Attributes */ -} mxml_element_t; - -typedef struct mxml_text_s /**** An XML text value. ****/ -{ - int whitespace; /* Leading whitespace? */ - char *string; /* Fragment string */ -} mxml_text_t; - -typedef struct mxml_custom_s /**** An XML custom value. @since Mini-XML 2.1@ ****/ -{ - void *data; /* Pointer to (allocated) custom data */ - mxml_custom_destroy_cb_t destroy; /* Pointer to destructor function */ -} mxml_custom_t; - -typedef union mxml_value_u /**** An XML node value. ****/ -{ - mxml_element_t element; /* Element */ - int integer; /* Integer number */ - char *opaque; /* Opaque string */ - double real; /* Real number */ - mxml_text_t text; /* Text fragment */ - mxml_custom_t custom; /* Custom data @since Mini-XML 2.1@ */ -} mxml_value_t; - -typedef struct mxml_node_s /**** An XML node. ****/ -{ - mxml_type_t type; /* Node type */ - struct mxml_node_s *next; /* Next node under same parent */ - struct mxml_node_s *prev; /* Previous node under same parent */ - struct mxml_node_s *parent; /* Parent node */ - struct mxml_node_s *child; /* First child node */ - struct mxml_node_s *last_child; /* Last child node */ - mxml_value_t value; /* Node value */ - int ref_count; /* Use count */ - void *user_data; /* User data */ -} mxml_node_t; - -typedef struct mxml_index_s /**** An XML node index. ****/ -{ - char *attr; /* Attribute used for indexing or NULL */ - int num_nodes; /* Number of nodes in index */ - int alloc_nodes; /* Allocated nodes in index */ - int cur_node; /* Current node */ - mxml_node_t **nodes; /* Node array */ -} mxml_index_t; - -typedef int (*mxml_custom_load_cb_t)(mxml_node_t *, const char *); - /**** Custom data load callback function ****/ - -typedef char *(*mxml_custom_save_cb_t)(mxml_node_t *); - /**** Custom data save callback function ****/ - -typedef int (*mxml_entity_cb_t)(const char *); - /**** Entity callback function */ - -typedef mxml_type_t (*mxml_load_cb_t)(mxml_node_t *); - /**** Load callback function ****/ - -typedef const char *(*mxml_save_cb_t)(mxml_node_t *, int); - /**** Save callback function ****/ - -typedef void (*mxml_sax_cb_t)(mxml_node_t *, mxml_sax_event_t, void *); - /**** SAX callback function ****/ - - -/* - * C++ support... - */ - -# ifdef __cplusplus -extern "C" { -# endif /* __cplusplus */ - -/* - * Prototypes... - */ - -extern void mxmlAdd(mxml_node_t *parent, int where, - mxml_node_t *child, mxml_node_t *node); -extern void mxmlDelete(mxml_node_t *node); -extern void mxmlElementDeleteAttr(mxml_node_t *node, - const char *name); -extern const char *mxmlElementGetAttr(mxml_node_t *node, const char *name); -extern void mxmlElementSetAttr(mxml_node_t *node, const char *name, - const char *value); -extern void mxmlElementSetAttrf(mxml_node_t *node, const char *name, - const char *format, ...) -# ifdef __GNUC__ -__attribute__ ((__format__ (__printf__, 3, 4))) -# endif /* __GNUC__ */ -; -extern int mxmlEntityAddCallback(mxml_entity_cb_t cb); -extern const char *mxmlEntityGetName(int val); -extern int mxmlEntityGetValue(const char *name); -extern void mxmlEntityRemoveCallback(mxml_entity_cb_t cb); -extern mxml_node_t *mxmlFindElement(mxml_node_t *node, mxml_node_t *top, - const char *name, const char *attr, - const char *value, int descend); -extern void mxmlIndexDelete(mxml_index_t *ind); -extern mxml_node_t *mxmlIndexEnum(mxml_index_t *ind); -extern mxml_node_t *mxmlIndexFind(mxml_index_t *ind, - const char *element, - const char *value); -extern mxml_index_t *mxmlIndexNew(mxml_node_t *node, const char *element, - const char *attr); -extern mxml_node_t *mxmlIndexReset(mxml_index_t *ind); -extern mxml_node_t *mxmlLoadFd(mxml_node_t *top, HANDLE fd, - mxml_type_t (*cb)(mxml_node_t *)); -extern mxml_node_t *mxmlLoadFile(mxml_node_t *top, FILE *fp, - mxml_type_t (*cb)(mxml_node_t *)); -extern mxml_node_t *mxmlLoadString(mxml_node_t *top, const char *s, - mxml_type_t (*cb)(mxml_node_t *)); -extern mxml_node_t *mxmlNewCDATA(mxml_node_t *parent, const char *string); -extern mxml_node_t *mxmlNewCustom(mxml_node_t *parent, void *data, - mxml_custom_destroy_cb_t destroy); -extern mxml_node_t *mxmlNewElement(mxml_node_t *parent, const char *name); -extern mxml_node_t *mxmlNewInteger(mxml_node_t *parent, int integer); -extern mxml_node_t *mxmlNewOpaque(mxml_node_t *parent, const char *opaque); -extern mxml_node_t *mxmlNewReal(mxml_node_t *parent, double real); -extern mxml_node_t *mxmlNewText(mxml_node_t *parent, int whitespace, - const char *string); -extern mxml_node_t *mxmlNewTextf(mxml_node_t *parent, int whitespace, - const char *format, ...) -# ifdef __GNUC__ -__attribute__ ((__format__ (__printf__, 3, 4))) -# endif /* __GNUC__ */ -; -extern mxml_node_t *mxmlNewXML(const char *version); -extern int mxmlRelease(mxml_node_t *node); -extern void mxmlRemove(mxml_node_t *node); -extern int mxmlRetain(mxml_node_t *node); -extern char *mxmlSaveAllocString(mxml_node_t *node, - mxml_save_cb_t cb); -extern int mxmlSaveFd(mxml_node_t *node, HANDLE fd, - mxml_save_cb_t cb); -extern int mxmlSaveFile(mxml_node_t *node, FILE *fp, - mxml_save_cb_t cb); -extern int mxmlSaveString(mxml_node_t *node, char *buffer, - int bufsize, mxml_save_cb_t cb); -extern mxml_node_t *mxmlSAXLoadFd(mxml_node_t *top, HANDLE fd, - mxml_type_t (*cb)(mxml_node_t *), - mxml_sax_cb_t sax, void *sax_data); -extern mxml_node_t *mxmlSAXLoadFile(mxml_node_t *top, FILE *fp, - mxml_type_t (*cb)(mxml_node_t *), - mxml_sax_cb_t sax, void *sax_data); -extern mxml_node_t *mxmlSAXLoadString(mxml_node_t *top, const char *s, - mxml_type_t (*cb)(mxml_node_t *), - mxml_sax_cb_t sax, void *sax_data); -extern int mxmlSetCDATA(mxml_node_t *node, const char *data); -extern int mxmlSetCustom(mxml_node_t *node, void *data, - mxml_custom_destroy_cb_t destroy); -extern void mxmlSetCustomHandlers(mxml_custom_load_cb_t load, - mxml_custom_save_cb_t save); -extern int mxmlSetElement(mxml_node_t *node, const char *name); -extern void mxmlSetErrorCallback(mxml_error_cb_t cb); -extern int mxmlSetInteger(mxml_node_t *node, int integer); -extern int mxmlSetOpaque(mxml_node_t *node, const char *opaque); -extern int mxmlSetReal(mxml_node_t *node, double real); -extern int mxmlSetText(mxml_node_t *node, int whitespace, - const char *string); -extern int mxmlSetTextf(mxml_node_t *node, int whitespace, - const char *format, ...) -# ifdef __GNUC__ -__attribute__ ((__format__ (__printf__, 3, 4))) -# endif /* __GNUC__ */ -; -extern void mxmlSetWrapMargin(int column); -extern mxml_node_t *mxmlWalkNext(mxml_node_t *node, mxml_node_t *top, - int descend); -extern mxml_node_t *mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top, - int descend); - - -/* - * Semi-private functions... - */ - -extern void mxml_error(const char *format, ...); -extern mxml_type_t mxml_ignore_cb(mxml_node_t *node); -extern mxml_type_t mxml_integer_cb(mxml_node_t *node); -extern mxml_type_t mxml_opaque_cb(mxml_node_t *node); -extern mxml_type_t mxml_real_cb(mxml_node_t *node); - - -/* - * C++ support... - */ - -# ifdef __cplusplus -} -# endif /* __cplusplus */ -#endif /* !_mxml_h_ */ - - -/* - * End of "$Id: mxml.h 385 2009-03-19 05:38:52Z mike $". - */ +/* + * "$Id: mxml.h 385 2009-03-19 05:38:52Z mike $" + * + * Header file for Mini-XML, a small XML-like file parsing library. + * + * Copyright 2003-2009 by Michael Sweet. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +// This release of Mini-XML has been modified for Process Hacker in the following ways: +// * Memory allocations are done through Process Hacker's PhAllocate*/PhFree* functions. +// * The file descriptor functions now use file handles. + +/* + * Prevent multiple inclusion... + */ + +#ifndef _mxml_h_ +# define _mxml_h_ + +/* + * Include necessary headers... + */ + +# include +# include +# include +# include +# include +# include + +#ifdef PHAPP_EXPORT +#define PHMXMLAPI __declspec(dllexport) +#else +#define PHMXMLAPI +#endif + + +/* + * Constants... + */ + +# define MXML_TAB 8 /* Tabs every N columns */ + +# define MXML_NO_CALLBACK 0 /* Don't use a type callback */ +# define MXML_INTEGER_CALLBACK mxml_integer_cb + /* Treat all data as integers */ +# define MXML_OPAQUE_CALLBACK mxml_opaque_cb + /* Treat all data as opaque */ +# define MXML_REAL_CALLBACK mxml_real_cb + /* Treat all data as real numbers */ +# define MXML_TEXT_CALLBACK 0 /* Treat all data as text */ +# define MXML_IGNORE_CALLBACK mxml_ignore_cb + /* Ignore all non-element content */ + +# define MXML_NO_PARENT 0 /* No parent for the node */ + +# define MXML_DESCEND 1 /* Descend when finding/walking */ +# define MXML_NO_DESCEND 0 /* Don't descend when finding/walking */ +# define MXML_DESCEND_FIRST -1 /* Descend for first find */ + +# define MXML_WS_BEFORE_OPEN 0 /* Callback for before open tag */ +# define MXML_WS_AFTER_OPEN 1 /* Callback for after open tag */ +# define MXML_WS_BEFORE_CLOSE 2 /* Callback for before close tag */ +# define MXML_WS_AFTER_CLOSE 3 /* Callback for after close tag */ + +# define MXML_ADD_BEFORE 0 /* Add node before specified node */ +# define MXML_ADD_AFTER 1 /* Add node after specified node */ +# define MXML_ADD_TO_PARENT NULL /* Add node relative to parent */ + + +/* + * Data types... + */ + +typedef enum mxml_sax_event_e /**** SAX event type. ****/ +{ + MXML_SAX_CDATA, /* CDATA node */ + MXML_SAX_COMMENT, /* Comment node */ + MXML_SAX_DATA, /* Data node */ + MXML_SAX_DIRECTIVE, /* Processing directive node */ + MXML_SAX_ELEMENT_CLOSE, /* Element closed */ + MXML_SAX_ELEMENT_OPEN /* Element opened */ +} mxml_sax_event_t; + +typedef enum mxml_type_e /**** The XML node type. ****/ +{ + MXML_IGNORE = -1, /* Ignore/throw away node @since Mini-XML 2.3@ */ + MXML_ELEMENT, /* XML element with attributes */ + MXML_INTEGER, /* Integer value */ + MXML_OPAQUE, /* Opaque string */ + MXML_REAL, /* Real value */ + MXML_TEXT, /* Text fragment */ + MXML_CUSTOM /* Custom data @since Mini-XML 2.1@ */ +} mxml_type_t; + +typedef void (*mxml_custom_destroy_cb_t)(void *); + /**** Custom data destructor ****/ + +typedef void (*mxml_error_cb_t)(const char *); + /**** Error callback function ****/ + +typedef struct mxml_attr_s /**** An XML element attribute value. ****/ +{ + char *name; /* Attribute name */ + char *value; /* Attribute value */ +} mxml_attr_t; + +typedef struct mxml_element_s /**** An XML element value. ****/ +{ + char *name; /* Name of element */ + int num_attrs; /* Number of attributes */ + mxml_attr_t *attrs; /* Attributes */ +} mxml_element_t; + +typedef struct mxml_text_s /**** An XML text value. ****/ +{ + int whitespace; /* Leading whitespace? */ + char *string; /* Fragment string */ +} mxml_text_t; + +typedef struct mxml_custom_s /**** An XML custom value. @since Mini-XML 2.1@ ****/ +{ + void *data; /* Pointer to (allocated) custom data */ + mxml_custom_destroy_cb_t destroy; /* Pointer to destructor function */ +} mxml_custom_t; + +typedef union mxml_value_u /**** An XML node value. ****/ +{ + mxml_element_t element; /* Element */ + int integer; /* Integer number */ + char *opaque; /* Opaque string */ + double real; /* Real number */ + mxml_text_t text; /* Text fragment */ + mxml_custom_t custom; /* Custom data @since Mini-XML 2.1@ */ +} mxml_value_t; + +typedef struct mxml_node_s /**** An XML node. ****/ +{ + mxml_type_t type; /* Node type */ + struct mxml_node_s *next; /* Next node under same parent */ + struct mxml_node_s *prev; /* Previous node under same parent */ + struct mxml_node_s *parent; /* Parent node */ + struct mxml_node_s *child; /* First child node */ + struct mxml_node_s *last_child; /* Last child node */ + mxml_value_t value; /* Node value */ + int ref_count; /* Use count */ + void *user_data; /* User data */ +} mxml_node_t; + +typedef struct mxml_index_s /**** An XML node index. ****/ +{ + char *attr; /* Attribute used for indexing or NULL */ + int num_nodes; /* Number of nodes in index */ + int alloc_nodes; /* Allocated nodes in index */ + int cur_node; /* Current node */ + mxml_node_t **nodes; /* Node array */ +} mxml_index_t; + +typedef int (*mxml_custom_load_cb_t)(mxml_node_t *, const char *); + /**** Custom data load callback function ****/ + +typedef char *(*mxml_custom_save_cb_t)(mxml_node_t *); + /**** Custom data save callback function ****/ + +typedef int (*mxml_entity_cb_t)(const char *); + /**** Entity callback function */ + +typedef mxml_type_t (*mxml_load_cb_t)(mxml_node_t *); + /**** Load callback function ****/ + +typedef const char *(*mxml_save_cb_t)(mxml_node_t *, int); + /**** Save callback function ****/ + +typedef void (*mxml_sax_cb_t)(mxml_node_t *, mxml_sax_event_t, void *); + /**** SAX callback function ****/ + + +/* + * C++ support... + */ + +# ifdef __cplusplus +extern "C" { +# endif /* __cplusplus */ + +/* + * Prototypes... + */ + +PHMXMLAPI extern void mxmlAdd(mxml_node_t *parent, int where, + mxml_node_t *child, mxml_node_t *node); +PHMXMLAPI extern void mxmlDelete(mxml_node_t *node); +PHMXMLAPI extern void mxmlElementDeleteAttr(mxml_node_t *node, + const char *name); +PHMXMLAPI extern const char *mxmlElementGetAttr(mxml_node_t *node, const char *name); +PHMXMLAPI extern void mxmlElementSetAttr(mxml_node_t *node, const char *name, + const char *value); +extern void mxmlElementSetAttrf(mxml_node_t *node, const char *name, + const char *format, ...) +# ifdef __GNUC__ +__attribute__ ((__format__ (__printf__, 3, 4))) +# endif /* __GNUC__ */ +; +extern int mxmlEntityAddCallback(mxml_entity_cb_t cb); +extern const char *mxmlEntityGetName(int val); +extern int mxmlEntityGetValue(const char *name); +extern void mxmlEntityRemoveCallback(mxml_entity_cb_t cb); +PHMXMLAPI extern mxml_node_t *mxmlFindElement(mxml_node_t *node, mxml_node_t *top, + const char *name, const char *attr, + const char *value, int descend); +extern void mxmlIndexDelete(mxml_index_t *ind); +extern mxml_node_t *mxmlIndexEnum(mxml_index_t *ind); +extern mxml_node_t *mxmlIndexFind(mxml_index_t *ind, + const char *element, + const char *value); +extern mxml_index_t *mxmlIndexNew(mxml_node_t *node, const char *element, + const char *attr); +extern mxml_node_t *mxmlIndexReset(mxml_index_t *ind); +PHMXMLAPI extern mxml_node_t *mxmlLoadFd(mxml_node_t *top, HANDLE fd, + mxml_type_t (*cb)(mxml_node_t *)); +extern mxml_node_t *mxmlLoadFile(mxml_node_t *top, FILE *fp, + mxml_type_t (*cb)(mxml_node_t *)); +PHMXMLAPI extern mxml_node_t *mxmlLoadString(mxml_node_t *top, const char *s, + mxml_type_t (*cb)(mxml_node_t *)); +PHMXMLAPI extern mxml_node_t *mxmlNewCDATA(mxml_node_t *parent, const char *string); +PHMXMLAPI extern mxml_node_t *mxmlNewCustom(mxml_node_t *parent, void *data, + mxml_custom_destroy_cb_t destroy); +PHMXMLAPI extern mxml_node_t *mxmlNewElement(mxml_node_t *parent, const char *name); +extern mxml_node_t *mxmlNewInteger(mxml_node_t *parent, int integer); +PHMXMLAPI extern mxml_node_t *mxmlNewOpaque(mxml_node_t *parent, const char *opaque); +extern mxml_node_t *mxmlNewReal(mxml_node_t *parent, double real); +PHMXMLAPI extern mxml_node_t *mxmlNewText(mxml_node_t *parent, int whitespace, + const char *string); +extern mxml_node_t *mxmlNewTextf(mxml_node_t *parent, int whitespace, + const char *format, ...) +# ifdef __GNUC__ +__attribute__ ((__format__ (__printf__, 3, 4))) +# endif /* __GNUC__ */ +; +PHMXMLAPI extern mxml_node_t *mxmlNewXML(const char *version); +PHMXMLAPI extern int mxmlRelease(mxml_node_t *node); +PHMXMLAPI extern void mxmlRemove(mxml_node_t *node); +PHMXMLAPI extern int mxmlRetain(mxml_node_t *node); +PHMXMLAPI extern char *mxmlSaveAllocString(mxml_node_t *node, + mxml_save_cb_t cb); +PHMXMLAPI extern int mxmlSaveFd(mxml_node_t *node, HANDLE fd, + mxml_save_cb_t cb); +extern int mxmlSaveFile(mxml_node_t *node, FILE *fp, + mxml_save_cb_t cb); +PHMXMLAPI extern int mxmlSaveString(mxml_node_t *node, char *buffer, + int bufsize, mxml_save_cb_t cb); +extern mxml_node_t *mxmlSAXLoadFd(mxml_node_t *top, HANDLE fd, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); +extern mxml_node_t *mxmlSAXLoadFile(mxml_node_t *top, FILE *fp, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); +extern mxml_node_t *mxmlSAXLoadString(mxml_node_t *top, const char *s, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); +PHMXMLAPI extern int mxmlSetCDATA(mxml_node_t *node, const char *data); +PHMXMLAPI extern int mxmlSetCustom(mxml_node_t *node, void *data, + mxml_custom_destroy_cb_t destroy); +PHMXMLAPI extern void mxmlSetCustomHandlers(mxml_custom_load_cb_t load, + mxml_custom_save_cb_t save); +PHMXMLAPI extern int mxmlSetElement(mxml_node_t *node, const char *name); +PHMXMLAPI extern void mxmlSetErrorCallback(mxml_error_cb_t cb); +extern int mxmlSetInteger(mxml_node_t *node, int integer); +PHMXMLAPI extern int mxmlSetOpaque(mxml_node_t *node, const char *opaque); +extern int mxmlSetReal(mxml_node_t *node, double real); +PHMXMLAPI extern int mxmlSetText(mxml_node_t *node, int whitespace, + const char *string); +extern int mxmlSetTextf(mxml_node_t *node, int whitespace, + const char *format, ...) +# ifdef __GNUC__ +__attribute__ ((__format__ (__printf__, 3, 4))) +# endif /* __GNUC__ */ +; +extern void mxmlSetWrapMargin(int column); +PHMXMLAPI extern mxml_node_t *mxmlWalkNext(mxml_node_t *node, mxml_node_t *top, + int descend); +PHMXMLAPI extern mxml_node_t *mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top, + int descend); + + +/* + * Semi-private functions... + */ + +extern void mxml_error(const char *format, ...); +extern mxml_type_t mxml_ignore_cb(mxml_node_t *node); +extern mxml_type_t mxml_integer_cb(mxml_node_t *node); +extern mxml_type_t mxml_opaque_cb(mxml_node_t *node); +extern mxml_type_t mxml_real_cb(mxml_node_t *node); + + +/* + * C++ support... + */ + +# ifdef __cplusplus +} +# endif /* __cplusplus */ +#endif /* !_mxml_h_ */ + + +/* + * End of "$Id: mxml.h 385 2009-03-19 05:38:52Z mike $". + */ diff --git a/2.x/trunk/build/7za/7za.exe b/2.x/trunk/build/7za/7za.exe deleted file mode 100644 index 6ed059b02..000000000 Binary files a/2.x/trunk/build/7za/7za.exe and /dev/null differ diff --git a/2.x/trunk/build/7za/license.txt b/2.x/trunk/build/7za/license.txt deleted file mode 100644 index a1a56937b..000000000 --- a/2.x/trunk/build/7za/license.txt +++ /dev/null @@ -1,29 +0,0 @@ - 7-Zip Command line version - ~~~~~~~~~~~~~~~~~~~~~~~~~~ - License for use and distribution - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - 7-Zip Copyright (C) 1999-2010 Igor Pavlov. - - 7za.exe is distributed under the GNU LGPL license - - Notes: - You can use 7-Zip on any computer, including a computer in a commercial - organization. You don't need to register or pay for 7-Zip. - - - GNU LGPL information - -------------------- - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You can receive a copy of the GNU Lesser General Public License from - http://www.gnu.org/ diff --git a/2.x/trunk/build/Installer/Custom_Messages.iss b/2.x/trunk/build/Installer/Custom_Messages.iss deleted file mode 100644 index 7c3030a1c..000000000 --- a/2.x/trunk/build/Installer/Custom_Messages.iss +++ /dev/null @@ -1,96 +0,0 @@ -;* Process Hacker 2 - Installer custom messages -;* -;* Copyright (C) 2010 XhmikosR -;* -;* This file is part of Process Hacker. -;* -;* Process Hacker is free software; you can redistribute it and/or modify -;* it under the terms of the GNU General Public License as published by -;* the Free Software Foundation, either version 3 of the License, or -;* (at your option) any later version. -;* -;* Process Hacker is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;* GNU General Public License for more details. -;* -;* You should have received a copy of the GNU General Public License -;* along with Process Hacker. If not, see . - - -[CustomMessages] -;sm=Start Menu, tsk=Task, com=Comment, msg=Message -;English -en.msg_SetupIsRunningWarning=Process Hacker Setup is already running! -en.msg_DeleteLogSettings=Do you also want to delete Process Hacker logs and settings? %nIf you plan on reinstalling Process Hacker you do not have to delete them. -en.msg_servicemanager=The service manager is not available -en.msg_servicemanager2=Only NT based systems support services -en.tsk_AllUsers=For all users -en.tsk_CreateKPHService=Install KProcessHacker as a service -en.tsk_CurrentUser=For the current user only -en.tsk_DeleteKPHService=Delete KProcessHacker service -en.tsk_Other=Other tasks: -en.tsk_RemoveStartup=Remove Process Hacker from Windows startup -en.tsk_ResetSettings=Reset Process Hacker settings -en.tsk_RestoreTaskmgr=Restore Windows task manager -en.tsk_SetDefaultTaskmgr=Set Process Hacker as the default task manager for Windows -en.tsk_StartupDescr=Start Process Hacker on system startup -en.tsk_StartupDescrMin=Minimized on system tray -en.tsk_Startup=Startup options: -en.run_VisitWebsite=Visit Process Hacker Website -en.sm_Changelog=Changelog -en.sm_com_Changelog=Process Hacker Changelog -en.sm_Help=Help and Support -en.sm_HelpFile=Process Hacker Help -en.sm_ReadmeFile=ReadMe -en.sm_com_ReadmeFile=Process Hacker ReadMe - -;German -de.msg_SetupIsRunningWarning=Der Process Hacker Setup lδuft bereits! -de.msg_DeleteLogSettings=Wollen Sie zusδtzlich die Process Hacker Logs und Einstellungen lφschen? %nWenn Sie Process Hacker erneut installieren brauchen Sie nichts zu lφschen. -de.msg_servicemanager=Der Service Manager ist nicht verfόgbar -de.msg_servicemanager2=Nur NT basierte Systeme unterstόtzen Services -de.tsk_AllUsers=Fόr alle Benutzer -de.tsk_CreateKPHService=KProcessHacker als Service installieren -de.tsk_CurrentUser=Nur fόr den aktuellen Benutzer -de.tsk_DeleteKPHService=KProcessHacker Service lφschen -de.tsk_Other=Andere Aufgaben: -de.tsk_RemoveStartup=Process Hacker aus dem Windows Startup entfernen -de.tsk_ResetSettings=Process Hacker Einstellungen zurόcksetzen -de.tsk_RestoreTaskmgr=Windows Task Manager wieder benutzen -de.tsk_SetDefaultTaskmgr=Process Hacker als Standard Task Manager fόr Windows benutzen -de.tsk_StartupDescr=Process Hacker starten beim Windows Start -de.tsk_StartupDescrMin=Verkleinert in der Taskleiste -de.tsk_Startup=Start Optionen: -de.run_VisitWebsite=Process Hacker Website besuchen -de.sm_Changelog=Δnderungsliste -de.sm_com_Changelog=Process Hacker Δnderungsliste -de.sm_Help=Hilfe und Support -de.sm_HelpFile=Process Hacker Hilfe -de.sm_ReadmeFile=LiesMich -de.sm_com_ReadmeFile=Process Hacker LiesMich - -;Greek -gr.msg_SetupIsRunningWarning=Η εγκατάσταση του Process Hacker τρέχει ήδη! -gr.msg_DeleteLogSettings=Θέλετε να διαγράψετε τις επιλογές και τα αρχεία καταγραφής του Process Hacker; %nΑν σκοπεύετε να εγκαταστήσετε πάλι το Process Hacker δεν χρειάζεται να τα διαγράψετε. -gr.msg_servicemanager=The service manager is not available -gr.msg_servicemanager2=Only NT based systems support services -gr.tsk_AllUsers=Για όλους τους χρήστες -gr.tsk_CreateKPHService=Εγκατάσταση του KProcessHacker ως υπηρεσία -gr.tsk_CurrentUser=Για τον τρέχων χρήστη μόνο -gr.tsk_DeleteKPHService=Διαγραφή υπηρεσίας του KProcessHacker -gr.tsk_Other=Έξτρα: -gr.tsk_RemoveStartup=Αφαίρεση του Process Hacker από την εκκίνηση των Windows -gr.tsk_ResetSettings=Επαναφορά των αρχικών ρυθμίσεων του Process Hacker -gr.tsk_RestoreTaskmgr=Επαναφορά του Windows Task Manager -gr.tsk_SetDefaultTaskmgr=Ορισμός του Process Hacker ως τον προκαθορισμένο task manager %nτων Windows -gr.tsk_StartupDescr=Έναρξη με την εκκίνηση των Windows -gr.tsk_StartupDescrMin=Ελαχιστοποιημένο στο tray του συστήματος -gr.tsk_Startup=Επιλογές εκκίνησης: -gr.run_VisitWebsite=Επισκεφτείτε την ιστοσελίδα του Process Hacker -gr.sm_Changelog=Ιστορικό Εκδόσεων -gr.sm_com_Changelog=Ιστορικό Εκδόσεων του Process Hacker -gr.sm_Help=Βοήθεια και Υποστήριξη -gr.sm_HelpFile=Αρχείο βοήθειας του Process Hacker -gr.sm_ReadmeFile=Αρχείο ReadMe -gr.sm_com_ReadmeFile=Αρχείο ReadMe του Process Hacker diff --git a/2.x/trunk/build/Installer/Icons/ProcessHackerLarge.bmp b/2.x/trunk/build/Installer/Icons/ProcessHackerLarge.bmp deleted file mode 100644 index 77fd73315..000000000 Binary files a/2.x/trunk/build/Installer/Icons/ProcessHackerLarge.bmp and /dev/null differ diff --git a/2.x/trunk/build/Installer/Icons/ProcessHackerSmall.bmp b/2.x/trunk/build/Installer/Icons/ProcessHackerSmall.bmp deleted file mode 100644 index 6b5018caf..000000000 Binary files a/2.x/trunk/build/Installer/Icons/ProcessHackerSmall.bmp and /dev/null differ diff --git a/2.x/trunk/build/Installer/Icons/uninstall.ico b/2.x/trunk/build/Installer/Icons/uninstall.ico deleted file mode 100644 index a4debc837..000000000 Binary files a/2.x/trunk/build/Installer/Icons/uninstall.ico and /dev/null differ diff --git a/2.x/trunk/build/Installer/Languages/Greek.isl b/2.x/trunk/build/Installer/Languages/Greek.isl deleted file mode 100644 index 5194d63e2..000000000 --- a/2.x/trunk/build/Installer/Languages/Greek.isl +++ /dev/null @@ -1,367 +0,0 @@ -; *** Inno Setup version 5.1.11+ Greek messages *** -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). -; -; Translated by Anastasis Chatzioglou -; http://anasto.go.to -; baldycom@hotmail.com -; - -[LangOptions] -LanguageName=Greek -LanguageID=$408 -LanguageCodePage=1253 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName=MS Shell Dlg -;DialogFontSize=8 -;DialogFontStandardHeight=13 -;TitleFontName=Arial -;TitleFontSize=29 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;CopyrightFontName=Arial -;CopyrightFontSize=8 -DialogFontName=MS Shell Dlg -DialogFontSize=8 -;4.1.4+ -;DialogFontStandardHeight=13 -TitleFontName=Arial -TitleFontSize=29 -WelcomeFontName=Arial -WelcomeFontSize=12 -CopyrightFontName=Arial -CopyrightFontSize=8 - -[Messages] -; *** Application titles -SetupAppTitle=Εγκατάσταση -SetupWindowTitle=Εγκατάσταση - %1 -UninstallAppTitle=Απεγκατάσταση -UninstallAppFullTitle=%1 Απεγκατάσταση -; 2.0.x -;DefaultUninstallIconName=Απεγκατάσταση %1 - -; *** Misc. common -InformationTitle=Πληροφορίες -ConfirmTitle=Επιβεβαίωση -ErrorTitle=Σφάλμα - -; *** SetupLdr messages -SetupLdrStartupMessage=Θα εκτελεστεί η εγκατάσταση του %1. Θέλετε να συνεχίσετε; -LdrCannotCreateTemp=Σφάλμα στη δημιουργία προσωρινού αρχείου. Η εγκατάσταση θα τερματιστεί τώρα. -LdrCannotExecTemp=Σφάλμα στην εκτέλεση αρχείου στον προσωρινό κατάλογο. Η εγκατάσταση τερματίζεται. - -; *** Startup error messages -LastErrorMessage=%1.%n%nΣφάλμα %2: %3 -SetupFileMissing=Δεν βρίσκεται το αρχείο %1 στον κατάλογο εγκατάστασης. Ίσως χρειάζεται να προμηθευτείτε ένα νέο αντίγραφο του προγράμματος. -SetupFileCorrupt=Το αρχείο εγκατάστασης είναι κατεστραμμένο. Ίσως χρειάζεται να προμηθευτείτε ένα νέο αντίγραφο του προγράμματος. -SetupFileCorruptOrWrongVer=Το αρχείο εγκατάστασης είναι κατεστραμμένο η είναι σε λάθος έκδοση. Ίσως χρειάζεται να προμηθευτείτε ένα νέο αντίγραφο του προγράμματος. -NotOnThisPlatform=Αυτό το πρόγραμμα δεν μπορεί να εκτελεστεί σε %1. -OnlyOnThisPlatform=Αυτό το πρόγραμμα εκτελείται μόνο σε %1. -; 5.1.0+ -OnlyOnTheseArchitectures=Αυτό το πρόγραμμα μπορεί να εγκατασταθεί μονό σε Windows σχεδιασμένα για επεξεργαστές με αρχιτεκτονική:%n%n%1 -MissingWOW64APIs=Η έκδοση των Windows που εκτελείται δεν διαθέτει λειτουργικότητα 64-bit. Για να διορθωθεί το πρόβλημα εγκατέστησε το Service Pack %1. -WinVersionTooLowError=Αυτό το πρόγραμμα απαιτεί %1 έκδοση η νεότερη. -WinVersionTooHighError=Αυτό το πρόγραμμα δεν μπορεί να εκτελεστεί σε %1 έκδοση η νεότερη. -AdminPrivilegesRequired=Πρέπει να είστε ο Διαχειριστής συστήματος για να εγκαταστήσετε αυτό το πρόγραμμα. -PowerUserPrivilegesRequired=Πρέπει να είστε ο Διαχειριστής συστήματος ή Power User για να εγκαταστήσετε αυτό το πρόγραμμα. -SetupAppRunningError=Η εγκατάσταση εντόπισε ότι εκτελείται η εφαρμογή %1. Παρακαλώ κλείστε την εφαρμογή τώρα και πατήστε Εντάξει για να συνεχίσετε. -UninstallAppRunningError=Η απεγκατάσταση εντόπισε ότι εκτελείται η εφαρμογή %1. Παρακαλώ κλείστε την εφαρμογή τώρα και πατήστε Εντάξει για να συνεχίσετε. - -; *** Misc. errors -ErrorCreatingDir=Η εγκατάσταση δεν μπορεί να δημιουργήσει τον κατάλογο %1. -ErrorTooManyFilesInDir=Δεν μπορεί να δημιουργηθεί ένα αρχείο στον κατάλογο "%1" επειδή ήδη περιέχει πολλά αρχεία. - -; *** Setup common messages -ExitSetupTitle=Τέλος Εγκατάστασης. -ExitSetupMessage=Η εγκατάσταση δεν έχει τελειώσει. Αν τη σταματήσετε τώρα το πρόγραμμα που προσπαθήσατε να εγκαταστήσετε δεν θα λειτουργεί.%n%nΜπορείτε να εκτελέσετε ξανά την εγκατάσταση αργότερα. -AboutSetupMenuItem=&Σχετικά με την Εγκατάσταση... -AboutSetupTitle=Σχετικά με την Εγκατάσταση. -AboutSetupMessage=%1 έκδοση %2%n%3%n%n%1 προσωπική σελίδα%n%4 -AboutSetupNote=Anasto -; 5.1.0+ -TranslatorNote=Anastasis Chatzioglou - baldycom@hotmail.com - -; *** Buttons -ButtonBack=< &Πίσω -ButtonNext=&Επόμενο > -ButtonInstall=&Εγκατάσταση -ButtonOK=Ε&ντάξει -ButtonCancel=&Ακυρο -ButtonYes=Ν&αι -ButtonYesToAll=Ναι σε &Ολα -ButtonNo=Ο&χι -ButtonNoToAll=Οχι &σε ολα -ButtonFinish=&Τέλος -ButtonBrowse=&Αναζήτηση... -;4.1.3 -ButtonWizardBrowse=&Εύρεση... -ButtonNewFolder=&Δημιουργία νέου φακέλου - -; *** "Select Language" dialog messages -; 4.0.x -SelectLanguageTitle=Επιλογή της γλώσσας εγκατάστασης -SelectLanguageLabel=Επιλογή της γλώσσας για χρήση κατά την διάρκεια της εγκατάστασης: - - -; *** Common wizard text -ClickNext=Πατήστε Επόμενο για να συνεχίσετε ή Άκυρο για να τερματίσετε την εγκατάσταση. -; 2.0.x -;ClickNextModern=Πατήστε Επόμενο για να συνεχίσετε ή Άκυρο για να τερματίσετε την εγκατάσταση. -;;; - anasto - -;4.1.3 -BrowseDialogTitle=Εύρεση φακέλου -BrowseDialogLabel=Επιλέξτε φάκελο στην λίστα και μετά πατήστε OK. -NewFolderName=Νέος φάκελος - -; *** "Welcome" wizard page -WelcomeLabel1=Καλωσορίσατε στην εγκατάσταση του [name]. -WelcomeLabel2=Θα γίνει εγκατάσταση του [name/ver] στον υπολογιστή σας.%n%nΠριν συνεχίσετε σας συνιστούμε να κλείσετε κάθε άλλη εφαρμογή που πιθανόν εκτελείτε. - -; *** "Password" wizard page -WizardPassword=Εισαγωγή Κωδικού -PasswordLabel1=Αυτή η εγκατάσταση χρειάζεται κωδικό για να εκτελεστεί. -PasswordLabel3=Παρακαλώ δώστε τον κωδικό σας και πατήστε Επόμενο για να συνεχίσετε. -PasswordEditLabel=&Κωδικός: -IncorrectPassword=Ο κωδικός που δώσατε είναι λάθος. Ξαναπροσπαθήστε. - -; *** "License Agreement" wizard page -WizardLicense=Αδεια Χρήσης -LicenseLabel=Παρακαλώ διαβάστε προσεκτικά τις παρακάτω πληροφορίες πριν συνεχίσετε. -; 2.0.x -;LicenseLabel1=Παρακαλώ διαβάστε προσεκτικά τις παρακάτω πληροφορίες πριν συνεχίσετε. Χρησιμοποιήστε την μπάρα κύλισης για να δείτε όλο το κείμενο. -;LicenseLabel2=Αποδέχεστε τους όρους της Άδειας Χρήσης; Αν επιλέξετε όχι η εγκατάσταση θα τερματιστεί. Για να συνεχιστεί η εγκατάσταση πρέπει να αποδέχεστε τους όρους της Άδειας Χρήσης. -LicenseLabel3=Παρακαλώ διαβάστε προσεκτικά τις παρακάτω πληροφορίες πριν συνεχίσετε. Πρέπει να αποδέχεστε τους όρους της Άδειας Χρήσης πριν να συνεχίσετε την εγκατάσταση. -LicenseAccepted=&Δέχομαι τους όρους της Άδειας Χρήσης -LicenseNotAccepted=Δεν &αποδέχομαι τους όρους της Άδειας Χρήσης - -; *** "Information" wizard pages -WizardInfoBefore=Πληροφορίες -InfoBeforeLabel=Παρακαλώ διαβάστε προσεκτικά τις παρακάτω πληροφορίες πριν συνεχίσετε. -InfoBeforeClickLabel=Αν είστε έτοιμοι να συνεχίσετε πατήστε Επόμενο. -WizardInfoAfter=Πληροφορίες -InfoAfterLabel=Παρακαλώ διαβάστε προσεκτικά τις παρακάτω πληροφορίες πριν συνεχίσετε. -InfoAfterClickLabel=Αν είστε έτοιμοι να συνεχίσετε πατήστε Επόμενο. - -; *** "User Information" wizard page -WizardUserInfo=Πληροφορίες για τον Χρήστη -UserInfoDesc=Παρακαλώ δώστε τις πληροφορίες. -UserInfoName=&Ονομα Χρήστη: -UserInfoOrg=&Εταιρεία: -UserInfoSerial=&Σειριακό Αριθμό: -UserInfoNameRequired=Πρέπει να δώσετε όνομα. - -; *** "Select Destination Location" wizard page -; 4.0.x -WizardSelectDir=Επιλέξτε τον κατάλογο που θα εγκατασταθεί το πρόγραμμα. -SelectDirDesc=Πού θα εγκατασταθεί το [name]; -;SelectDirLabel=Επιλέξτε τον κατάλογο που θα εγκατασταθεί το πρόγραμμα. Πατήστε Επόμενο για να συνεχίσετε. -DiskSpaceMBLabel=Αυτό το πρόγραμμα χρειάζεται [mb] MB χώρο στον δίσκο. -ToUNCPathname=Η εγκατάσταση δεν μπορεί να γίνει σε δίσκο δικτύου. Αν θέλετε να γίνει η εγκατάσταση σε δίσκο δικτύου πρέπει να ορίσετε αυτόν το δίσκο. -InvalidPath=Δώστε την πλήρη διαδρομή.%nπαράδειγμα:%n%nC:\APP -InvalidDrive=Ο τοπικός δίσκος η ο δίσκος δικτύου που επιλέξατε δεν υπάρχει η δεν είναι προσβάσιμος. Επιλέξτε άλλον. -DiskSpaceWarningTitle=Δεν υπάρχει αρκετός χώρος στο δίσκο. -DiskSpaceWarning=Η εγκατάσταση χρειάζεται τουλάχιστον %1 KB ελεύθερο χώρο στο δίσκο αλλά ο επιλεγμένος οδηγός διαθέτει μόνον %2 KB.%n%nΘέλετε να συνεχίσετε οπωσδήποτε; -BadDirName32=Ονόματα καταλόγων δεν μπορούν να περιέχουν κάποιον από τους παρακάτω χαρακτήρες:%n%n%1 -DirExistsTitle=Ο κατάλογος υπάρχει. -DirExists=Ο κατάλογος:%n%n%1%n%nυπάρχει ήδη. Θέλετε να γίνει η εγκατάσταση σε αυτόν τον κατάλογο; -DirDoesntExistTitle=Ο κατάλογος δεν υπάρχει. -DirDoesntExist=Ο κατάλογος:%n%n%1%n%nδεν υπάρχει. Θέλετε να δημιουργηθεί; -;4.1.3 -InvalidDirName=Λάθος όνομα φακέλου. -;4.1.5 -DirNameTooLong=Το όνομα του φακέλου είναι πολύ μεγάλο. -;4.1.8 -;SelectDirLabel2=Το [name] θα εγκατασταθεί στον ακόλουθο φάκελο.%n%nΓια συνέχεια πατήστε Επόμενο. Αν θέλετε άλλο φάκελο, πατήστε Εύρεση. -SelectDirLabel3=Το [name] θα εγκατασταθεί στον ακόλουθο φάκελο. -SelectDirBrowseLabel=Για συνέχεια πατήστε Επόμενο. Αν θέλετε άλλο φάκελο, πατήστε Εύρεση. - -; *** "Select Components" wizard page -WizardSelectComponents=Επιλογή Συστατικών -SelectComponentsDesc=Ποια συστατικά θέλετε να εγκατασταθούν; -SelectComponentsLabel2=Επιλέξτε τα συστατικά που θέλετε να εγκαταστήσετε και πατήστε Επόμενο για συνέχεια της εγκατάστασης. -FullInstallation=Πλήρης Εγκατάσταση. -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=Περιορισμένη Εγκατάσταση. -CustomInstallation=Προσαρμοσμένη Εγκατάσταση. -NoUninstallWarningTitle=Τα συστατικά υπάρχουν. -NoUninstallWarning=Η εγκατάσταση διαπίστωσε ότι τα παρακάτω συστατικά είναι ήδη εγκατεστημένα στον υπολογιστή σας:%n%n%1 -ComponentSize1=%1 KB -ComponentSize2=%1 MB -ComponentsDiskSpaceMBLabel=Η συγκεκριμένη επιλογή απαιτεί τουλάχιστον [mb] MB ελεύθερο χώρο στον δίσκο. - -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=Επιλογή Περαιτέρω Ενεργειών -SelectTasksDesc=Ποιές επιπλέον ενέργειες θέλετε να γίνουν; -SelectTasksLabel2=Επιλέξτε τις επιπλέον ενέργειες που θέλετε να γίνουν κατά την εγκατάσταση του [name] και πατήστε Επόμενο. - -; *** "Select Start Menu Folder" wizard page -; 2.0.x -;ReadyMemoTasks=Επιπλέον Ενέργειες: -WizardSelectProgramGroup=Επιλογή Καταλόγου Στο Μενού Εκκίνηση. -SelectStartMenuFolderDesc=Πού θα τοποθετηθούν οι συντομεύσεις του προγράμματος; -; 4.0.x -;SelectStartMenuFolderLabel=Επιλέξτε τον κατάλογο στο μενού εκκίνησης στον οποίο θέλετε δημιουργηθούν οι συντομεύσεις του προγράμματος και πατήστε Επόμενο. -; 5.1.0+ -;NoIconsCheck=&Χωρίς δημιουργία εικονιδίων -MustEnterGroupName=Πρέπει να δώσετε το όνομα ενός καταλόγου. -BadGroupName=Ονόματα καταλόγων δεν μπορούν να περιέχουν κάποιον από τους παρακάτω χαρακτήρες:%n%n%1 -NoProgramGroupCheck2=&Χωρίς δημιουργία καταλόγου στο μενού εκκίνηση. -;4.1.3 -InvalidGroupName=Το όνομα του group δεν είναι σωστό. -;4.1.4+ -GroupNameTooLong=Το όνομα του group ειναι πολύ μεγάλο. -;4.1.8 -;SelectStartMenuFolderLabel2=Η εγκατάσταση θα δημιουργήσει τις συντομεύσεις του προγράμματος στην ακόλουθη ομάδα.%n%nΓια συνέχεια, πατήστε Επόμενο. Αν θέλετε άλλη ομάδα, πατήστε εύρεση. -SelectStartMenuFolderLabel3=Η εγκατάσταση θα δημιουργήσει τις συντομεύσεις του προγράμματος στην ακόλουθη ομάδα. -SelectStartMenuFolderBrowseLabel=Για συνέχεια, πατήστε Επόμενο. Αν θέλετε άλλη ομάδα, πατήστε εύρεση. - - -; *** "Ready to Install" wizard page -WizardReady=Έτοιμος για εγκατάσταση -ReadyLabel1=Η εγκατάσταση του [name] είναι έτοιμη να εκτελεστεί στον υπολογιστή σας. -ReadyLabel2a=Πατήστε Εγκατάσταση για να συνεχίσετε ή Πίσω αν θέλετε να αλλάξετε κάποιες ρυθμίσεις. -ReadyLabel2b=Πατήστε Εγκατάσταση για να συνεχίσετε. -ReadyMemoUserInfo=Πληροφορίες Χρήστη: -ReadyMemoDir=Κατάλογος προορισμού: -ReadyMemoType=Είδος εγκατάστασης: -ReadyMemoComponents=Επιλεγμένα συστατικά: -ReadyMemoGroup=Κατάλογος στο μενού Προγράμματα: -ReadyMemoTasks=Επιπλέον Ενέργειες: - -; *** "Preparing to Install" wizard page -WizardPreparing=Προετοιμασία Εγκατάστασης -PreparingDesc=Η εγκατάσταση προετοιμάζει το πρόγραμμα [name] να τοποθετηθεί στον υπολογιστή. -PreviousInstallNotCompleted=The installation/removal of a previous program was not completed. You will need to restart your computer to complete that installation.%n%nAfter restarting your computer, run Setup again to complete the installation of [name]. -CannotContinue=Setup cannot continue. Please click Cancel to exit. - -; *** "Installing" wizard page -WizardInstalling=Πρόοδος Εγκατάστασης -InstallingLabel=Παρακαλώ περιμένετε να ολοκληρωθεί η εγκατάσταση του [name] στον υπολογιστή σας. - -; *** "Setup Completed" wizard page -; 2.0.x -;WizardFinished=Η Εγκατάσταση Ολοκληρώθηκε -FinishedHeadingLabel=Completing the [name] Setup Wizard -FinishedLabelNoIcons=Η εγκατάσταση του [name] στον υπολογιστή σας τελείωσε με επιτυχία. -FinishedLabel=Η εγκατάσταση του [name] στον υπολογιστή σας τελείωσε με επιτυχία. Μπορείτε να ξεκινήσετε το πρόγραμμα επιλέγοντας το εικονίδιο που δημιουργήθηκε στο μενού εκκίνηση. -ClickFinish=Πατήστε Τέλος για να τερματίσετε το πρόγραμμα εγκατάστασης. -FinishedRestartLabel=Για να ολοκληρωθεί η εγκατάσταση του [name] πρέπει να γίνει επανεκκίνηση του υπολογιστή σας. Θέλετε να γίνει τώρα; -FinishedRestartMessage=Για να ολοκληρωθεί η εγκατάσταση του [name] πρέπει να γίνει επανεκκίνηση του υπολογιστή σας.%n%nΘέλετε να γίνει τώρα; -ShowReadmeCheck=Ναι θέλω να διαβάσω τις πληροφορίες του προγράμματος -YesRadio=&Ναι να γίνει επανεκκίνηση τώρα. -NoRadio=&Οχι θα κάνω επανεκκίνηση αργότερα. -; used for example as 'Run MyProg.exe' -RunEntryExec=Να εκτελεστεί το πρόγραμμα %1 -; used for example as 'View Readme.txt' -RunEntryShellExec=Να εκτελεστεί το %1 - -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=Τοποθετήστε την επόμενη δισκέττα -; 4.0.x -;SelectDirectory=Επιλέξτε κατάλογο -SelectDiskLabel2=Τοποθετήστε την δισκέττα %1 και πατήστε Εντάξει. -PathLabel=&Διαδρομή -FileNotInDir2=Το αρχείο "%1" δεν βρίσκεται στο "%2". Τοποθετήστε τη σωστή δισκέττα. -SelectDirectoryLabel=Δώστε την τοποθεσία της επόμενης δισκέττας. - -; *** Installation phase messages -SetupAborted=Η εγκατάσταση δεν ολοκληρώθηκε.%n%nΔιορθώστε το πρόβλημα και εκτελέστε ξανά την εγκατάσταση. -EntryAbortRetryIgnore=Πατήστε Retry για να ξαναπροσπαθήσετε, Ignore για να συνεχίσετε η Abort για να τερματίσετε την εγκατάσταση. - -; *** Installation status messages -StatusCreateDirs=Δημιουργία καταλόγων... -StatusExtractFiles=Αποσυμπίεση αρχείων... -StatusCreateIcons=Δημιουργία εικονιδίων... -StatusCreateIniEntries=Καταχώρηση στο ΙΝΙ αρχείο συστήματος... -StatusCreateRegistryEntries=Καταχώρηση στο μητρώο συστήματος... -StatusRegisterFiles=Καταχώρηση αρχείων -StatusSavingUninstall=Πληροφορίες απεγκατάστασης... -StatusRunProgram=Τελειώνοντας την εγκατάσταση... -StatusRollback=Rolling back changes... - -; *** Misc. errors -; 2.0.x -;ErrorInternal=Σφάλμα %1 -ErrorInternal2=Σφάλμα %1 -ErrorFunctionFailedNoCode=%1 Σφάλμα -ErrorFunctionFailed=%1 Σφάλμα, κωδ. %2 -ErrorFunctionFailedWithMessage=%1 Σφάλμα, κωδ. %2%n%3 -ErrorExecutingProgram=Δεν μπορεί να εκτελεστεί το αρχείο:%n%1 - -;2.0.x -;ErrorDDEExecute=DDE: Σφάλμα κατά την εκτέλεση της ενέργειας (code: %1) -;ErrorDDECommandFailed=DDE: Η εντολή απέτυχε. -;ErrorDDERequest=DDE: Σφάλμα κατά την εκτέλεση της ενέργειας (code: %1) - -; *** Registry errors -ErrorRegOpenKey=Δεν μπορεί να διαβαστεί το κλειδί μητρώου συστήματος:%n%1\%2 -ErrorRegCreateKey=Δεν μπορεί να δημιουργηθεί το κλειδί μητρώου συστήματος:%n%1\%2 -ErrorRegWriteKey=Δεν μπορεί να γίνει καταχώρηση στο κλειδί μητρώου συστήματος:%n%1\%2 - -; *** INI errors -ErrorIniEntry=Δεν μπορεί να γίνει καταχώρηση στο ΙΝΙ αρχείο συστήματος "%1". - -; *** File copying errors -FileAbortRetryIgnore=Πατήστε Retry για να ξαναπροσπαθήσετε, Ignore για να συνεχίσετε η Abort για να τερματίσετε την εγκατάσταση. -FileAbortRetryIgnore2=Πατήστε Retry για να ξαναπροσπαθήσετε, Ignore για να συνεχίσετε η Abort για να τερματίσετε την εγκατάσταση. -SourceIsCorrupted=Το αρχείο προέλευσης είναι κατεστραμμένο. -SourceDoesntExist=Το αρχείο προέλευσης "%1" δεν υπάρχει. -ExistingFileReadOnly=Το αρχείο είναι μπαρκαρισμένο μόνο για ανάγνωση.%n%nΠατήστε Retry για να το ξεμαρκάρετε και να προσπαθήσετε πάλι, Ignore για να το προσπεράσετε η Abort για να τερματίσετε την εγκατάσταση. -ErrorReadingExistingDest=Παρουσιάστηκε σφάλμα κατά την ανάγνωση του αρχείου: -FileExists=Το αρχείο υπάρχει.%n%nΘέλετε να ξαναγραφτεί; -ExistingFileNewer=Ενα αρχείο που βρέθηκε στον υπολογιστή σας είναι νεότερης έκδοσης απο εκείνο της εγκατάστασης. Προτείνεται να κρατήσετε το υπάρχον αρχείο.%n%nΘέλετε να κρατήσετε το υπάρχον αρχείο; -ErrorChangingAttr=Προέκυψε σφάλμα στην προσπάθεια να αλλαχτούν τα χαρακτηριστικά του αρχείου: -ErrorCreatingTemp=Προέκυψε σφάλμα στην προσπάθεια να δημιουργηθεί ένα αρχείο στον κατάλογο προορισμού: -ErrorReadingSource=Προέκυψε σφάλμα στην προσπάθεια ανάγνωσης του αρχείου προέλευσης: -ErrorCopying=Προέκυψε σφάλμα στην προσπάθεια να αντιγραφεί το αρχείο: -ErrorReplacingExistingFile=Προέκυψε σφάλμα στην προσπάθεια να αντικατασταθεί το υπάρχον αρχείο: -ErrorRestartReplace=Προέκυψε σφάλμα στην προσπάθεια να γίνει επανεκκίνηση και αντικατάσταση αρχείου: -ErrorRenamingTemp=Προέκυψε σφάλμα στην προσπάθεια μετονομασίας ενός αρχείου στον κατάλογο προορισμού: -ErrorRegisterServer=Προέκυψε σφάλμα στην προσπάθεια καταχώρησης DLL/OCX: %1 -ErrorRegSvr32Failed=RegSvr32 failed with exit code %1 -ErrorRegisterTypeLib=Unable to register the type library: %1 - -; *** Post-installation errors -ErrorOpeningReadme=Προέκυψε σφάλμα στην προσπάθεια να φορτωθεί το αρχείο πληροφοριών. -ErrorRestartingComputer=Προέκυψε σφάλμα στην προσπάθεια επανεκκίνησης του υπολογιστή.%nΠαρακαλώ επανεκκινήστε τον υπολογιστή σας. - -; *** Uninstaller messages -UninstallNotFound=Το αρχείο "%1" δεν βρέθηκε. Η απεγκατάσταση δεν μπορεί να γίνει -; 4.0.x -UninstallOpenError=Το αρχείο "%1" δεν μπόρεσε να φορτωθεί. Η απεγκατάσταση δεν μπορεί να γίνει -UninstallUnsupportedVer=Το αρχείο "%1" δεν αναγνωρίζεται από αυτή την έκδοση της εγκατάστασης, Η απεγκατάσταση δεν μπορεί να εκτελεστεί -UninstallUnknownEntry=Το αρχείο "%1" δεν αναγνωρίζεται από αυτή την έκδοση της εγκατάστασης, Η απεγκατάσταση δεν μπορεί να εκτελεστεί -ConfirmUninstall=Είστε σίγουροι ότι θέλετε να διαγράψετε το %1 και όλα τα συστατικά του; -; 5.1.0+ -UninstallOnlyOnWin64=Αυτή η εφαρμογή μπορεί να απεγκατασταθεί μόνο σε 64-bit Windows. -OnlyAdminCanUninstall=Η απεγκατάσταση μπορεί να εκτελεστεί μόνο από τον Διαχειριστή συστήματος -UninstallStatusLabel=Παρακαλώ περιμένετε όσο το %1 διαγράφετε από τον υπολογιστή σας -UninstalledAll=Η απεγκατάσταση του %1 έγινε με επιτυχία. -UninstalledMost=Η απεγκατάσταση του %1 έγινε με επιτυχία.%n%nΚάποια συστατικά που παρέμειναν στον υπολογιστή σας θα πρέπει να τα διαγράψετε εσείς. -UninstalledAndNeedsRestart=To complete the uninstallation of %1, your computer must be restarted.%n%nWould you like to restart now? -UninstallDataCorrupted="%1" Αυτό το αρχείο είναι κατεστραμμένο. Δεν μπορεί να γίνει απεγκατάσταση. - -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=Θέλετε να διαγραφούν τα κοινά αρχεία; -ConfirmDeleteSharedFile2=Τα κοινά αρχεία δεν χρησιμοποιούνται από κάποιο πρόγραμμα. Θέλετε να διαγραφούν;%n%nΑν κάποιο πρόγραμμα τα χρησιμοποιεί ίσως δεν εκτελείται σωστά αν τα διαγράψετε. Αν δεν είστε σίγουροι αφήστε τα στο σύστημα σας δεν προκαλούν κάποιο πρόβλημα. -SharedFileNameLabel=Ονομα Αρχείου: -SharedFileLocationLabel=Τοποθεσία: -WizardUninstalling=Πρόοδος Απεγκατάστασης: -StatusUninstalling=Απεγκατάσταση του %1... - -[CustomMessages] -NameAndVersion=%1 έκδοση %2 -AdditionalIcons=Επιπλέον εικονίδια: -CreateDesktopIcon=Δημιουργία ενός &εικονιδίου στην επιφάνεια εργασίας -CreateQuickLaunchIcon=Δημιουργία ενός εικονιδίου στη &Γρήγορη Εκκίνηση -ProgramOnTheWeb=Το %1 στο Internet -UninstallProgram=Απεγκατάσταση του %1 -LaunchProgram=Εκκίνηση του %1 -AssocFileExtension=%Αντιστοίχιση του %1 με την %2 επέκταση αρχείου -AssocingFileExtension=Γίνεται αντιστοίχηση του %1 με την %2 επέκταση αρχείου... - diff --git a/2.x/trunk/build/Installer/Process_Hacker2_installer.iss b/2.x/trunk/build/Installer/Process_Hacker2_installer.iss deleted file mode 100644 index af1607ba1..000000000 --- a/2.x/trunk/build/Installer/Process_Hacker2_installer.iss +++ /dev/null @@ -1,295 +0,0 @@ -;* Process Hacker 2 - Installer script -;* -;* Copyright (C) 2010 XhmikosR -;* -;* This file is part of Process Hacker. -;* -;* Process Hacker is free software; you can redistribute it and/or modify -;* it under the terms of the GNU General Public License as published by -;* the Free Software Foundation, either version 3 of the License, or -;* (at your option) any later version. -;* -;* Process Hacker is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;* GNU General Public License for more details. -;* -;* You should have received a copy of the GNU General Public License -;* along with Process Hacker. If not, see . -; -; -; -; Requirements: -; *Inno Setup QuickStart Pack v5.3.10(+): http://www.jrsoftware.org/isdl.php#qsp - - -#define installer_build_number "03" - -#define VerMajor -#define VerMinor -#define VerRevision -#define VerBuild - -#expr ParseVersion("..\..\bin\Release32\ProcessHacker.exe", VerMajor, VerMinor, VerRevision, VerBuild) -#define app_version str(VerMajor) + "." + str(VerMinor) + "." + str(VerRevision) + "." + str(VerBuild) -#define simple_app_version str(VerMajor) + "." + str(VerMinor) -#define installer_build_date GetDateTimeString('mmm, d yyyy', '', '') - - -[Setup] -AppID=Process_Hacker2 -AppCopyright=Copyright © 2010, Process Hacker Team. Licensed under the GNU GPL, v3. -AppContact=http://sourceforge.net/tracker/?group_id=242527 -AppName=Process Hacker -AppVerName=Process Hacker {#= simple_app_version} -AppVersion={#= simple_app_version} -AppPublisher=wj32 -AppPublisherURL=http://processhacker.sourceforge.net/ -AppSupportURL=http://sourceforge.net/tracker/?group_id=242527 -AppUpdatesURL=http://processhacker.sourceforge.net/ -UninstallDisplayName=Process Hacker {#= simple_app_version} -DefaultDirName={pf}\Process Hacker 2 -DefaultGroupName=Process Hacker 2 -VersionInfoCompany=wj32 -VersionInfoCopyright=Licensed under the GNU GPL, v3. -VersionInfoDescription=Process Hacker {#= simple_app_version} Setup -VersionInfoTextVersion={#= simple_app_version} -VersionInfoVersion={#= simple_app_version} -VersionInfoProductName=Process Hacker -VersionInfoProductVersion={#= simple_app_version} -VersionInfoProductTextVersion={#= simple_app_version} -MinVersion=0,5.01.2600sp2 -AppReadmeFile={app}\Help.htm -LicenseFile=..\..\LICENSE.txt -InfoAfterFile=..\..\CHANGELOG.txt -;InfoBeforeFile=..\..\doc\Help.htm -SetupIconFile=..\..\ProcessHacker\ProcessHacker.ico -UninstallDisplayIcon={app}\ProcessHacker.exe -WizardImageFile=Icons\ProcessHackerLarge.bmp -WizardSmallImageFile=Icons\ProcessHackerSmall.bmp -OutputDir=. -OutputBaseFilename=processhacker-{#= simple_app_version}-setup -AllowNoIcons=yes -Compression=lzma2/max -SolidCompression=yes -EnableDirDoesntExistWarning=no -DirExistsWarning=no -ShowTasksTreeLines=yes -AlwaysShowDirOnReadyPage=yes -AlwaysShowGroupOnReadyPage=yes -PrivilegesRequired=admin -ShowLanguageDialog=auto -DisableDirPage=auto -DisableProgramGroupPage=auto -AppMutex=Global\ProcessHacker2Mutant -ArchitecturesInstallIn64BitMode=x64 - - -[Languages] -; Installer's languages -Name: en; MessagesFile: compiler:Default.isl -Name: de; MessagesFile: compiler:Languages\German.isl -Name: gr; MessagesFile: Languages\Greek.isl - - -; Include the installer's custom messages and services stuff -#include "Custom_Messages.iss" -#include "Services.iss" - - -[Messages] -BeveledLabel=Process Hacker v{#= simple_app_version} by wj32, Setup v{#= installer_build_number} built on {#= installer_build_date} - - -[Files] -Source: ..\..\CHANGELOG.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\LICENSE.txt; DestDir: {app}; Flags: ignoreversion -Source: ..\..\doc\Help.htm; DestDir: {app}; Flags: ignoreversion -Source: ..\..\tools\peview\bin\Release32\peview.exe; DestDir: {app}; Flags: ignoreversion; Check: NOT Is64BitInstallMode() -Source: ..\..\tools\peview\bin\Release64\peview.exe; DestDir: {app}; Flags: ignoreversion; Check: Is64BitInstallMode() -Source: ..\..\bin\Release32\ProcessHacker.exe; DestDir: {app}; Flags: ignoreversion; Check: NOT Is64BitInstallMode() -Source: ..\..\bin\Release64\ProcessHacker.exe; DestDir: {app}; Flags: ignoreversion; Check: Is64BitInstallMode() -Source: ..\..\KProcessHacker\i386\kprocesshacker.sys; DestDir: {app}; Flags: ignoreversion; Check: NOT Is64BitInstallMode() -Source: ..\..\KProcessHacker\amd64\kprocesshacker.sys; DestDir: {app}; Flags: ignoreversion; Check: Is64BitInstallMode() -Source: Icons\uninstall.ico; DestDir: {app}; Flags: ignoreversion - - -[Tasks] -Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} -Name: desktopicon\user; Description: {cm:tsk_CurrentUser}; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive -Name: desktopicon\common; Description: {cm:tsk_AllUsers}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked exclusive -Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; OnlyBelowVersion: 0,6.01; Flags: unchecked - -Name: startup_task; Description: {cm:tsk_StartupDescr}; GroupDescription: {cm:tsk_Startup}; Check: StartupCheck(); Flags: unchecked checkablealone -;Name: startup_task\minimized; Description: {cm:tsk_StartupDescrMin}; GroupDescription: {cm:tsk_Startup}; Check: StartupCheck(); Flags: unchecked -Name: remove_startup_task; Description: {cm:tsk_RemoveStartup}; GroupDescription: {cm:tsk_Startup}; Check: NOT StartupCheck(); Flags: unchecked - -Name: create_KPH_service; Description: {cm:tsk_CreateKPHService}; GroupDescription: {cm:tsk_Other}; Check: NOT KPHServiceCheck() AND NOT Is64BitInstallMode(); Flags: unchecked -Name: delete_KPH_service; Description: {cm:tsk_DeleteKPHService}; GroupDescription: {cm:tsk_Other}; Check: KPHServiceCheck() AND NOT Is64BitInstallMode(); Flags: unchecked - -Name: reset_settings; Description: {cm:tsk_ResetSettings}; GroupDescription: {cm:tsk_Other}; Check: SettingsExistCheck(); Flags: checkedonce unchecked - -Name: set_default_taskmgr; Description: {cm:tsk_SetDefaultTaskmgr}; GroupDescription: {cm:tsk_Other}; Check: PHDefaulTaskmgrCheck(); Flags: unchecked -Name: restore_taskmgr; Description: {cm:tsk_RestoreTaskmgr}; GroupDescription: {cm:tsk_Other}; Check: NOT PHDefaulTaskmgrCheck(); Flags: unchecked - - -[Icons] -Name: {group}\peview; Filename: {app}\peview.exe; Comment: peview; WorkingDir: {app}; IconFilename: {app}\peview.exe; IconIndex: 0 -Name: {group}\Process Hacker 2; Filename: {app}\ProcessHacker.exe; Comment: Process Hacker {#= simple_app_version}; WorkingDir: {app}; IconFilename: {app}\ProcessHacker.exe; IconIndex: 0 -Name: {group}\{cm:sm_Help}\{cm:sm_Changelog}; Filename: {app}\CHANGELOG.txt; Comment: {cm:sm_com_Changelog}; WorkingDir: {app} -Name: {group}\{cm:sm_Help}\{cm:sm_HelpFile}; Filename: {app}\Help.htm; Comment: {cm:sm_HelpFile}; WorkingDir: {app} -Name: {group}\{cm:sm_Help}\{cm:ProgramOnTheWeb,Process Hacker 2}; Filename: http://processhacker.sourceforge.net/; Comment: {cm:ProgramOnTheWeb,Process Hacker 2} -Name: {group}\{cm:UninstallProgram,Process Hacker 2}; Filename: {uninstallexe}; IconFilename: {app}\uninstall.ico; Comment: {cm:UninstallProgram,Process Hacker 2}; WorkingDir: {app} - -Name: {commondesktop}\Process Hacker 2; Filename: {app}\ProcessHacker.exe; Tasks: desktopicon\common; Comment: Process Hacker {#= simple_app_version}; WorkingDir: {app}; IconFilename: {app}\ProcessHacker.exe; IconIndex: 0 -Name: {userdesktop}\Process Hacker 2; Filename: {app}\ProcessHacker.exe; Tasks: desktopicon\user; Comment: Process Hacker {#= simple_app_version}; WorkingDir: {app}; IconFilename: {app}\ProcessHacker.exe; IconIndex: 0 -Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Process Hacker 2; Filename: {app}\ProcessHacker.exe; Tasks: quicklaunchicon; Comment: Process Hacker {#= simple_app_version}; WorkingDir: {app}; IconFilename: {app}\ProcessHacker.exe; IconIndex: 0 - - -[InstallDelete] -Type: files; Name: {userdesktop}\Process Hacker 2.lnk; Tasks: NOT desktopicon\user -Type: files; Name: {commondesktop}\Process Hacker 2.lnk; Tasks: NOT desktopicon\common - -Type: files; Name: {userappdata}\Process Hacker 2\settings.xml; Tasks: reset_settings -Type: dirifempty; Name: {userappdata}\Process Hacker; Tasks: reset_settings - - -[Registry] -Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe; Flags: uninsdeletekeyifempty dontcreatekey -Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Process Hacker 2; ValueData: """{app}\ProcessHacker.exe"""; Tasks: startup_task; Flags: uninsdeletevalue -;Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Process Hacker 2; ValueData: """{app}\ProcessHacker.exe"" -m"; Tasks: startup_task\minimized; Flags: uninsdeletevalue -Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Run; ValueName: Process Hacker 2; Tasks: remove_startup_task; Flags: deletevalue uninsdeletevalue -Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe; ValueType: string; ValueName: Debugger; ValueData: """{app}\ProcessHacker.exe"""; Tasks: set_default_taskmgr -Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe; ValueType: string; ValueName: Debugger; ValueData: """{app}\ProcessHacker.exe"""; Flags: uninsdeletevalue; Check: NOT PHDefaulTaskmgrCheck() -Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe; ValueName: Debugger; Tasks: restore_taskmgr reset_settings; Flags: deletevalue uninsdeletevalue; Check: NOT PHDefaulTaskmgrCheck() - - -[Run] -Filename: {app}\ProcessHacker.exe; Description: {cm:LaunchProgram,Process Hacker 2}; Flags: nowait postinstall skipifsilent runascurrentuser -Filename: http://processhacker.sourceforge.net/; Description: {cm:run_VisitWebsite}; Flags: nowait postinstall skipifsilent shellexec runascurrentuser unchecked - - -[Code] -// Global variables and constants -const installer_mutex_name = 'process_hacker2_setup_mutex'; - - -// Check if Process Hacker is configured to run on startup in order to control -// startup choice from within the installer -function StartupCheck(): Boolean; -begin - Result := True; - if RegValueExists(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Run', 'Process Hacker 2') then - Result := False; -end; - - -// Check if Process Hacker's settings exist -function SettingsExistCheck(): Boolean; -begin - Result := False; - if FileExists(ExpandConstant('{userappdata}\Process Hacker 2\settings.xml')) then - Result := True; -end; - - -// Check if Process Hacker is set as the default Task Manager for Windows -function PHDefaulTaskmgrCheck(): Boolean; -var - svalue: String; -begin - Result := True; - if RegQueryStringValue(HKLM, - 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe', 'Debugger', svalue) then begin - if svalue = (ExpandConstant('"{app}\ProcessHacker.exe"')) then - Result := False; - end; -end; - - -// Check if KProcessHacker is installed as a service -function KPHServiceCheck(): Boolean; -var - dvalue: DWORD; -begin - Result := False; - if RegQueryDWordValue(HKLM, 'SYSTEM\CurrentControlSet\Services\KProcessHacker2', 'Start', dvalue) then begin - if dvalue = 1 then - Result := True; - end; -end; - - -Procedure CleanUpFiles(); -begin - DeleteFile(ExpandConstant('{userappdata}\Process Hacker 2\settings.xml')); - RemoveDir(ExpandConstant('{userappdata}\Process Hacker 2\')); -end; - - -Procedure CurStepChanged(CurStep: TSetupStep); -begin - case CurStep of ssInstall: - begin - if IsServiceRunning('KProcessHacker2') then begin - StopService('KProcessHacker2'); - end; - if IsTaskSelected('delete_KPH_service') then begin - RemoveService('KProcessHacker2'); - end; - end; - ssPostInstall: - begin - if (KPHServiceCheck AND NOT IsTaskSelected('delete_KPH_service') OR (IsTaskSelected('create_KPH_service'))) then begin - StopService('KProcessHacker2'); - RemoveService('KProcessHacker2'); - InstallService(ExpandConstant('{app}\kprocesshacker.sys'),'KProcessHacker2','KProcessHacker2','KProcessHacker2 driver',SERVICE_KERNEL_DRIVER,SERVICE_SYSTEM_START); - StartService('KProcessHacker2'); - end; - end; - end; -end; - - -Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); -begin - // When uninstalling ask user to delete Process Hacker's settings - // based on whether the settings file exists only - if CurUninstallStep = usUninstall then begin - StopService('KProcessHacker2'); - RemoveService('KProcessHacker2'); - if SettingsExistCheck then begin - if MsgBox(ExpandConstant('{cm:msg_DeleteLogSettings}'), - mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then begin - CleanUpFiles; - end; - RemoveDir(ExpandConstant('{app}')); - end; - end; -end; - - -function InitializeSetup(): Boolean; -begin - // Create a mutex for the installer and if it's already running then expose a message and stop installation - Result := True; - if CheckForMutexes(installer_mutex_name) then begin - if not WizardSilent() then - MsgBox(ExpandConstant('{cm:msg_SetupIsRunningWarning}'), mbCriticalError, MB_OK); - exit; - Result := False; - end; - CreateMutex(installer_mutex_name); -end; - - -function InitializeUninstall(): Boolean; -begin - Result := True; - if CheckForMutexes(installer_mutex_name) then begin - if not WizardSilent() then - MsgBox(ExpandConstant('{cm:msg_SetupIsRunningWarning}'), mbCriticalError, MB_OK); - exit; - end; - CreateMutex(installer_mutex_name); -end; diff --git a/2.x/trunk/build/Installer/Services.iss b/2.x/trunk/build/Installer/Services.iss deleted file mode 100644 index 23940128b..000000000 --- a/2.x/trunk/build/Installer/Services.iss +++ /dev/null @@ -1,207 +0,0 @@ -;* Process Hacker - Various services functions -;* -;* -;* This file is part of Process Hacker. -;* -;* Process Hacker is free software; you can redistribute it and/or modify -;* it under the terms of the GNU General Public License as published by -;* the Free Software Foundation, either version 3 of the License, or -;* (at your option) any later version. -;* -;* Process Hacker is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;* GNU General Public License for more details. -;* -;* You should have received a copy of the GNU General Public License -;* along with Process Hacker. If not, see . - - -#include "Custom_Messages.iss" - -[Code] -// Various service related functions -// Source: http://tinyurl.com/ybwjpuq -type - SERVICE_STATUS = record - dwServiceType : cardinal; - dwCurrentState : cardinal; - dwControlsAccepted : cardinal; - dwWin32ExitCode : cardinal; - dwServiceSpecificExitCode : cardinal; - dwCheckPoint : cardinal; - dwWaitHint : cardinal; - end; - HANDLE = cardinal; - -const - SERVICE_QUERY_CONFIG = $1; - SERVICE_CHANGE_CONFIG = $2; - SERVICE_QUERY_STATUS = $4; - SERVICE_START = $10; - SERVICE_STOP = $20; - SERVICE_ALL_ACCESS = $f01ff; - SC_MANAGER_ALL_ACCESS = $f003f; - SERVICE_KERNEL_DRIVER = $1; - SERVICE_WIN32_OWN_PROCESS = $10; - SERVICE_WIN32_SHARE_PROCESS = $20; - SERVICE_WIN32 = $30; - SERVICE_INTERACTIVE_PROCESS = $100; - SERVICE_BOOT_START = $0; - SERVICE_SYSTEM_START = $1; - SERVICE_AUTO_START = $2; - SERVICE_DEMAND_START = $3; - SERVICE_DISABLED = $4; - SERVICE_DELETE = $10000; - SERVICE_CONTROL_STOP = $1; - SERVICE_CONTROL_PAUSE = $2; - SERVICE_CONTROL_CONTINUE = $3; - SERVICE_CONTROL_INTERROGATE = $4; - SERVICE_STOPPED = $1; - SERVICE_START_PENDING = $2; - SERVICE_STOP_PENDING = $3; - SERVICE_RUNNING = $4; - SERVICE_CONTINUE_PENDING = $5; - SERVICE_PAUSE_PENDING = $6; - SERVICE_PAUSED = $7; - -// ####################################################################################### -// nt based service utilities -// ####################################################################################### -function OpenSCManager(lpMachineName, lpDatabaseName: AnsiString; dwDesiredAccess :cardinal): HANDLE; -external 'OpenSCManagerA@advapi32.dll stdcall'; - -function OpenService(hSCManager :HANDLE;lpServiceName: AnsiString; dwDesiredAccess :cardinal): HANDLE; -external 'OpenServiceA@advapi32.dll stdcall'; - -function CloseServiceHandle(hSCObject :HANDLE): Boolean; -external 'CloseServiceHandle@advapi32.dll stdcall'; - -function CreateService(hSCManager :HANDLE;lpServiceName, lpDisplayName: AnsiString;dwDesiredAccess,dwServiceType,dwStartType,dwErrorControl: cardinal;lpBinaryPathName,lpLoadOrderGroup: AnsiString; lpdwTagId : cardinal;lpDependencies,lpServiceStartName,lpPassword :AnsiString): cardinal; -external 'CreateServiceA@advapi32.dll stdcall'; - -function DeleteService(hService :HANDLE): Boolean; -external 'DeleteService@advapi32.dll stdcall'; - -function StartNTService(hService :HANDLE;dwNumServiceArgs : cardinal;lpServiceArgVectors : cardinal) : Boolean; -external 'StartServiceA@advapi32.dll stdcall'; - -function ControlService(hService :HANDLE; dwControl :cardinal;var ServiceStatus :SERVICE_STATUS) : Boolean; -external 'ControlService@advapi32.dll stdcall'; - -function QueryServiceStatus(hService :HANDLE;var ServiceStatus :SERVICE_STATUS) : Boolean; -external 'QueryServiceStatus@advapi32.dll stdcall'; - -function QueryServiceStatusEx(hService :HANDLE;ServiceStatus :SERVICE_STATUS) : Boolean; -external 'QueryServiceStatus@advapi32.dll stdcall'; - - -function OpenServiceManager() : HANDLE; -begin - if UsingWinNT() = true then begin - Result := OpenSCManager('','ServicesActive',SC_MANAGER_ALL_ACCESS); - if Result = 0 then - MsgBox(ExpandConstant('{cm:msg_servicemanager}'), mbError, MB_OK) - end - else begin - MsgBox(ExpandConstant('{cm:msg_servicemanager2}'), mbError, MB_OK) - Result := 0; - end -end; - - -function InstallService(FileName, ServiceName, DisplayName, Description : AnsiString;ServiceType,StartType :cardinal) : Boolean; -var - hSCM : HANDLE; - hService: HANDLE; -begin - hSCM := OpenServiceManager(); - Result := False; - if hSCM <> 0 then begin - hService := CreateService(hSCM,ServiceName,DisplayName,SERVICE_ALL_ACCESS,ServiceType,StartType,0,FileName,'',0,'','',''); - if hService <> 0 then begin - Result := true; - // Win2K & WinXP supports aditional description text for services - if Description<> '' then - RegWriteStringValue(HKLM,'System\CurrentControlSet\Services\' + ServiceName,'Description',Description); - CloseServiceHandle(hService) - end; - CloseServiceHandle(hSCM) - end -end; - - -function RemoveService(ServiceName: String) : Boolean; -var - hSCM : HANDLE; - hService: HANDLE; -begin - hSCM := OpenServiceManager(); - Result := False; - if hSCM <> 0 then begin - hService := OpenService(hSCM,ServiceName,SERVICE_DELETE); - if hService <> 0 then begin - Result := DeleteService(hService); - CloseServiceHandle(hService) - end; - CloseServiceHandle(hSCM) - end -end; - - -function StartService(ServiceName: String) : Boolean; -var - hSCM : HANDLE; - hService: HANDLE; -begin - hSCM := OpenServiceManager(); - Result := False; - if hSCM <> 0 then begin - hService := OpenService(hSCM,ServiceName,SERVICE_START); - if hService <> 0 then begin - Result := StartNTService(hService,0,0); - CloseServiceHandle(hService) - end; - CloseServiceHandle(hSCM) - end; -end; - - -function StopService(ServiceName: String) : Boolean; -var - hSCM : HANDLE; - hService: HANDLE; - Status : SERVICE_STATUS; -begin - hSCM := OpenServiceManager(); - Result := False; - if hSCM <> 0 then begin - hService := OpenService(hSCM,ServiceName,SERVICE_STOP); - if hService <> 0 then begin - Result := ControlService(hService,SERVICE_CONTROL_STOP,Status); - CloseServiceHandle(hService) - end; - CloseServiceHandle(hSCM) - end; -end; - - -function IsServiceRunning(ServiceName: String) : Boolean; -var - hSCM : HANDLE; - hService: HANDLE; - Status : SERVICE_STATUS; -begin - hSCM := OpenServiceManager(); - Result := False; - if hSCM <> 0 then begin - hService := OpenService(hSCM,ServiceName,SERVICE_QUERY_STATUS); - if hService <> 0 then begin - if QueryServiceStatus(hService,Status) then begin - Result :=(Status.dwCurrentState = SERVICE_RUNNING) - end; - CloseServiceHandle(hService) - end; - CloseServiceHandle(hSCM) - end -end; diff --git a/2.x/trunk/build/sdk/makesdk.cmd b/2.x/trunk/build/sdk/makesdk.cmd index d5f5b6047..ef46119d2 100644 --- a/2.x/trunk/build/sdk/makesdk.cmd +++ b/2.x/trunk/build/sdk/makesdk.cmd @@ -77,6 +77,8 @@ for %%a in ( phdk.h ) do copy ..\..\ProcessHacker\sdk\%%a ..\..\sdk\include\%%a +copy ..\..\ProcessHacker\mxml\mxml.h ..\..\sdk\include\mxml.h + rem Libraries copy ..\..\lib\lib32\ntdll.lib ..\..\sdk\lib\i386\