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) |