以前は、Windows XP で Eclipse RCP アプリケーションを自己更新する喜びを味わっていました (これは、社内専用のドキュメント管理システムです)。Windows7 に切り替えた後、アプリケーションが管理者として実行されている場合にのみ更新が実行されます。これはもちろん、自己更新アプリケーションであることの喜びを消し去ります。
セルフ プロビジョニングは、多かれ少なかれこの記事からのコピー/貼り付けです。
インストール フォルダーは C:\Program Files (会社のポリシーなど) にバインドされているため、昇格されたプロセスとして開始されない限り、アプリケーションはこのフォルダーに書き込みを行うことができなくなります。p2 が行うこと (少なくとも壮大なデバッグ セッションの後で私が思うに) は、p2 リポジトリから artifact.xml と content.xml をダウンロードして、ローカルで比較し、更新計画を作成することです。残念ながら、ダウンロードしたファイルを保存できない場合は、単に「更新するものがありません」と表示されます。
共有インストール/バンドルプールを試してみました。ここでは、次のプロパティを持つ p2 director アプリケーションを使用して、バンドルがユーザー ディレクトリにインストールされます。
-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
インストーラーはうまく機能し、アプリケーションが起動する可能性があります (ランチャーが私のユーザー ディレクトリにあることを彼女に伝えた後)。しかし残念なことに、自己プロビジョニングはまだこのようには機能しません。管理者として実行すると、更新されたバンドルと機能が -bundlepool の場所ではなく -destination の場所にダウンロードされます。これは私が期待していたものです。
見逃したスイッチは?