今まで使用できていた問題なく利用できたClickOnceアプリケーションがありました。
しかし、突然、起動時にライセンス認証のエラーが出るようになりましたので、忘れないようにメモを残します。
環境
- Windows7 sp1
- .NET Framework 4.5
- ClickOnceアプリは共有フォルダにて配布
- 共有フォルダのアクセス権は、Everyoneでフルコントロール
症状
共有フォルダ上に置いたClickOnceアプリのsetup.exeファイルを実行しても、エラーが出てインストールができませんでした。
エラーの詳細なログは以下の通りです(一部改変)。
プラットフォームのバージョン情報
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.18063
System.Deployment.dll : 4.0.30319.34244 built by: FX452RTMGDR
clr.dll : 4.0.30319.18063 built by: FX45RTMGDR
dfdll.dll : 4.0.30319.34244 built by: FX452RTMGDR
dfshim.dll : 4.0.31106.0 (Main.031106-0000)
ソース
配置の URL : file:///%USERPROFILE%/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/***...
エラーの概要
以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。
* %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\***.appref-ms| のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました:
+ パス '%USERPROFILE%\AppData\Local\Temp\Deployment\WE8AH9KP.H8M' へのアクセスが拒否されました。
コンポーネント ストア トランザクションの失敗の概要
トランザクション エラーは検出されませんでした。
警告
この操作中に警告は発生しませんでした。
操作の進行状況
* [2014/11/** *:*:**] : %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\***.appref-ms| のライセンス認証が開始されました。
* [2014/11/** *:*:*] : 配置で指定されたように必要な更新チェックを実行しています。
エラーの詳細
この操作中に次のエラーが検出されました。
* [2014/11/** *:*:*] System.UnauthorizedAccessException
- パス '%USERPROFILE%\AppData\Local\Temp\Deployment\WE8AH9KP.H8M' へのアクセスが拒否されました。
- ソース: mscorlib
- スタック トレース:
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
場所 System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirect(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
場所 System.Deployment.Application.DownloadManager.DownloadDeploymentManifest(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options)
場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState& subState, String& errorPageUrl)
場所 System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, String& errorPageUrl, TempFile& deployFile)
場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
場所 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
コンポーネント ストア トランザクションの詳細
トランザクション情報はありません。
対応
似たような事例がないかを調べてみると、以下の掲示板がありました。
ActiveDirectory環境下でPowerUsersにてClickOnceアプリケーションをインストールするには?
エラーの詳細が異なりますが、原因はアクセス権に関するもののようでした。
次に、 %USERPROFILE%\AppData\Local\Temp\Deploymentフォルダのアクセス権を調べてみたところ、なぜかアクセス権が消えていました。
そのため、上記のフォルダのアクセス権にログオンしているユーザーを追加してみたところ、エラーが出なくなりインストールすることができました。
ちなみに、発生した根本的な原因は分かりませんでした...