Мы развертываем наше использование приложения ClickOnce, установленный от пути к файлу. Для 24 версий это работало отлично - теперь, на версии 25 я получаю следующую ошибку, после того как приложение установило, и это запускается:
Если я тестирую предыдущее развертывание на той же машине, это работает.
Где я могу даже начать надеяться находить причину этой ошибки? Я уже проверил журналы событий окон - ничто.
Править: Я заметил, что, в то время как диалоговое окно отображено, временный XML-файл 'WER561D.tmp.WERInternalMetadata.xml' сгенерирован в моей временной папке. Вот содержание (это могло бы содержать подсказки, полезные более хорошо осведомленным в этой области, чем I):
6.1
7600
(0x4): Windows 7 Enterprise
Enterprise
7600.16385.x86fre.win7_rtm.090713-1255
1
Multiprocessor Free
X86
1033
CLR20r3
applaunch.exe
2.0.50727.4927
4a275abe
mscorlib
2.0.0.0
4a275af7
4f3
0
System.Security.Security
6.1.7600.2.0.0.256.4
1033
-- removed for privacy reasons --
Другой ключевой пункт - то, что я публикую с помощью Visual Studio, нет никакого ручного явного продолжения редактирования.
Думаю, я определил проблему, хотя не знаю, как это произошло. Сравнение текущего файла проекта с версией, которая работала, показало, среди прочих изменений, эти отличия:
от этого:
<GenerateManifests>true</GenerateManifests>
до этого:
<GenerateManifests>false</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
Если я удалю TargetZone и ApplicationManifest и установлю для GenerateManifests значение false - это сработает.
Согласно MSDN , вы можете просмотреть файлы журналов, чтобы помочь вам. Существует также Устранение неполадок развертываний ClickOnce ] страница, которая может вам помочь.
Похоже, что происходит сбой при проверке на наличие новой версии, так как вы говорите, что это происходит после обновления
Трудно сказать, поскольку информация об оконных ошибках никогда не дает полезной информации, но, спорю, вам там повезет. Обычно так и делаю.
Также, и я знаю, что это маловероятно, поскольку в нем содержится ссылка на system.security, вы что-то изменили, совпадают ли ограничения в сетевой папке для этой версии, и вы добавили какие-либо требования безопасности?
ClickOnce работает правильно только тогда, когда приложение является ДОВЕРЕННЫМ ПРИЛОЖЕНИЕМ (s. Свойства-> Безопасность) и манифестом НЕ включает какие-либо более высокие требования к безопасности UAC, как в следующем файле манфеста:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MaxLine5651v1" type="win32" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Если у вас есть манифест, запрашивающий более высокие привилегии, ClickOnce НЕ примет публикацию вашего проекта.
Я тоже борюсь в этом отношении. Мне нужно приложение для доступа к реестру, журналу и настройкам брандмауэра; и я хочу, чтобы его можно было обновлять онлайн. К сожалению, с ClickOnce это не работает. Любые идеи приветствуются.
- Гохан
Вы изменили приложение с полного доверия на частичное? Вот как это выглядит. Зона интрасети является частью системы безопасности с частичным доверием. Посмотрите вкладку «Безопасность» на страницах свойств вашего проекта.
Во-вторых, на вкладке «Приложение» страницы свойств вашего проекта «Значок и манифест» - каково значение поля манифеста? Это создание приложения без манифеста? Попробуйте установить для него значение «Вставить манифест с настройками по умолчанию» и посмотрите, поможет ли это.