1 /* Copyright (C) 1999-2002, Ghostgum Software Pty Ltd. All rights reserved. 2 3 This software is provided AS-IS with no warranty, either express or 4 implied. 5 6 This software is distributed under license and may not be copied, 7 modified or distributed except as expressly authorized under the terms 8 of the license contained in the file LICENSE in this distribution. 9 10 For more information about licensing, please refer to 11 http://www.ghostscript.com/licensing/. For information on 12 commercial licensing, go to http://www.artifex.com/licensing/ or 13 contact Artifex Software, Inc., 101 Lucas Valley Road #110, 14 San Rafael, CA 94903, U.S.A., +1(415)492-9861. 15 */ 16 17 // $Id: dwinst.h,v 1.7 2004/11/18 06:48:41 ghostgum Exp $ 18 19 #ifndef dwinst_INCLUDED 20 # define dwinst_INCLUDED 21 22 // Definitions for Ghostscript installer 23 24 #ifndef MAXSTR 25 #ifdef MAX_PATH 26 #define MAXSTR MAX_PATH 27 #else 28 #define MAXSTR 256 29 #endif 30 #endif 31 32 class CInstall 33 { 34 public: 35 CInstall(); 36 virtual ~CInstall(); 37 void SetMessageFunction(void(*fn)(const char *)); 38 void AddMessage(const char *message); 39 const char *GetMainDir(); 40 const char *GetUninstallName(); 41 BOOL GetPrograms(BOOL bUseCommon, char *buf, int buflen); 42 BOOL Init(const char *szSourceDir, const char *szFileList); 43 BOOL InstallFiles(BOOL bNoCopy, BOOL *pbQuit); 44 BOOL InstallFile(char *filename, BOOL bNoCopy); 45 BOOL MakeDir(const char *dirname); 46 FILE * MakeTemp(char *name); 47 48 BOOL SetAllUsers(BOOL bUseCommon); 49 void SetTargetDir(const char *szTargetDir); 50 void SetTargetGroup(const char *szTargetGroup); 51 52 BOOL StartMenuBegin(); 53 BOOL StartMenuEnd(); 54 BOOL StartMenuAdd(const char *szDescription, const char *szProgram, const char *szArguments); 55 56 BOOL UpdateRegistryBegin(); 57 BOOL UpdateRegistryKey(const char *product, const char *version); 58 BOOL UpdateRegistryValue(const char *product, const char *version, const char *name, const char *value); 59 BOOL UpdateRegistryEnd(); 60 61 BOOL WriteUninstall(const char *prog, BOOL bNoCopy); 62 BOOL MakeLog(void); 63 64 void CleanUp(void); 65 66 void AppendFileNew(const char *filename); 67 68 private: 69 BOOL m_bNoCopy; 70 BOOL m_bUseCommon; 71 BOOL m_bQuit; 72 73 // Source directory 74 char m_szSourceDir[MAXSTR]; 75 76 // File containing list of files to install 77 char m_szFileList[MAXSTR]; 78 79 // Target directory for program and fonts. 80 char m_szTargetDir[MAXSTR]; 81 82 // Target Group for shortcut 83 char m_szTargetGroup[MAXSTR]; 84 85 // Directory where the Start Menu is located. 86 char m_szPrograms[MAXSTR]; 87 88 // Name used for uninstall 89 char m_szUninstallName[MAXSTR]; 90 91 // Main directory prefix, where log files should be written 92 char m_szMainDir[MAXSTR]; 93 94 // Full directory where log files should be written 95 char m_szLogDir[MAXSTR]; 96 97 // Temporary log files for uninstall 98 char m_szFileNew[MAXSTR]; 99 char m_szRegistryNew[MAXSTR]; 100 char m_szRegistryOld[MAXSTR]; 101 char m_szShellNew[MAXSTR]; 102 char m_szShellOld[MAXSTR]; 103 104 // Log files 105 FILE * m_fLogNew; 106 FILE * m_fLogOld; 107 108 109 BOOL SetRegistryValue(HKEY hkey, const char *value_name, const char *value); 110 BOOL CreateShellLink(LPCSTR description, LPCSTR program, LPCSTR arguments, LPCSTR icon = NULL, int nIconIndex = 0); 111 void CopyFileContents(FILE *df, FILE *sf); 112 void ResetReadonly(const char *filename); 113 114 void(*AddMessageFn)(const char *); 115 116 }; 117 118 119 #endif /* dwinst_INCLUDED */ 120