2013-03-24 36 views
0

我開發了一個RCP應用程序,並且提供了p2更新功能。P2.inf:根據位置引用更新站點

在我的p2.inf我提供更新網站的網址。我不希望用戶添加任何網站,因此我禁用了添加網站的選項。我p2.inf樣子:

instructions.configure=\ 
    addRepository(type:0,location:http${#58}//blrupdates.com/Updates);\ 
    addRepository(type:1,location:http${#58}//blrupdates.com/Updates); 

,如果用戶的位置是班加羅爾,RCP應用程序應該去brlupdates.com,如果用戶的位置是欽奈然後RCP應用程序應該在chnupdates.com更新。

如何在p2.inf中添加另一個存儲庫位置?

-Priyank

回答

1

您需要以編程方式添加存儲庫。以下解決方案取自here。另一個解決方案,我不知道它會起作用的是使用重定向。您定義一個p2存儲庫,然後將用戶重定向到基於位置的存儲庫。

import org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement; 
import org.eclipse.equinox.internal.p2.ui.model.ElementUtils; 

@SuppressWarnings("restriction") 
public class P2Util { 
    private static String UPDATE_SITE = "http://www.example.com/update_site"; 

    public static void setRepositories() throws InvocationTargetException { 
    try { 
     final MetadataRepositoryElement element = new MetadataRepositoryElement(null, new URI(UPDATE_SITE), true); 
     ElementUtils.updateRepositoryUsingElements(new MetadataRepositoryElement[] {element}, null); 
    } catch (URISyntaxException e) { 
     e.printStackTrace(); 
     throw new InvocationTargetException(e); 
    } 
    } 
}