Вопрос

Я работаю в компании, производящей коммерческий продукт, и в настоящее время мы пытаемся предоставить решение, которое позволит некоторым из наших крупных клиентов распространять клиентскую часть нашего приложения через ClickOnce.

Предполагается, что наши клиенты развернут установку ClickOnce на общем сетевом ресурсе, а затем отправят ссылку на манифест приложения клиентам по электронной почте или другим способом.

Мы смогли успешно интегрировать производство установки ClickOnce в нашу автоматическую сборку (с использованием инструментов командной строки Mage), и затем мы можем успешно запустить фактическую установку на клиентском компьютере. Однако после установки и запуска наше приложение создает исключение SecurityException во время выполнения, поскольку ему отказано в доступе к FileIOPermission. Наше приложение требует разрешения FullTrust, но кажется, что если расположение CodeBase исполняющей сборки является сетевым ресурсом, вам предоставляются только разрешения LocalIntranet (в которые не входит FileIOPermission).

Здесь есть статья, которая, похоже, указывает на то, что это довольно распространенная проблема: http://blogs.msdn.com/shawnfa/archive/ 2004/12 / 30 / 344554.aspx

В этой статье предлагается обходной путь с использованием инструмента CasPol, но нам придется запускать его на каждом клиентском компьютере в среде развертывания. Это на самом деле не является проблемой само по себе, это скорее тот факт, что вам требуются права администратора на клиентском компьютере для выполнения того, что делается с помощью инструмента CasPol, и большинство клиентов в нашем среда клиента не имеет этих привилегий.

В том же блоге также была опубликована статья, в которой, похоже, подразумевается, что необходимость запуска исправления CasPol была устранена с выпуском .NET 3.5 SP1: http: //blogs.msdn. ком / shawnfa / архив / 2008/05/12 / FullTrust-на-localintranet.aspx

Тем не менее, я изменил наше приложение, чтобы специально ориентироваться на выпуск платформы SP1, как подробно описано в этой статье: http://msdn.microsoft.com/en-us/library/bb398202 .aspx #

После этого мы все еще сталкивались с тем же SecurityException. Поэтому я применил некоторые специфические настройки ClickOnce SP1, как подробно описано в статье, но все равно не радуюсь. Если я запускаю приложение непосредственно из общего ресурса издательской сети, которому я предоставил разрешения, похоже, только в контексте ClickOnce нам было отказано в них.

Кто-нибудь еще сталкивался с проблемами, подобными этим? Я бы подумал, что если бы в выпуске SP1 фреймворка была проблема с этими разрешениями, кто-то еще заметил бы это до нас, поскольку мы еще даже не поставили решение ClickOnce.

Это было полезно?

Решение

Я думаю, что столкнулся с подобной проблемой в .NET 4.0 с исключением безопасности во время обеда. Решение, которое я нашел, состояло в том, чтобы подписать манифест цифровой подписью с утвержденным сертификатом (а не по умолчанию, который Visual Studio генерирует для вашего проекта).

Это известная " ошибка " (или дизайн) в развернутых манифестах ClickOnce.

Ваш проект подписан?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top