| 1274 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1275 | 
   | 
 bool ProcessAEUpdate(Install_info_cfg *currentAE, Install_info_cfg *updateAE, bool *installerJustUpdated) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1276 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 | 1277 | 
 + | 
         try { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1278 | 
   | 
         fstream file; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1279 | 
   | 
         string line; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1280 | 
   | 
         vector<string> tokens, updateStarted; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1294 | 
   | 
         string strOniApp = "Oni.exe"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1295 | 
   | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1296 | 
   | 
         string strOniApp = "Oni.app"; | 
 
 
 
 
 
 
 
 
 
 | 1296 | 
 – | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1297 | 
   | 
         bool needNewTrashDir = false; | 
 
 
 
 
 
 
 
 
 | 1298 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 | 1299 | 
 + | 
          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1300 | 
   | 
         bool readingVerAndDate = false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1301 | 
   | 
          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1302 | 
   | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 | 1303 | 
 < | 
         string strTrashDir = "Trash\\"; // string unused in Windows because files are simply deleted | 
 
 
 
 
 
 
 
 
 
 | 1303 | 
 > | 
         //string strTrashDir = "Trash\\"; // string unused in Windows because files are simply deleted | 
 
 
 
 
 
 
 
 
 
 
 
 | 1304 | 
   | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1305 | 
   | 
         FILE *fUserName = NULL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1306 | 
   | 
         char chrUserName[32]; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1335 | 
   | 
                         if (readingVerAndDate && tokens.capacity() >= 3) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1336 | 
   | 
                                 tokenize(tokens[2], updateStarted, "-"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1337 | 
   | 
                 } | 
 
 
 
 
 
 
 
 
 | 1338 | 
 + | 
 #ifndef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1339 | 
   | 
                 if (updateStarted.capacity() < 3) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1340 | 
   | 
                         needNewTrashDir = true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1341 | 
   | 
                 else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1345 | 
   | 
                         if (!exists(strTrashDir)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1346 | 
   | 
                                 needNewTrashDir = true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1347 | 
   | 
                 } | 
 
 
 
 
 
 
 
 
 | 1348 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1349 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1350 | 
   | 
 #ifndef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1351 | 
   | 
         if (!*installerJustUpdated || needNewTrashDir) // prepare a new directory for deleted files to go to | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1363 | 
   | 
         if (exists(strPathToEUFN + strOniApp)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1364 | 
   | 
         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1365 | 
   | 
                 if (exists(strOniApp)) | 
 
 
 
 
 
 
 
 
 | 1366 | 
 + | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 | 1367 | 
 + | 
                         remove((path)strOniApp); | 
 
 
 
 
 
 
 
 
 | 1368 | 
 + | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1369 | 
   | 
                         rename((path)strOniApp, (path)(strTrashDir + strOniApp)); | 
 
 
 
 
 
 
 
 
 | 1370 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1371 | 
   | 
                 rename((path)(strPathToEUFN + strOniApp), (path)strOniApp); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1372 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1373 | 
   | 
         if (updateAE->OniSplitVersion.compare(currentAE->OniSplitVersion) >= 1) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1375 | 
   | 
                 if (exists(strPathToEUFNInstall + strOniSplit)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1376 | 
   | 
                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1377 | 
   | 
                         if (exists(strOniSplit)) | 
 
 
 
 
 
 
 
 
 | 1378 | 
 + | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 | 1379 | 
 + | 
                                 remove((path)strOniSplit); | 
 
 
 
 
 
 
 
 
 | 1380 | 
 + | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1381 | 
   | 
                                 rename((path)strOniSplit, (path)(strTrashDir + strOniSplit)); | 
 
 
 
 
 
 
 
 
 | 1382 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1383 | 
   | 
                         rename((path)(strPathToEUFNInstall + strOniSplit), (path)strOniSplit); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1384 | 
   | 
                 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1385 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1389 | 
   | 
                 if (exists(strPathToEUFN + strDaodan)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1390 | 
   | 
                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1391 | 
   | 
                         if (exists(("../" + strDaodan))) | 
 
 
 
 
 
 
 
 
 
 
 
 | 1392 | 
 < | 
                                 rename((path)("../" + strDaodan), (path)(strTrashDir + strDaodan)); | 
 
 
 
 
 
 
 
 
 
 | 1392 | 
 > | 
                                 remove((path)("../" + strDaodan)); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1393 | 
   | 
                         rename((path)(strPathToEUFN + strDaodan), (path)("../" + strDaodan)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1394 | 
   | 
                 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1395 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1398 | 
   | 
                 if (exists(strPathToEUFNInstall + strWinGUI)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1399 | 
   | 
                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1400 | 
   | 
                         if (exists((path)strWinGUI)) | 
 
 
 
 
 
 
 
 
 
 
 
 | 1401 | 
 < | 
                                 rename((path)strWinGUI, (path)(strTrashDir + strWinGUI)); | 
 
 
 
 
 
 
 
 
 
 | 1401 | 
 > | 
                                 remove((path)strWinGUI); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1402 | 
   | 
                         if (exists(strWinGUILang)) | 
 
 
 
 
 
 
 
 
 
 
 
 | 1403 | 
 < | 
                                 rename((path)strWinGUILang, (path)(strTrashDir + strWinGUILang)); | 
 
 
 
 
 
 
 
 
 
 | 1403 | 
 > | 
                                 remove((path)strWinGUILang); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1404 | 
   | 
                         rename((path)(strPathToEUFNInstall + strWinGUI), (path)strWinGUI); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1405 | 
   | 
                         rename((path)(strPathToEUFNInstall + strWinGUILang), (path)strWinGUILang); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1406 | 
   | 
                 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1433 | 
   | 
                         while (curPos != string::npos && curPos < thePath.size()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1434 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1435 | 
   | 
                                 aParentPath = aParentPath + thePath.substr(lastPos, curPos - lastPos); | 
 
 
 
 
 
 
 
 
 | 1436 | 
 + | 
 #ifndef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1437 | 
   | 
                                 if (!exists(strTrashDir + aParentPath)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1438 | 
   | 
                                         create_directory(strTrashDir + aParentPath); | 
 
 
 
 
 
 
 
 
 | 1439 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1440 | 
   | 
                                 lastPos = curPos + 1; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1441 | 
   | 
                                 curPos = thePath.find("/", lastPos); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1442 | 
   | 
                                 aParentPath = aParentPath + "/"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1481 | 
   | 
         for (vector<string>::iterator iter = filesToMove.begin(); iter != filesToMove.end(); iter++) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1482 | 
   | 
         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1483 | 
   | 
                 if (exists(strPathToPackages + strGlobalize + *iter)) | 
 
 
 
 
 
 
 
 
 | 1484 | 
 + | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 | 1485 | 
 + | 
                         remove((path)(strPathToPackages + strGlobalize + *iter)); | 
 
 
 
 
 
 
 
 
 | 1486 | 
 + | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1487 | 
   | 
                         rename((path)(strPathToPackages + strGlobalize + *iter), (path)(strTrashDir + *iter)); | 
 
 
 
 
 
 
 
 
 | 1488 | 
 + | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1489 | 
   | 
                 rename((path)(strPathToEUFNPackages + strGlobalize + *iter), (path)(strPathToPackages + strGlobalize + *iter)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1490 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1491 | 
   | 
          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1492 | 
   | 
         // Clean up after ourselves, trashing any packages or programs in the update package that are not newer than the current AE | 
 
 
 
 
 
 
 
 
 | 1493 | 
 + | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 | 1494 | 
 + | 
         remove((path)strPathToEUFN); | 
 
 
 
 
 
 
 
 
 | 1495 | 
 + | 
 #else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1496 | 
   | 
         create_directory(strTrashDir + "Unneeded update files"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1497 | 
   | 
         rename((path)strPathToEUFN, (path)(strTrashDir + "Unneeded update files/" + strEUFN)); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1498 | 
 < | 
          | 
 
 
 
 
 
 
 
 
 
 | 1498 | 
 > | 
 #endif | 
 
 
 
 
 
 
 
 
 
 
 
 | 1499 | 
   | 
         // Write to log that we are finished with update | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1500 | 
   | 
         ptime end_time(second_clock::local_time()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1501 | 
   | 
         string progressMsg2 = "Edition was updated to:\n" + | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1516 | 
   | 
         wxCommandEvent e; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1517 | 
   | 
         TheWindow->OnRefreshButtonClick( e ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1518 | 
   | 
         return true; | 
 
 
 
 
 
 
 
 
 | 1519 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 1520 | 
 + | 
         catch (exception & ex) | 
 
 
 
 
 
 
 
 
 | 1521 | 
 + | 
         { | 
 
 
 
 
 
 
 
 
 | 1522 | 
 + | 
                 setStatusArea("Warning, handled exception: " + (string)ex.what()); | 
 
 
 
 
 
 
 
 
 | 1523 | 
 + | 
                 return false; | 
 
 
 
 
 
 
 
 
 | 1524 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 1525 | 
 + | 
          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1526 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1527 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1528 | 
   | 
 void ProcessPackageUpdates(string pathToUpdate, string strPathToPackages) |