Приложение, работающее в один клик, переносится с Windows Forms на WPF

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

Каков наилучший способ (читай: самый простой для пользователей) сделать это?

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


person Tyler    schedule 14.05.2010    source источник


Ответы (3)


Я думаю, что вы действительно ДОЛЖНЫ иметь возможность развернуть версию WPF как новую версию приложения Windows Forms.

На какую версию .NET Framework нацелено каждое из приложений?

Имя сборки в обоих проектах одинаковое и URL-адрес установки одинаков? (Для ClickOnce это не имеет ничего общего с projectGUID.)

person RobinDotNet    schedule 17.05.2010

Я не пробовал, но не могли бы вы сделать так, чтобы ваше приложение WPF напрямую заменило ваше приложение WinForms? Если вы публикуете в той же папке, скопируйте правильные идентификаторы GUID из старого проекта в новый проект, он может просто установиться без проблем.

Это не приведет к удалению старых версий, но каждое обновление приложения ClickOnce оставляет старые версии на месте.

В качестве альтернативы вы можете преобразовать существующий проект WinForms в проект WPF? Это просто другой набор ссылок на сборки? Я никогда не писал приложение WPF, так что простите меня, если это явно неправильно.

person Don Kirkby    schedule 14.05.2010

Почему бы просто не присвоить новому приложению WPF те же <ProjectGuid>, <PublishUrl> и т. д. и более высокий основной номер версии?

ClickOnce даже не узнает, что вы перешли с WinForms на технологию WPF.

Обычная функция обновления версии ClickOnce автоматически заменит старый код новым при следующем обновлении приложения (что при желании можно настроить автоматически).

person Ray Burns    schedule 14.05.2010
comment
Я попробовал это, и приложение WinForm не представило диалоговое окно обновления. Когда я запустил приложение WPF, оно было установлено вместе с приложением WinForm. Знаете ли вы, какие части нужно копировать из проекта в проект, чтобы обеспечить одинаковую идентичность? - person Tyler; 14.05.2010
comment
Моя память была туманной, поэтому я провел несколько экспериментов, чтобы подтвердить это. Похоже, что если новый проект имеет такое же имя сборки и подписан одним и тем же открытым ключом, он будет иметь то же удостоверение ClickOnce. Вы уверены, что используете один и тот же сертификат для подписи обоих проектов и оба проекта имеют одинаковое имя? Если бы это было проверено, я бы попробовал скопировать настройки в AssemblyInfo.cs, начиная с <Assembly: Assembly. Если это все еще не работает, я могу попробовать скопировать <ProjectGuid> и <PublishUrl> в .csproj. Надеюсь, что один из них сделает свое дело. - person Ray Burns; 16.05.2010