2010-03-27 4 views
1

Мы создали красиво оформленное настольное приложение .NET WPF. Мы устанавливаем приложение с помощью InnoSetup, и если .NET 3.5 нет, он автоматически устанавливает его. Однако пакет для загрузки .NET 3.5 огромен, и мы выяснили, что из-за этого около 30% пользователей не заканчивают установку.Как преобразовать приложение .NET WPF в Windows Forms?

Очевидным решением является перекодирование всего в .NET 1.1 с помощью Windows Forms, но это крупная разработка, которая займет несколько недель. Кроме того, мы столкнулись бы с дилеммой, если поддерживать обе версии (и использовать innosetup, чтобы выбрать правильный) или просто перевернуть WPF все вместе.

Есть ли простой способ преобразования WPF в Windows Forms? Или у нас есть альтернативные варианты?

Спасибо!

+4

Я предполагаю, что вы имеете в виду .NET 2.0 вместо .NET 1.1? Вы уже ознакомились с профилем клиента .NET 3.5? Он включает в себя сокращенный набор сборок, которые обычно необходимы для клиентских (WPF-) приложений: http://blogs.windowsclient.net/trickster92/archive/2008/05/21/introducing-the-net-framework-client-profile .aspx –

+0

@divo: Janusz, вероятно, * означает * означает .NET 1.1, поскольку он (немного) более вездесущий, чем 2.0, у которого все еще есть установщик с 23 MB. – MusiGenesis

+0

@MusiGenesis: Я так не думаю. Я давно видел машину без установки .NET 2.0. .NET 2.0 поставляется с WinXP SP3, Vista и Win7 (где включен 3.5 SP1), тогда как .NET 1.1 никогда не был включен в какую-либо версию Windows. –

ответ

6

Преобразование WPF в WinForms не является тривиальным, конечно, нет автоматизированного способа, и если вы хотите вернуться к .net 1.1, вы потеряете всю нагрузку других функций, таких как дженерики и т. Д., Поэтому это не просто пользовательский интерфейс вы будете меняться.

Лучшим решением было бы нацелить .net client profile. Это намного меньше.

Если вы можете подождать несколько недель, профиль клиента в .net 4.0 значительно улучшит автономную установку и поддержку платформы. См. here и here.

+0

3.5 is ~ 28mb (но это только веб-версия - прочитайте ссылки, чтобы узнать, как это работает, возможно, оно вернется к полной установке). 4.0 - это правильная загружаемая версия и 30-50mb в зависимости от платформы. –

+0

Спасибо всем за ваши мысли. Это очень полезно. Я не знал о профиле клиента .net, и это может быть что-то, что может улучшить преобразование загрузки в установку без боли при повторном приложении для .NET 1.1/2 Я буду экспериментировать с профилем клиента .net и проверять новые версия также. – Janusz

1

Вы можете использовать .NET Client Profile, представленный в .NET 3.5 SP1, чтобы уменьшить размер загрузки, необходимой для запуска приложения на компьютерах без установленной платформы .NET Framework 3.5.

Профиль клиента .NET составляет около 28 МБ, как описано here.

Также обратите внимание на this site, чтобы определить наименьшую, самую легкую загрузку, необходимую для получения .NET Framework в вашей системе.

1

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

Некоммерческие части вашей программы могут быть легко перенесены обратно (возможно, без каких-либо изменений) IFF (если и только если), они не ссылаются на материал post-2.0 (например, LINQ) ,

+0

Даже если они используют LINQ, их можно легко сбрасывать с помощью компилятора C# 3.0 для таргетинга на фреймворк 2.0 и передавать приложение LINQ (например, Mono) с приложением. Но да, весь код пользовательского интерфейса должен быть переписан для порта WinForms. – Daniel

+0

Если солнце не светило, я мог бы оспаривать ваше использование слова «легко» здесь. :) – MusiGenesis

+0

Мне просто пришлось переместить приложение (а не WPF) обратно с 3.5 до 2.0. Было проще просто полностью исключить LINQ, поскольку разработчик, который настаивал на его включении, использовал его вместо петель 'for'. – MusiGenesis