static std::string prevInstallPkgId = std::string("");
static std::string prevFinishPkgId = std::string("");
+// initialize static vector to support multi-package install scenario
+static void tacInitialize()
+{
+ nugetPackagesAssembliesSha.clear();
+ tacDB.clear();
+ createDirectories.clear();
+ createLibraries.clear();
+ updateTac.clear();
+ updateTlc.clear();
+}
+
static void createSHA256Info(std::string sha256Info, std::string nugetPackage)
{
std::ofstream ofs(sha256Info, std::ios::app);
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_INSTALL =====]");
_INFO("PackageID : %s", pkgId.c_str());
+ tacInitialize();
+
// Can be multiple apps in one package
if (strcmp(pkgId.c_str(), prevInstallPkgId.c_str()) == 0) {
_INFO("TAC Plugin(INSTALL) already run for same pkgId (%s)", pkgId.c_str());
}
if (generateTAC(pkgId, binPath) != 0) {
+ tac_closeDB();
return -1;
}
///// TLC /////
if (tlc_createDB() != 0) {
+ tac_closeDB();
return -1;
}
copyLibraryCreateSymlink(pkgId, getLibrariesInfo(rootPath));
+ tac_closeDB();
+ tlc_closeDB();
return 0;
}
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_UPGRADE =====]");
_INFO("PackageID : %s", pkgId.c_str());
+ tacInitialize();
+
// Can be multiple apps in one package
if (strcmp(pkgId.c_str(), prevInstallPkgId.c_str()) == 0) {
_INFO("TAC Plugin(UPGRADE) already run for same pkgId (%s)", pkgId.c_str());
bool skipTLC = false;
if (tacDB.empty()) {
if (tac_deleteDB(pkgId, "") != 0) {
+ tac_closeDB();
return -1;
}
tacUpdateDB(pkgId);
skipTLC = true;
} else {
if (generateTAC(pkgId, binPath) != 0) {
+ tac_closeDB();
return -1;
}
if (!isExits) {
if (tac_deleteDB(pkgId, unp) != 0) {
tacState = TAC_STATE_RESTORE;
+ tac_closeDB();
return -1;
}
}
///// TLC /////
if (tlc_createDB() != 0) {
+ tac_closeDB();
return -1;
}
updateTlc = tlc_selectDB(pkgId);
if (tlc_deleteDB(pkgId) != 0) {
+ tac_closeDB();
+ tlc_closeDB();
return -1;
}
copyLibraryCreateSymlink(pkgId, skipTLC ? std::vector<std::string>() : getLibrariesInfo(rootPath));
+ tac_closeDB();
+ tlc_closeDB();
+
return 0;
}
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_UNINSTALL =====]");
_INFO("PackageID : %s", pkgId.c_str());
+ tacInitialize();
+
// Can be multiple apps in one package
if (strcmp(pkgId.c_str(), prevInstallPkgId.c_str()) == 0) {
_INFO("TAC Plugin(UNINSTALL) already run for same pkgId (%s)", pkgId.c_str());
if (tac_deleteDB(pkgId, "") != 0) {
tacState = TAC_STATE_RESTORE;
+ tac_closeDB();
return -1;
}
tacUpdateDB(pkgId);
///// TLC /////
if (tlc_openDB() != 0) {
+ tac_closeDB();
return -1;
}
updateTlc = tlc_selectDB(pkgId);
if (tlc_deleteDB(pkgId) != 0) {
+ tac_closeDB();
+ tlc_closeDB();
return -1;
}
tlcUpdateDB(pkgId);
+ tac_closeDB();
+ tlc_closeDB();
+
return 0;
}