Ошибка при запуске приложения WPF clickonce из общего сетевого ресурса - PullRequest
1 голос
/ 06 ноября 2019

У нас есть приложение WPF, опубликованное на сетевом ресурсе с помощью clickonce. Приложение доступно только онлайн. После обновления Windows KB4515842 на клиентских компьютерах мы начали испытывать проблемы, как описано ниже. В приложение не было внесено никаких изменений.

Когда я запускаю приложение с помощью IE, оно загружается и запускается правильно. Однако есть некоторые части приложения, которые не работают, как раньше. У нас есть список с шаблонами для разных типов товаров. Когда элемент выбран, в области отображается дополнительная информация с использованием шаблона в зависимости от выбранного типа элемента в просмотре списка. Шаблоны выбираются с использованием DataTemplateSelector с выбранным элементом в виде списка в качестве входных данных. DataTemplateSelector не запускается после обновления, поэтому информация о выбранном элементе не отображается.

Приложение использует .Net 4.5.2. Проблема возникает как в Windows 7, так и в Windows 10.

Проблема возникает только при запуске приложения через сетевой ресурс. Никаких проблем в Visual Studio или при запуске установленного приложения clickonce из .. \ AppData \ Local \ Apps \ 2.0 ...

Это также работает, когда я развертываю приложение как доступное в автономном режиме (созданные пункты меню «Пуск» и т. Д. )

Удаление обновления также решает проблему. В Windows 7 я удалил KB4519568, в Windows 10 KB4524098 (которые оба включают KB4515842).

Есть идеи, что попробовать дальше?

1 Ответ

0 голосов
/ 07 ноября 2019

Я нашел причину нашей проблемы, поэтому выкладываю решение, если кто-то сталкивается с такой же проблемой.

Выбранный элемент в просмотре списка имел привязку к свойству в нашей модели представления. Свойство в viewmodel выглядело примерно так:

public Shared.Task SelectedTask
{
   get
   {
      return _selectedTask;
   }
   private set
   {
      _selectedTask = value;
      OnPropertyChanged(() => SelectedTask);
   }
}

Я не уверен, как это могло бы работать с модификатором частного доступа для установленной части свойства, но это работало ранее и все еще работает в Visual Studio2017 и при запуске установленной версии приложения clickonce. В любом случае, когда я сделал набор общедоступным, он также работает для нашего развернутого в сети приложения clickonce (событие PropertyChanged вызывается для SelectedTask, а DataTemplateSelector, который прослушивает изменения SelectedTask, возвращает новый DataTemplate).

...