1004 |
|
} |
1005 |
|
} |
1006 |
|
} |
1007 |
+ |
else |
1008 |
+ |
{ |
1009 |
+ |
file.close(); |
1010 |
+ |
continue; |
1011 |
+ |
} |
1012 |
+ |
file.close(); |
1013 |
+ |
|
1014 |
+ |
file.open( ("packages" + install_iter->path().filename() + "/Mod_Info.cfg").c_str()); |
1015 |
+ |
if (!file.fail()) |
1016 |
+ |
{ |
1017 |
+ |
ModPackage installedPackage = fileToModPackage(file, install_iter->path().filename()); |
1018 |
+ |
} |
1019 |
+ |
else |
1020 |
+ |
{ |
1021 |
+ |
file.close(); |
1022 |
+ |
return UPDATE_THIRD_PARTY; |
1023 |
+ |
} |
1024 |
+ |
file.close(); |
1025 |
+ |
if(((string)INSTALLER_VERSION).compare(updatePackage.installerVersion) < 1 && updatePackage.modStringVersion > installedPackage.modStringVersion) { |
1026 |
+ |
return UPDATE_THIRD_PARTY; |
1027 |
+ |
} |
1028 |
|
} |
1029 |
|
} |
1030 |
|
catch (exception & ex) { |
1286 |
|
return true; // returning 'true' tells the Installer to quit itself ASAP so it can be replaced by the process that is now running |
1287 |
|
} |
1288 |
|
|
1289 |
+ |
|
1290 |
+ |
void CrawlPackages(string pathToUpdate, string strPathToPackages) { |
1291 |
+ |
try{ |
1292 |
+ |
directory_iterator end; |
1293 |
+ |
for ( directory_iterator update_iter( pathToUpdate ); |
1294 |
+ |
update_iter != end; |
1295 |
+ |
++update_iter ) |
1296 |
+ |
{ |
1297 |
+ |
|
1298 |
+ |
ModPackage installedPackage, updatePackage; |
1299 |
+ |
string updateStr = update_iter->path().string() + "/Mod_Info.cfg"; |
1300 |
+ |
if ( !boost::iequals(update_iter->path().filename(),"Edition") |
1301 |
+ |
&& !boost::iequals(update_iter->path().filename(),"Edition-patch") |
1302 |
+ |
&& is_directory( update_iter->path() ) |
1303 |
+ |
&& exists( update_iter->path().string() + "/Mod_Info.cfg" ) ) |
1304 |
+ |
{ |
1305 |
+ |
bool update = 0; |
1306 |
+ |
fstream file; |
1307 |
+ |
file.open( (update_iter->path().string() + "/Mod_Info.cfg").c_str()); |
1308 |
+ |
if (!file.fail()) |
1309 |
+ |
{ |
1310 |
+ |
updatePackage = fileToModPackage(file, update_iter->path().filename()); |
1311 |
+ |
} |
1312 |
+ |
else |
1313 |
+ |
{ |
1314 |
+ |
file.close(); |
1315 |
+ |
continue; |
1316 |
+ |
} |
1317 |
+ |
file.close(); |
1318 |
+ |
file.clear(); |
1319 |
+ |
if(exists(strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg")) |
1320 |
+ |
{ |
1321 |
+ |
file.open((strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg").c_str()); |
1322 |
+ |
if (!file.fail()) |
1323 |
+ |
{ |
1324 |
+ |
installedPackage = fileToModPackage(file, update_iter->path().filename()); |
1325 |
+ |
file.close(); |
1326 |
+ |
if(updatePackage.modStringVersion > installedPackage.modStringVersion) { |
1327 |
+ |
update = 1; |
1328 |
+ |
} |
1329 |
+ |
} |
1330 |
+ |
else |
1331 |
+ |
{ |
1332 |
+ |
file.close(); |
1333 |
+ |
update = 1; |
1334 |
+ |
} |
1335 |
+ |
file.close(); |
1336 |
+ |
} |
1337 |
+ |
else update = 1; |
1338 |
+ |
if(update) { |
1339 |
+ |
if(exists((path)(strPathToPackages + "/" + updatePackage.modStringName))) |
1340 |
+ |
remove_all((path)(strPathToPackages + "/" + updatePackage.modStringName)); |
1341 |
+ |
rename((path)(pathToUpdate + "/" + updatePackage.modStringName), (path)(strPathToPackages + "/" + updatePackage.modStringName)); |
1342 |
+ |
|
1343 |
+ |
} |
1344 |
+ |
} |
1345 |
+ |
} |
1346 |
+ |
} |
1347 |
+ |
catch (exception & ex) { |
1348 |
+ |
// ex.what(); |
1349 |
+ |
setStatusArea("Warning, handled exception: " + (string)ex.what()); |
1350 |
+ |
} |
1351 |
+ |
} |
1352 |
+ |
|
1353 |
+ |
|
1354 |
+ |
bool ProcessThirdPartyUpdates() { |
1355 |
+ |
CrawlPackages( "../updates", "./packages"); |
1356 |
+ |
return true; |
1357 |
+ |
// globalPackages = getPackages(); |
1358 |
+ |
// refreshMods(globalInstalledMods); |
1359 |
+ |
} |
1360 |
+ |
|
1361 |
+ |
|
1362 |
|
bool ProcessAEUpdate(Install_info_cfg *currentAE, Install_info_cfg *updateAE, bool *installerJustUpdated) |
1363 |
|
{ |
1364 |
|
fstream file; |