2012-07-26 41 views
1

我們習慣於在Windows XP(它是一家公司唯一的內部文檔管理系統)上自我更新Eclipse RCP應用程序。現在切換到Windows7後,只有在應用程序以管理員身份運行時纔會執行更新,這當然會消除自我更新應用程序的樂趣。P2自助配置RCP與Windows UAC

自配置是從這個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位置 - 這正是我的預期。

我錯過了什麼開關?

回答

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」)
+1

有趣的一點。 p2.inf包含了將P2儲存庫添加到設置中的指令,因此顯然會觸及程序文件目錄中的文件 - 即使正如我所期望的那樣,可以觸摸由p2.data.area屬性指定的目錄中的文件。但是ApplicationLauncher是做什麼的?手動檢查更新?並且它不會遇到與以前的應用程序相同的問題(嘗試將文件從存儲庫下載到不具備寫入權限的文件夾)? – CodeSeavers 2012-07-27 12:20:52

+1

不,啓動器的配置方式是它只能使用可寫目錄(通常爲:%tmp%| %appdata%| %allusersprofile%| %userprofile%(Win7) – 2012-08-22 09:55:04