【问题标题】:P2 self provisioning RCP vs. Windows UACP2 自配置 RCP 与 Windows UAC
【发布时间】:2012-07-27 15:58:06
【问题描述】:

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

自配置或多或少是从此article复制/粘贴

由于安装文件夹绑定到 C:\Program Files(公司策略...),应用程序可能不再写入此文件夹,除非作为提升的进程启动。 p2 所做的(至少我认为在史诗般的调试会话之后)是从 p2 存储库下载 artifact.xml 和 content.xml 以在本地进行比较并构建更新计划。不幸的是,如果它无法存储下载的文件,它只会显示“无需更新”。

我已经尝试过使用共享安装/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

安装程序运行良好,应用程序可以启动(在告诉她启动器在我的用户目录中之后)。但不幸的是,自我配置仍然不能以这种方式工作。以管理员身份运行将导致在 -destination 位置而不是 -bundlepool 位置下载更新的包和功能 - 这是我所期望的。

我错过了什么开关?

【问题讨论】:

    标签: windows eclipse uac p2


    【解决方案1】:

    我们在这里遇到了类似的问题。原因之一可能是正在安装的 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") 中实际安装和启动应用程序

    【讨论】:

    • 有趣的地方。 p2.inf 包含将 P2 存储库添加到设置的指令,因此显然会触及程序文件目录中的文件——即使如我所料,触及 p2.data.area 属性指定的目录中的文件。但是 ApplicationLauncher 是做什么的呢?手动检查更新?它会不会遇到与应用程序以前相同的问题(尝试将文件从存储库下载到没有写访问权限的文件夹)?
    • 不,启动器的配置方式是它只使用可写目录运行,通常是:%tmp% | %应用数据% | %allusersprofile% | %userprofile% (Win7)
    猜你喜欢
    • 2015-09-12
    • 2011-04-24
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2012-04-03
    • 2013-03-17
    • 2011-03-15
    • 2011-08-17
    相关资源
    最近更新 更多