我开发了一个RCP应用程序,我正在提供p2更新功能。
在我的p2.inf中,我提供更新站点的URL。我不希望用户添加任何网站,因此我禁用了添加网站的选项。我的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,如果用户位置是chennai,那么RCP应用程序应该在chnupdates.com上查找更新。
如何在p2.inf中添加另一个存储库位置?
-Priyank
答案 0 :(得分:2)
您需要以编程方式添加存储库。以下解决方案取自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);
}
}
}