P2自configurationRCP与Windows UAC

我们习惯了在Windows XP上自我更新的Eclipse RCP应用程序(这是一个公司只有内部文档pipe理系统)的快乐。 现在切换到Windows7后,只有当应用程序以pipe理员身份运行时才会执行更新,这当然会消除自我更新应用程序的乐趣。

自我configuration是从这篇文章或多或less复制/粘贴

由于安装文件夹绑定到C:\ Program Files(公司策略…),应用程序可能不再写入此文件夹,除非作为高级进程启动。 p2所做的(至less我认为在一个史诗般的debugging会话之后)是从p2存储库下载artifact.xml和content.xml以进行本地比较并构build更新计划。 不幸的是,如果它不能存储下载的文件,它只是说“没有更新”。

我已经尝试给共享安装/ bundlepool一个尝试,其中捆绑安装到用户目录使用p2导演应用程序具有以下属性:

-metadataRepository http://someserver/updatesite -artifactRepository http://someserver/updatesite -installIUs my.application.id -roaming -destination "C:\Program Files\MyApplication" -bundlepool C:\Users\me\MyApplication -profile DefaultProfile -profileProperties org.eclipse.update.install.features=true -p2.os win32 -p2.ws win32 -p2.arch x86_64 -Declipse.p2.data.area=C:\Users\me\.p2 

安装程序工作得很好,应用程序可以启动(告诉她后,启动程序在我的用户目录中)。 但不幸的是,自我提供仍然没有这样的工作。 以pipe理员身份运行将导致下载更新的捆绑包和function在目标位置,而不是-bundlepool位置 – 这是我的预期。

我错过了什么开关?

我们在这里遇到了类似的问题。 其中一个原因可能是安装的IU仍然尝试通过p2.inf接触点指令在“C:\ Program Files \ MyApplication”中写入某些内容。 解决方案是部署一个简单的启动程序“C:\ Program Files \ MyApplicationLauncher”,其中:

  1. 执行软件包池更新(dir =“C:\ ProgramData \ MyBundlePool”)
  2. 并实际安装并启动%tmp%(dir =“C:\ Users \ username \ AppData \ Local \ Temp \ MyApplication”)中的应用程序