2011-08-16 61 views
4

我使用Eclipse 3.7開發一個項目,我需要做一些事情,使用已安裝的插件和功能的信息:使用春分P2 - 關於已安裝的功能和插件獲取信息

我使用P2供應功能允許軟件更新。

1:我需要獲取已安裝且當前正在運行的插件和功能的列表。我需要類似「安裝的軟件」中顯示的內容,可以通過「幫助>關於>安裝詳細信息」查看。

注意:我將使用此信息來獲取有關已安裝功能的數據,例如版本號和說明。

2:我需要獲取最近安裝的軟件列表。我需要類似於「安裝歷史」中顯示的內容,可以通過「幫助>關於>安裝詳細信息」查看。

注:我將使用此信息添加功能來清除較舊的安裝。像「只保留最後五次安裝」。

回答

4
import org.eclipse.core.runtime.Platform; 
import org.eclipse.equinox.p2.engine.IProfileRegistry; 
import org.eclipse.equinox.p2.metadata.IInstallableUnit; 
import org.eclipse.equinox.p2.metadata.Version; 
import org.eclipse.equinox.p2.operations.ProvisioningSession; 
import org.eclipse.equinox.p2.query.IQueryResult; 
import org.eclipse.equinox.p2.query.IQueryable; 
import org.eclipse.equinox.p2.query.QueryUtil; 
import org.eclipse.equinox.p2.ui.ProvisioningUI; 

... 


try { 
    ProvisioningUI provisioningUI = ProvisioningUI.getDefaultUI(); 

    if (null == provisioningUI) { 
     return; 
    } 

    String profileId = provisioningUI.getProfileId(); 

    ProvisioningSession provisioningSession = provisioningUI.getSession(); 

    if (null == provisioningSession) { 
     return; 
    } 

    IQueryable<IInstallableUnit> queryable = ((IProfileRegistry) provisioningSession.getProvisioningAgent().getService(IProfileRegistry.SERVICE_NAME)) 
      .getProfile(profileId); 


    if (null == queryable) { 
     return; 
    } 

    // to get the product ID 
    //String pId = Platform.getProduct().getId(); 

    String pId = "feature.1"; 

    if (null != queryable) { 
     IQueryResult<IInstallableUnit> iqr = queryable.query(QueryUtil.createIUQuery(pId), null); 

     if (null != iqr) { 
      Iterator<IInstallableUnit> ius = iqr.iterator(); 
      if(ius.hasNext()) { 
       IInstallableUnit iu = ius.next(); 
       Version v = iu.getVersion(); 

       if (null != v) { 
        System.out.println("ID: " + iu.getId() + " | IU: " + iu.toString() + " | Version: " + v.toString()); 
       } 
      } 
     } 
    } 
} catch (Exception e) { 
    System.out.println(e.getStackTrace()); 
    return; 
} 
+0

+1非常有幫助。正是我需要的。 –