* deleted installer files

* some mxml APIs are now exported

git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3549 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
wj32
2010-08-30 07:37:18 +00:00
parent c87c268ef0
commit cf79679ce5
11 changed files with 321 additions and 1307 deletions
+319 -313
View File
@@ -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 <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <ctype.h>
# include <errno.h>
# include <windows.h>
/*
* 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 <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <ctype.h>
# include <errno.h>
# include <windows.h>
#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 $".
*/
Binary file not shown.
-29
View File
@@ -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/
@@ -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 <http://www.gnu.org/licenses/>.
[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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

@@ -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 επέκταση αρχείου...
@@ -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 <http://www.gnu.org/licenses/>.
;
;
;
; 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;
-207
View File
@@ -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 <http://www.gnu.org/licenses/>.
#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;
+2
View File
@@ -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\