编写.NET以外的Windows客户端应用程序的最佳方法是什么?

我试图评估是否应该使我的新的Windows应用程序的.NET框架的要求。 我相信.NET是编写Windows客户端应用程序的最好和最有效的方式,所以下一个最好的select是多么痛苦。 具体来说,我试图避免安装.NET客户端configuration文件,下载28MB,如果它像常规的.NET Framework安装程序,永远。

我之前使用过wxWidgets和WTL,认为两者都是很好的select。 静态链接的wxWidgets可执行文件是30MB,但将被打包。 WTL有一个小脚印,但用丑陋的代码创build。 我已经使用了一些微星创造者,但它不是WiX或NSIS,这似乎是最好的免费select。

我正在寻找任何build议,使用Client Profile安装程序的经验,使用小型自定义业务应用程序的经验或任何相关的build议。

编辑:我只在这里赚了几千块钱,所以我正在寻找一些免费或便宜的东西(在我已经拥有的Visual Studio之后)。 我不介意用一种新的语言学习,但我更喜欢一种正在使用的方法。

这取决于你如何分配应用程序。 如果您有CD或其他物理介质的选项,则可以通过该介质分发运行时,而28Mb则不算什么。

否则,你有28Mb的下载处理。 你的另一个选择是放弃.Net并选择另一个工具包。 C ++ Builder / Delphi选项曾经非常有吸引力,但我不知道他们的平台现在是什么样子。

[更新]
我最近听说,单声道已经足够好了,你可以使用它编译和静态链接一个.Net应用程序作为一个本地* .exe文件。 我们将不得不看看,如果这是一个很好的选择。

实际上,你可以制作一个相当大量使用大型库的MFC应用程序(例如:boost),这个应用程序将被编译成10MB以下的静态链接,具体取决于你包含多少代码以及你使用了哪些功能。 如果没有大量的二进制资源,即使是大型的32位应用也不会超过28MB。 这条道路的好处很可能高度依赖于你在C ++和MFC上的经验,但是这肯定是一个选择(而且,你不依赖于预先安装的任何框架的特定版本,或者强制任何系统改变)。

您应该强烈考虑来自Codegear的 Delphi或C ++ Builder。

两者都生成紧凑的原生Win32应用程序,使用一个出色的双向RAD系统和VCL框架构建。 有大量免费和商业的第三方组件,一个活跃的用户社区,Codegear现在似乎完全致力于本地开发,同时通过RemObjects新的Delphi Prism系统保持在.NET领域的活跃。

编辑:Gortok问“随着Delphi IDE的成本,你怎么能建议德尔福?”

简单。 我认为这是值得的。 我不知道你的时间值多少钱,但你可以做数学。 德尔福2009年的成本为874美元。 我认为Visual Studio 2008 Pro的价格是相似的。

如果你真的没有钱,那么你可以免费得到Turbo Delphi ,就像啤酒一样。 它基本上是Delphi 2006的一个缩减版本,所以有点buggier和后面,功能明智 – 但仍然绝对可用。

Qt呢? 它产生的小脚本应用程序,它很容易学习,它支持与VS200x的完全集成和(你可能不需要),它是平台独立的 – 甚至可以在没有(大的)变化的WinCE上运行。

你有没有试过德尔福?

Delphi对于快速应用程序开发(RAD)非常有用。 您可以构建表单,如dotNet,拖放组件。 在我看来,它是完美的商业应用程序。

唯一的问题是你将不得不学习帕斯卡,但它不应该是一个问题。 Delphi编译速度非常快(类似于c ++)。

为什么不下载德尔福的试用版并尝试一下呢?

另外我能想到的是,你不需要安装任何额外的软件包来运行你的应用程序(而不是dotNet运行时或c ++可再发行)。

还有一点要记住的是,它有dotNet的支持,还有棱镜。

在相关建议的类别下:

.NET平台的构建有一个原因,并不是因为Win32很容易编程。 有Delphi ,有Tcl / TK ,还有MFC ,但是除非这些选项比.NET更容易设计和部署,否则在下载28Mb并在.NET中进行设计会更好。

.NET(风险听起来像一个啦啦队员),你会得到

  • 拖放式UI设计,
  • .NET框架的力量(让我们面对它,你正在为Windows构建 – 让他们做繁重的工作是一个主要的奖励)
  • 靠近平台独立性(取决于Mono的表现如何)
  • 低成本

所以如果时间是一个考虑,那么在.NET中开发。 如果时间不是一个考虑因素,你需要原始的力量,而且你对C ++和MFC非常的熟悉,那就使用它。 德尔福也是可能的,但是他们的开发平台的成本对我来说有点陡峭。

那么RealBasic呢 ?

它有一个托管的运行时(类似于.NET,但不是功能强大),并运行在Windows / Linux / Mac上,运行时间大小约为3MB

所使用的语言是一个BASIC方言,并有一个漂亮的所见即所得的设计师拖ñ滴支持。

我同意,你应该使用wtlbuilder.com在C ++中使用WTL进行编码

最终的答案是在窗口小部件框架中,最简单的框架包装Windows窗口的api给你。 根据我的经验,最简单的框架是…

1. / Windows窗体与C#或VB.NET(.NET)

2.使用Delphi或C ++ Builder的可视化组件库(VCL)(作为原生应用程序的附加优势,不需要额外的库)

3. / Windows Presentation Framework(或基础)与C#或VB.NET

4. / MFC – (Shudder)与Visual C ++

然后还有一些其他较少使用的框架,比如PowerBuilder等。

比编写.NET更容易,而且比.NET运行时的占用空间要小得多 – 就是在Visual Basic 6中编写应用程序。

当然,没有人提到它的原因是它现在是一种垂死的语言。 但是,我想我会提到它没有人。

如果您关心运行时下载,只需使用.NET 1.1而不是最新,最好的.NET Framework。 我认为XP(或至少有一个服务包)预装了它。 在某些时候,你必须说,如果有人使用Windows 2000或更早的版本,那么你可以为他们做的事情不多。

我建议U ++的另一个问题:

什么是当今最好的跨平台C ++ UI工具包?

如果你喜欢C ++,那么一旦你尝试使用U ++,你会被它的美丽,优雅,轻量级,无.NET的感觉所震撼,因为你的需求要求和积极使用C ++。

我也推荐REALbasic。 我用它来创建大量的Windows客户端应用程序,并且大部分工作得很好。

带有Lazarus IDE的开源Free Pascal编译器可能是一个选项。 我使用Free Pascal编译和测试了大部分Delphi组件和库。 对于用户界面,Lazarus提供了自己的可视化组件库FCL。

去与Realbasic。 这是最简单的,最快的,不需要依赖。 (因为它的运行时间很小,所以包含在你的exe中)

另一个选择是用mkbundle使用Mono。 Mkbundle将您的应用程序及其引用的所有程序集包装到一个二进制包中。

这是一个关于它的Mono页面的链接。