ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/Installer/trunk/source/installer.h
(Generate patch)

Comparing AE/Installer/trunk/source/installer.h (file contents):
Revision 379 by iritscen, Mon Jun 29 19:23:42 2009 UTC vs.
Revision 499 by iritscen, Wed Mar 3 02:09:02 2010 UTC

# Line 1 | Line 1
1 < #pragma once
2 < /* AE/Mod Installer header file */
1 > /***************************************************************************\
2 > | Project: AE Installer                                                                                                         |
3 > | By: Gumby & Iritscen                                                                                                          |
4 > | File: Installer.h                                                                                                                     |
5 > | Function: Contains the real meat of the installation process.                         |
6 > | Created: 24/05/2009 19:39:00                                                                                          |
7 > \***************************************************************************/
8 >
9   #ifndef DOUBLE_HEADER
10   #define DOUBLE_HEADER
11  
6
12   #include <string>
13   #include <vector>
14 + #include <iostream>
15 + #include "globals.h"
16 + #ifdef WIN32
17 + #ifndef __GUICON_H__
18 + #define __GUICON_H__
19 + #endif
20   #include <fstream>
21 + #include <windows.h>
22 + #include <stdio.h>
23 + #include <fcntl.h>
24 + #include <io.h>
25 +
26 + void RedirectIOToConsole();
27 + // maximum mumber of lines the output console should have
28 + static const WORD MAX_CONSOLE_LINES = 500;
29 + #endif
30  
11 using namespace std;
31  
32 + #pragma mark GLOBALS
33   static string SLASHSLASH = "//";
34   static string DIRSLASH = "\\";
35 < string strInstallCfg = "../GameDataFolder/Add.cfg";
36 < static string strInstallerVersion = "1.0";
37 <
38 < #define STRUCT_DEFS
39 < struct ModPackage
40 < {
41 <        bool    isInstalled; //replace with function
42 <        string  name;
43 <        string  modStringName;
44 <        int     modStringVersion;
45 <        bool    hasOnis;
26 <        bool    hasDeltas;
27 <        bool    hasBSL;
28 <        bool    hasDats;
29 <        string  category;
30 <        string  creator;
31 <        bool    isEngine;
32 <        string  readme;
33 <        bool    globalNeeded;
34 <        ModPackage();
35 <        void doOutput()
36 <        {
37 <                cout << "Mod: " << name; cout << "\n"; // remove this when done
38 <                cout << "       String: " << modStringName << " v." << modStringVersion << "\n";
39 <                cout << "       Category: " << category << "\n";
40 <                cout << "       Creator: " << creator << "\n";
41 <                cout << "       HasOnis: " << hasOnis << "\n";
42 <                cout << "       HasBSL: " << hasBSL << "\n";
43 <                cout << "       HasDeltas: " << hasDeltas << "\n";
44 <                cout << "       HasDats: " << hasDats << "\n";
45 <                cout << "       IsEngine: " << isEngine << "\n";
46 <                cout << "       GlobalNeeded: " << globalNeeded << "\n";
47 <                cout << "       Readme: " << readme << "\n";
48 <                cout << "\n";
49 <        }
50 <
51 <             bool operator < (const ModPackage &fs) const
52 <     { return (name < fs.name);}
53 <
54 <     bool operator > (const ModPackage &fs) const
55 <     { return (name > fs.name);}
56 <
57 <     bool operator == (const ModPackage &fs) const
58 <     { return (name == fs.name);}
59 < };
35 > extern bool busy;
36 > extern string strInstallCfg;// = "../GameDataFolder/Add.cfg";
37 > extern Install_info_cfg currentAE, updateAE;
38 > extern bool splitInstances;
39 > extern string strImportOption;
40 > extern string strOniSplit;
41 > extern vector<ModPackage> globalPackages;
42 > extern string strEUFN; // I don't mind long variable names, but even I think strEditionUpdateFolderName is a bit much
43 > #ifndef WIN32
44 > void Sleep(int ms); // crudely converts the Windows sleep() call, which operates in ms, to the Mac sleep() call that operates in seconds
45 > #endif
46  
61 #define METHOD_DEFS
62 // Initialization to default values
63 ModPackage::ModPackage()
64 {
65        isInstalled = true; // replace with function
66        name = "";
67        modStringName = "";
68        modStringVersion = 0;
69        hasOnis = false;
70        hasDeltas = false;
71        hasBSL = false;
72        hasDats = false;
73        category = "";
74        creator = "";
75        isEngine = false;
76        readme = "";
77        globalNeeded = true;
78        //              void doOutput() const
79        //              { };
80 }
47  
48 < #define FUNCTION_PROTOTYPES
48 > #pragma mark PROTOTYPES
49   int mainMenu(void);
50 < int globalizeData(void);
50 > vector<string> getInstallString(string = strInstallCfg);
51   int installPackages(void);
52   int uninstallPackages(void);
53   int listInstalledPackages(void);
54   int printInstallerInfo(void);
89 vector<ModPackage> getPackages(void);
55   ModPackage fileToModPackage(fstream&);
56 < void recompileAll(vector<string>);
57 < vector<string> getInstallString(string = strInstallCfg);
56 > bool StringIsLegalPathForDeletion(string);
57 > vector<ModPackage> getPackages(string packageDir = "./packages");
58 > void MakePathLocalToGlobalize(string*);
59 > bool SortBySize(string, string);
60   void tokenize(const string&, vector<string>&, const string& delimiters = " ");
61 < //bool getDirectoryContents(char , char &);
61 > void StripNewlines(string *);
62   void clearOldDats(void);
63   void writeInstalledMods( vector<string> );
64 < void setStatusArea( string );
65 < void setProgressBar( int );
99 <
100 < //New copy(path, path) function. Too lazy to implement my own, this is basically how I would have done it though.
101 < //No, really. :)
102 < //Move to utilities.cpp when the time comes.
103 < using namespace boost::filesystem;
104 < using namespace std;
105 <
106 < void copy_directory( const path & from_dir_ph,
107 <                                        const path & to_dir_ph );
108 <
109 < void copy( const path & from_file_ph,
110 <                  const path & to_file_ph );
111 <
112 <
113 < // this function copies files and directories. If copying a
114 < // directory to a directory, it copies recursively.
115 <
116 < //pardon the mess, I did this at midnight, and had to fix a bug
117 < void copy( const path & from_ph,
118 <                  const path & to_ph )
119 < {
120 <        cout << to_ph.string() << "\n";
121 <        // Make sure that the destination, if it exists, is a directory
122 <        if((exists(to_ph) && !is_directory(to_ph)) || (!exists(from_ph))) cout << "error";
123 <        if(!is_directory(from_ph))
124 <        {
125 <                
126 <                if(exists(to_ph))
127 <                {
128 <                        copy_file(from_ph,to_ph/from_ph.filename());
129 <                }
130 <                else
131 <                {
132 <                        try{
133 <                                
134 <                                copy_file(from_ph,to_ph);
135 <                        }
136 <                        catch (exception ex){
137 <                                cout << from_ph.string() << " to " << to_ph.string() << "\n";
138 <                        }
139 <                }
140 <                
141 <        }
142 <        else if(from_ph.filename() != ".svn")
143 <        {
144 <                path destination;
145 <                if(!exists(to_ph))
146 <                {
147 <                        destination=to_ph;
148 <                }
149 <                else
150 <                {
151 <                        destination=to_ph/from_ph.filename();
152 <                }
153 <                //not sure what this did, its going away though. probably error checking ;)
154 <                //copy_directory(from_ph,destination);
155 <                
156 <                for(directory_iterator i(from_ph); i!=directory_iterator(); ++i)
157 <                {
158 <                        //the idiot who coded this in the first place (not me)
159 <                        //forgot to make a new directory. Exception city. x_x
160 <                        create_directory(destination);
161 <                        copy(*i,destination/i->filename());
162 <                }
163 <        }
164 < }
165 <
166 < void copy_directory( const path &from_dir_ph,
167 <                                        const path &to_dir_ph)
168 < {
169 <        if(!exists(from_dir_ph) || !is_directory(from_dir_ph)
170 <           || exists(to_dir_ph))
171 <                cout << !exists(from_dir_ph) << " " << !is_directory(from_dir_ph)
172 <                << " " << exists(to_dir_ph);
173 <        //boost::throw_exception( filesystem_error(
174 <        //"boost::filesystem::copy_directory",
175 <        //from_dir_ph, to_dir_ph, boost::system::error_code() ));
176 <        
177 < # ifdef BOOST_POSIX
178 <        struct stat from_stat;
179 <        if ( (::stat( from_dir_ph.string().c_str(), &from_stat ) != 0)
180 <                || ::mkdir(to_dir_ph.native_directory_string().c_str(),
181 <                                   from_stat.st_mode)!=0)
182 < # endif
183 <                //      boost::throw_exception( filesystem_error(
184 <                //      //"boost::filesystem::copy_directory",
185 <                //      from_dir_ph, to_dir_ph, boost::system::error_code()));
186 <                }
187 <
188 < #endif
189 <
190 < #ifdef WIN32
191 <
192 < #ifndef __GUICON_H__
193 <
194 < #define __GUICON_H__
195 <
196 <
197 <
198 < void RedirectIOToConsole();
199 <
200 <
201 <
202 < #endif
64 > void copyBSL( string, vector<string>&, ModPackage );
65 > bool ReadInstallInfoCfg(fstream *, Install_info_cfg *);
66  
67   /* End of File */
68  
206
207 #include <windows.h>
208
209 #include <stdio.h>
210
211 #include <fcntl.h>
212
213 #include <io.h>
214
215 #include <iostream>
216
217 #include <fstream>
218
219 #ifndef _USE_OLD_IOSTREAMS
220
221 using namespace std;
222
223 #endif
224
225 // maximum mumber of lines the output console should have
226
227 static const WORD MAX_CONSOLE_LINES = 500;
228
229
230 void RedirectIOToConsole()
231
232 {
233        
234        int hConHandle;
235        
236        long lStdHandle;
237        
238        CONSOLE_SCREEN_BUFFER_INFO coninfo;
239        
240        FILE *fp;
241        
242        // allocate a console for this app
243        
244        AllocConsole();
245        
246        // set the screen buffer to be big enough to let us scroll text
247        
248        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),
249                                                          
250                                                           &coninfo);
251        
252        coninfo.dwSize.Y = MAX_CONSOLE_LINES;
253        
254        SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),
255                                                          
256                                                           coninfo.dwSize);
257        
258        // redirect unbuffered STDOUT to the console
259        
260        lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
261        
262        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
263        
264        fp = _fdopen( hConHandle, "w" );
265        
266        *stdout = *fp;
267        
268        setvbuf( stdout, NULL, _IONBF, 0 );
269        
270        // redirect unbuffered STDIN to the console
271        
272        lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
273        
274        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
275        
276        fp = _fdopen( hConHandle, "r" );
277        
278        *stdin = *fp;
279        
280        setvbuf( stdin, NULL, _IONBF, 0 );
281        
282        // redirect unbuffered STDERR to the console
283        
284        lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
285        
286        hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
287        
288        fp = _fdopen( hConHandle, "w" );
289        
290        *stderr = *fp;
291        
292        setvbuf( stderr, NULL, _IONBF, 0 );
293        
294        
295        // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
296        
297        // point to console as well
298        
299        ios::sync_with_stdio();
300        
301 }
302
303
304
69   //End of File
70  
71 <
308 <
309 <
310 <
311 <
312 < #endif
71 > #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)