std::string execName;
std::string binPath;
static sqlite3 *tac_db = NULL;
+bool tacPluginInstalled = false;
+bool tacPluginFinished = false;
bool metadataCheck(GList *list)
{
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_INSTALL =====]");
_INFO("PackageID : %s", pkgId);
+ // Can be multiple apps in one package
+ if (tacPluginInstalled) {
+ _INFO("TAC plugin already installed");
+ return 0;
+ }
+ tacPluginInstalled = true;
+
if (!appTypeCheck(std::string(pkgId))) {
_INFO("App type is not dotnet");
return 0;
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_UPGRADE =====]");
_INFO("PackageID : %s", pkgId);
+ // Can be multiple apps in one package
+ if (tacPluginInstalled) {
+ _INFO("TAC plugin already upgraded");
+ return 0;
+ }
+ tacPluginInstalled = true;
+
if (!appTypeCheck(std::string(pkgId))) {
_INFO("App type is not dotnet");
return 0;
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_UNINSTALL =====]");
_INFO("PackageID : %s", pkgId);
+ // Can be multiple apps in one package
+ if (tacPluginInstalled) {
+ _INFO("TAC plugin already uninstalled");
+ return 0;
+ }
+ tacPluginInstalled = true;
+
status = "uninstall";
tac_db = dbOpen(TAC_APP_LIST_DB);
if (!tac_db) {
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_CLEAN =====]");
_INFO("PackageID : %s", pkgId);
+ // Can be multiple apps in one package
+ if (tacPluginFinished) {
+ _INFO("TAC plugin already finished(CLEAN)");
+ return 0;
+ }
+ tacPluginFinished = true;
+
if (tac_db) {
dbClose(tac_db);
tac_db = NULL;
_DBG("[===== PKGMGR_MDPARSER_PLUGIN_UNDO =====]");
_INFO("PackageID : %s", pkgId);
+ // Can be multiple apps in one package
+ if (tacPluginFinished) {
+ _INFO("TAC plugin already finished(UNDO)");
+ return 0;
+ }
+ tacPluginFinished = true;
+
if (tac_db) {
dbRollback(tac_db);
tac_db = NULL;