Ошибка приложения ClickOnce: развертывание и приложение не имеют соответствующих зон безопасности
У меня возникают проблемы с приложением ClickOnce с FireFox и Chrome в IE, он отлично работает.
Элемент исключения:
PLATFORM VERSION INFO
Windows : 6.1.7600.0 (Win32NT)
Common Language Runtime : 4.0.30319.239
System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll : 4.0.30319.239 (RTMGDR.030319-2300)
dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll : 4.0.31106.0 (Main.031106-0000)
SOURCES
Deployment url : file:///C:/Users/ibz/Downloads/MyApp.application
IDENTITIES
Deployment Identity : MyApp.application, Version=1.0.1.23, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil
APPLICATION SUMMARY
* Online only application.
* Trust url parameter is set.
ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of C:\Users\ibz\Downloads\MyApp.application resulted in exception. Following failure messages were detected:
+ Deployment and application do not have matching security zones.
COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.
WARNINGS
* The manifest for this application does not have a signature. Signature validation will be ignored.
OPERATION PROGRESS STATUS
* [2/10/2012 4:53:18 PM] : Activation of C:\Users\ibz\Downloads\MyApp.application has started.
* [2/10/2012 4:53:18 PM] : Processing of deployment manifest has successfully completed.
* [2/10/2012 4:53:18 PM] : Installation of the application has started.
ERROR DETAILS
Following errors were detected during this operation.
* [2/10/2012 4:53:18 PM] System.Deployment.Application.InvalidDeploymentException (Zone)
- Deployment and application do not have matching security zones.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.
Пожалуйста, помогите мне решить эту проблему.
Ответы
Ответ 1
Если вы получаете ошибку выше, то она не думает, что вы подписываете манифесты. Убедитесь, что на вкладке "Подписание" установлен флажок и выбран действительный сертификат. Кроме того, публикуете ли вы это в режиме полного доверия или частичного доверия? Если вы выполняете частичное доверие, измените его на Full Trust, особенно если вы выполняете установку через Интернет.
Ответ 2
Загрузка фрагмента ссылки относительной ссылки
Проблема заключается в том, что сообщение об ошибке должно быть ExampleAppName.exe.manifest could not be found
.
Если вы откроете загруженный файл ExampleAppName.application
, вы увидите, что он, вероятно, указывает на путь, например Application Files\ExampleAppName.exe.manifest
, и этот файл не существует локально.
Он по-прежнему работает в IE, потому что IE запускает установщик БЕЗ загрузки файла. Тогда файл манифеста фактически существует в относительном пути к тому, где файл ExampleAppName.application
находится в Интернете.
Вручную конвертировать в абсолютную ссылку
Исправление состоит в том, чтобы изменить файл ExampleAppName.application
и предоставить ему абсолютный путь к тому, где AppName.exe.manifest
существует в Интернете.
Ответ 3
Настроить Visual Studio для включения местоположения обновления
Это работает для проектов VS2008 как минимум:
Свойства → Опубликовать → Обновления → Задайте местоположение обновления http://www.example.com/ApplicationName/
Это добавит раздел <deploymentProvider codebase=... />
в раздел <deployment>
в вашем файле .application
. И это (по крайней мере) Chrome принимает.
Ответ 4
Вам необходимо установить расширение ClickOnce для Chrome и включить его.
Приложение будет запускаться мгновенно без нажатия на загруженное приложение.
Ответ 5
В Visual Studio 2013 я проверил, что эта ошибка вызвана тем, что в параметрах публикации проекта включен параметр "Исключить URL поставщика развертывания".
Project Properties > Publish > Options > Manifests > Un-tick "Exclude deployment provider URL"
В качестве дополнительной меры предосторожности убедитесь, что вы указали свой корневой URL, в котором будет обновляться/устанавливается приложение:
Project Properties > Publish > Updates > Update Location (Provide the root URL where this application will be found)