2010-03-27 6 views
1

우리는 아름답게 디자인 된 .NET WPF 데스크톱 응용 프로그램을 만들었습니다. InnoSetup으로 응용 프로그램을 설치하고 .NET 3.5가 없으면 자동으로 설치합니다. 그러나 .NET 3.5를 다운로드하는 패키지는 엄청나 다. 약 30 %의 사용자가이 때문에 설치를 끝내지 않는다는 것을 알게되었습니다..NET WPF 응용 프로그램을 Windows Forms로 변환하는 방법?

분명한 해결책은 모든 것을 Windows Forms과 함께 .NET 1.1로 다시 코딩하는 것이지만 몇 주 정도 소요될 주요 개발입니다. 또한, 두 버전을 모두 지원하려면 (그리고 innosetup을 사용하여 올바른 버전을 선택하는 경우) 또는 WPF를 모두 삭제해야하는 경우 딜레마에 직면하게됩니다.

WPF를 Windows Forms로 변환하는 쉬운 방법이 있습니까? 아니면 고려해야 할 대안이 있습니까?

감사합니다.

+4

.NET 1.1 대신 .NET 2.0을 사용한다고 가정합니까? .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보다 약간 더 유비 쿼터스가 많기 때문입니다. 여전히 23MB의 설치 프로그램이 있습니다. – 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로 돌아가고 싶다면 generics 등의 다른 기능을 모두 사용할 수 있습니다. 변경할 UI.

가장 좋은 해결책은 대신 .net client profile을 타겟팅하는 것입니다. 그것은 훨씬 더 작은 다운로드입니다.

몇 주를 기다릴 수 있다면 .net 4.0의 클라이언트 프로필은 오프라인 설치 및 플랫폼 지원 기능이 훨씬 뛰어납니다. herehere을 참조하십시오.

+0

3.5는 ~ 28MB입니다 (하지만 웹 설치 만 가능합니다.이 작동 방법에 대한 링크 읽기, 전체 설치로 돌아갈 수 있음). 4.0은 적절한 재배포 가능 다운로드이며 플랫폼에 따라 30-50MB입니다. –

+0

당신의 모든 생각에 감사드립니다. 매우 도움이. NET 클라이언트 프로파일을 인식하지 못했습니다. .NET 1.1/2 용 앱 다시 실행의 어려움없이 다운로드 - 설치 변환을 향상시킬 수있는 무언가 일 수 있습니다. .net 클라이언트 프로파일을 실험하고 새로운 버전뿐만 아니라. – Janusz

1

.NET Framework 3.5가 설치되지 않은 컴퓨터에서 응용 프로그램을 실행하는 데 필요한 다운로드 크기를 줄이기 위해 .NET 3.5 SP1에 도입 된 .NET Client Profile을 사용할 수 있습니다.

here과 같이 .NET 클라이언트 프로파일의 크기는 약 28MB입니다.

또한 this site에서 시스템에 .NET Framework를 가져 오는 데 필요한 최소, 가장 쉬운 다운로드를 결정하십시오.

1

"아름답게 디자인되었습니다"라고 말하면서 WPF의 UI 요소를 광범위하게 사용했다고 가정합니다. 이 경우 UI를 WinForms로 포팅하는 것을 잊어 버리십시오.

프로그램의 UI가 아닌 부분은 쉽게 되돌릴 수 있습니다 (변경하지 않을 수도 있음). IFF는 (예 : LINQ와 같은) 2.0 이후의 항목을 참조하지 않는 경우에만 해당됩니다. .

+0

LINQ를 사용하는 경우에도 C# 3.0 컴파일러를 사용하여 2.0 프레임 워크를 대상으로하고 응용 프로그램과 함께 LINQ 구현 (예 : Mono)을 제공함으로써 쉽게 백 포트 할 수 있습니다. 예, 모든 UI 코드는 WinForms 포트에 다시 작성해야합니다. – Daniel

+0

태양이 비치지 않는다면, 여기에 "쉽게"라는 단어를 사용하는 것에 대해 경의를 표할 수 있습니다. :) – MusiGenesis

+0

사실 WPF가 아닌 앱을 3.5에서 2.0으로 옮겨야했습니다. LINQ를 포함시키려는 개발자는 for 루프 대신에 LINQ를 사용하기 때문에 LINQ를 완전히 제거하는 것이 더 쉬웠습니다. – MusiGenesis

관련 문제