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 324 by iritscen, Tue May 26 17:52:10 2009 UTC vs.
Revision 487 by iritscen, Wed Dec 30 01:51:38 2009 UTC

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

Diff Legend

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